FastMessageQueue is a Treble-compliant data structure that enables fast
communication between two processes. The FMQ object itself is an atomic
circular buffer that is optionally synchronized with a futex. However,
FMQ has no notion of ownership or lifetime across processes, so it must
be paired with higher-level constructs to manage the lifetime and
ownership.
The NNAPI is introducing the notion of an "Execution Burst" object (or
more simply a "Burst" object), which is similar to an
ANeuralNetworksExecution, but is intended to be reused across multiple
executions and has lower IPC overheads. It achieves this low IPC
overhead by replacing HIDL HwBinder calls with FMQ messages.
Specifically, it replaces IPreparedModel::executeSynchronously's call
from the client into the service with fmq_sync<FmqRequestDatum> (an FMQ
channel used to pass a serialized Request object) and it replaces
the return from the service into the client with
fmq_sync<FmqResultDatum> (an FMQ channel used to return serialized
result status and OutputShapes information).
Each channel is a unidirectional flow of information with exactly one
producer and exactly one consumer. The channels are created by the NN
runtime and passed to the service via
IPreparedModel::configureExecutionBurst.
This CL defines the FmqRequestDatum and FmqResultDatum types in
types.hal. IBurstContext.hal defines IBurstContext, a HIDL object used
by the service to manage the resources of a Burst. IBurstCallback.hal
defines IBurstCallback, a HIDL callback object that can be used to
retrieve the handle to a resource the service has either not yet seen or
has evicted from its cache. Finally, IPreparedModel.hal is extended with
IPreparedModel::configureExecutionBurst to create the burst object.
Bug: 119570067
Test: mma
Change-Id: I333da70201531b1396efc714d096c277e8e1d47b
am: 6b058b2bcc -s ours
am skip reason: change_id I6500ab06b8c392310009ecfa0570000742fd069c with SHA1 a5cbabbee9 is in history
Change-Id: I2a05fb4c7aed6a7928484cc72183c57cb42a06a4
am: d907ccd214 -s ours
am skip reason: change_id I1ac193dd144b840e4f3e3a397c0c93327ac00186 with SHA1 50eed9211f is in history
Change-Id: Icbbb2eadbb18bfa74e73b3357c49b13046d137cf
Add a clarification the documentation that all buffer allocations
should be optimized for the usage bits provided in the descriptor.
This was always assumed to be a requirement of buffer allocations
but it was not explicitly documented.
Bug: 120493579
Test: N/A
Change-Id: Id9e3e1df861d0f32c995f18cabe37d62e7e5ce5c
Add a function to the mapper hal that checks if a BufferDescriptorInfo
is ever supported on a device. This value can be cached by the client.
The client can use this information to make decisions on what type of
buffers should attempt to allocate.
Bug: 120493579
Test: vts
Change-Id: I6bd7909e40d6462524bf49cf0d4e7af721e701ed
Require mapper to return more information when locking a buffer.
Opaque vendor formats make it difficult to manipulate a locked
buffer. The pointer to the buffer's data is always at the top
left hand corner of the buffer. It can be impossible to know
where the locked region begins.
The mapper now must return the bytes per pixel and bytes
per stride of a locked buffer when the values are consistent
and known.
Bug: 120493579
Test: vts
Change-Id: Id0921f191f1e388d4950ecef73acab6a34010dc4
Update the locking documentation to require all 1D buffers
"lock in place". Previously, the framework was able to get 1D
buffers that locked in place via ion. The ion interface is no
longer directly accessible. Some framework use cases still need
1D buffers that lock in place so add the requirement to mapper.
Bug: 120493579
Test: N/A
Change-Id: Ib903efdbeeb8c44ed70c3c6022d6792d05df1a63
Clean up some unneeded/confusing error codes in the 1.4 Radio HAL.
Quoting description from aosp/616923:
-Remove SYSTEM_ERROR. This is an ultra-generic error
that also provides no meaningful distinction from
INTERNAL_ERROR but is even less specified in scope.
-Remove NO_MEMORY. This is very implementation
specific, and should be essentially impossible to
hit in the generic sense. Today we don't have a
generic EBUSY error code, which this would map to.
Since it should be essentially impossible to hit,
the preference is to assert that it shouldn't be.
If an implementation really has memory pressure
then it can return INTERNAL_ERROR, of which this
is a class. INTERNAL_ERROR will be treated as a
temporary failure anyway, making NO_MEMORY a
distinction without a difference.
-Remove CANCELLED. We have no way to cancel an API
call. If a persistent/ongoing request is cancelled
by the caller using a separate API request, then
that's a success case rather than an error case.
Bug: 73174777
Change-Id: I5bf268f86ed52e7294f7127f24beba04c9159fea
Test: Compilation
am: 9927a9f142 -s ours
am skip reason: change_id I2943d9a65c24e7ca8fb9ae9b69f7edf06173f467 with SHA1 c9ea9f66de is in history
Change-Id: Ice5399204cb09ddde9bc91a417502bead1c3a1b7
The new format is described in tools/metalava/FORMAT.md.
Fixes: 116589402 Switch signature files over to the v2 format
Fixes: 112626813 Drop "synchronized" modifier from the signature format
Fixes: 122358225 Omit overriding methods that only differ in final [...]
Fixes: 73088715 API Review: Need doclava to output nullability
Fixes: 79739773 API Review: Metalava enforcing constants are constant
Exempt-From-Owner-Approval: Large-scale tooling change
Test: make sdk, make update-api, make checkapi
Change-Id: I2943d9a65c24e7ca8fb9ae9b69f7edf06173f467
The new format is described in tools/metalava/FORMAT.md.
Fixes: 116589402 Switch signature files over to the v2 format
Fixes: 112626813 Drop "synchronized" modifier from the signature format
Fixes: 122358225 Omit overriding methods that only differ in final [...]
Fixes: 73088715 API Review: Need doclava to output nullability
Fixes: 79739773 API Review: Metalava enforcing constants are constant
Exempt-From-Owner-Approval: Large-scale tooling change
Test: make sdk, make update-api, make checkapi
Change-Id: I767f9fb2941789615c9513072a381e79a5654373
Merged-In: I2943d9a65c24e7ca8fb9ae9b69f7edf06173f467
Many of error causes reason are using very esoteric
abbreviations and acronyms. Refine description for making more
clear to the developer.
Bug: 113505704
Test: Build pass and data call can setup normally.
Change-Id: Ifb9c256eef8354add46c76c322cd6a3bd126bd44
am: dc740a3e9f -s ours
am skip reason: change_id Ib05267fda5f2fd0b8821a5812fcf47d460e60a2b with SHA1 4f59a2a174 is in history
Change-Id: Ica10ce5e8bd1f8b255185a595e8fcfb37cc850cf