Add the following tests for compilation caching:
- validation tests
- Test isCachingSupported
- Test prepareModelFromCache with invalid numFd and invalid access mode
- Test saveToCache with invalid numFd, invalid access mode,
invalid file size, and invalid fd offset
- execution test
- Save a mobilenet model to cache and then retrieve and run accuracy
evaluation.
- The same test but the file offsets for prepareModelFromCache is not at zero.
- security test
- CompilationCachingSecurityTest.CorruptedSecuritySensitiveCache
Randomly flip one bit of security-sensitive cache.
- CompilationCachingSecurityTest.WrongLengthSecuritySensitiveCache
Randomly append bytes to security-sensitive cache.
- CompilationCachingSecurityTest.WrongToken
Randomly flip one bit of cache token.
Bug: 119616526
Test: VtsHalNeuralnetworksV1_xTargetTest with 1.2 sample driver
Test: VtsHalNeuralnetworksV1_xTargetTest with a test driver that can
read and write cache entries
Change-Id: Iae9211cb28ce972b29572dfedd45d1ade4dfdaf5
Merged-In: Iae9211cb28ce972b29572dfedd45d1ade4dfdaf5
(cherry picked from commit 3405878e5e)
Machine Learning is a fast moving domain: new operations and data types
are introduced at a staggering speed. The Android API, on the other
hand, evolves on a yearly cycle. Many application developers, OEMs, and
SoC vendors would like to be able to define new operations at a faster
cycle.
In OC-MR1, NNAPI provided a simple mechanism to mitigate this problem:
two OEM data types and an OEM operation. The downside of this mechanism is that
it is simplistic: There’s no guarantee of consistency between vendors.
Examples of features that are required by the first parties' use cases
that we would like to be able to define outside of the normal Android
release cycle:
- New data types:
- Sparse tensor (used by some speech generation models).
- 16 bit int tensor (needed by OCR).
- 16 bit float tensor.
- New operations:
- 16 bit quantized LSTM (needed by OCR).
- Basic primitives like sqrt and floor.
- Logical operations.
- Complex neural network layers.
- Control flow.
- Enhancement to existing operations:
- Concatenate supporting different scales/zeroPoints for arguments.
- High-dimensional tensors.
- Ordering of dimensions.
We are going to provide support for two types of extensions:
- NNAPI Platform extension. This is functionality that will become part of
future releases of NNAPI. These extensions provide generic,
non-vendor-specific functionality. Only the Android team can define new
platform extensions. These extensions will be defined in the master
branch of AOSP. Each extension comes with:
- Documentation defining the extension,
- A header file for the new constants,
- A parameter validation library to be used by drivers, and
- Validation tests akin to the CTS and VTS tests.
- Vendor extension. A vendor-specific extension is an alternative to OEM
operation and data types. Its usage will be limited only to first party apps
preinstalled on the /vendor or /odm partition.
Each vendor will be identified by a specific value to
prevent collisions between multiple IPs found on the same SoC. This
effectively creates a vendor-specific namespace. These identifiers are
assigned by Google.
This change only defines the new interface. The implementation follows
in changes Ie4e2530e4c81fabe4eb59b7a6ba4a3b4bb483bd1,
I02aa12f4a8444012ddf3b20c2bfbba6a21ce9ce9, and
Icf59ed04e602aa7a730eb1eb45e5f6b1204fafb3.
Bug: 118605927
Test: mma
Change-Id: Ia9b99015eec7a48bbf969cbe503862271f09adca
Merged-In: Ia9b99015eec7a48bbf969cbe503862271f09adca
(cherry picked from commit 9212018558)
Register Bluetooth Audio Hal v2 by Audio HAL service so Bluetooth stack
can fetch the service interface as well.
Bug: 111519504
Test: manual
Change-Id: I3ac8c0472c58dd4d8a9b1ad8408313b80282cc85
Previously ConfigStore keeps logging info of each function, this patch moves it
to verbose to avoid log spam.
BUG: 123312783
Test: Build, flash and boot. Verify with adb logcat
Change-Id: I8dce745122ca05d18cd899c536342521432f5325
So that it can be included in tests.
Bug: 122456128
Test: libhwbinder_benchmark, hwbinderThroughputTest, libhwbinder_latency
Change-Id: I4c77c04252c7d6f0c2215ee052d747561db181e0
This is the default implementation of Bluetooth Audio Hal v2, and 3
providers are defined.
* BluetoothAudioProvider is the default provider, which is a stub when
no SessionType matched.
* A2dpSoftwareAudioProvider uses to replace the old A2DP legacy module
and uses IPC via HIDL interface between Bluetooth stack and Audio HAL.
* HearingAidAudioProvider uses to replace the Hearing Aids module which
uses UNIX socket as IPC and now there is HIDL based interface.
There is also a shared library named "libbluetooth_audio_session.so" to
provide the linkage directly between this HIDL and its HAL module,
bluetooth_audio. With this library, we can break the library dependency
and guarantee those symbols of libraries while compiling.
Bug: 111519504
Bug: 122503379
Test: boot and manual test
Change-Id: I54d86291482b7fb041a3ac3e171b68a4ed7bfa07
Initial VTS commit for the bluetooth.audio@2.0 HAL
Bug: 111519504
Test: VTS (VtsHalBluetoothAudioV2_0TargetTest) passed
Change-Id: Id607979724182de242c29747218f6b12880d6295
Test dynamic output shape with generated models when
- Dimensions of output operands are fully specified
- Dimensions of output operands are unspecified with sufficient buffer
- Dimensions of output operands are unspecified with insufficient buffer
Test: VTS on 1.2 sample driver
Change-Id: I4d26395ce443687ccbd47445b36e3356d70035cc
Merged-In: I4d26395ce443687ccbd47445b36e3356d70035cc
(cherry picked from commit 929fd21e06)
- Instead of reporting PASS for unsupported tests, use GTEST_SKIP to
skip the tests at runtime.
Bug: 113356629
Test: mm
Test: VTS tests on HVX driver
Change-Id: I6a870b61809e58490e66dd4ea36ddeb64fc68a07
Merged-In: I6a870b61809e58490e66dd4ea36ddeb64fc68a07
(cherry picked from commit bb685a4a97)
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 tests the Burst in both the execution path and validation path
in the Vendor Test Suite (VTS) in neuralnetworks/1.*/vts/functional/.
The VTS binary--VtsHalNeuralnetworksV1_2TargetTest--can be built and run
as any previous version could.
Bug: 119570067
Test: mma
Test: VtsHalNeuralnetworksV1_2TargetTest
Change-Id: I3a36484eff9565c2d028c07c099804a0289f294a
Merged-In: I3a36484eff9565c2d028c07c099804a0289f294a
(cherry picked from commit 814d8372f3)
When fields are inapplicable, they should not
be set to a clearly out-of-range value to signal
to the framework that those fields are not used.
In some cases, there is an in-range invalid value
that has been defined by the standards. The docs
are inconsistent in calling out INT_MAX as the
value to be used when something is inapplicable
vs the case when a measurement is simply not
reported. In all cases, INT_MAX can be used to
denote an invalid value, and in cases where the
field/structure is inapplicable, it is the correct
value. This CL updates all the docstrings for
SignalStrength-related fields to clarify that
INT_MAX is the correct "invalid" value for cases
when fields are inapplicable.
Bug: 123088652
Test: compilation (docstring-only change); CTS
naturally enforces this change on devices with
newer HALs; backwards compatibility is preserved
for existing HAL versions.
Change-Id: I5cfa917f504d15691ab3f2c298189bdd47794a42
Fix the compatibility matrix with range of versions
Bug: 122994344
Test: verified manually
Change-Id: Ic5ebb7261d2fe8f379d46ebcc0c47efe8dbd3c59
Merged-In: Ic5ebb7261d2fe8f379d46ebcc0c47efe8dbd3c59
New tests would be added in cpp files under functional folder. Add a new
folder since it doesn't exist for 1.4 yet.
Test: Compilation
Change-Id: Ieac30bbbc865b76a08d4bdd655f0d489bb7f77bd
Bug: 73784494
DEVICE_PRODUCT_COMPATIBILITY_MATRIX_FILE is installed on
/product/etc/vintf. It is considered as a replacement of
DEVICE_FRAMEWORK_COMPATIBILITY_MATRIX_FILE, so only one
of them may be defined. At build time, things like
SEPolicy versions etc. will be written to
/product/etc/vintf/compatibility_matrix.device.xml, just
like the /system one.
Also, split framework_compatibitity_matrix.xml to
system_compatibility_matrix.xml and product_compatibility_matrix.xml.
The latter two corresponds to matrices installed to respective
partitions only.
Test: build with DEVICE_PRODUCT_COMPATIBILITY_MATRIX_FILE defined
Test: boot (sanity)
Bug: 120600021
Change-Id: I81f9a8f5028cbb88c45f44df04bccb8ccb483972
Enable VTS unit test for dynamic output shape deduction.
Only test dynamic output shape for V1_2::IDevice with V1_2::Model.
Bug: 73506513
Test: VtsHalNeuralnetworksV1_xTargetTest with 1.2 sample driver
Change-Id: I4134e1ec54a15554eb8533134897279651b57da3
Merged-In: I4134e1ec54a15554eb8533134897279651b57da3
(cherry picked from commit a316581b21)