Add ANeuralNetworks_getSLDriverImpl to libneuralnetworks_cl.
ANeuralNetworks_getSLDriverImpl is a SLDriver-only function that
returns versioned NnApiSLDriverImpl struct with all implementation
symbols.
This is required for using SL Driver with shim to create
a HAL service.
Added abstraction over INTRODUCED_IN to disable it when
building runtime as libneuralnetworks_cl
Test: NNT_Static & SLTS
Bug: 172925288
Change-Id: Ia9dd71f598eaadfd0f3a7a4f4e1b4453e91836b6
diff --git a/runtime/NeuralNetworks.cpp b/runtime/NeuralNetworks.cpp
index c16bf39..1319039 100644
--- a/runtime/NeuralNetworks.cpp
+++ b/runtime/NeuralNetworks.cpp
@@ -46,6 +46,10 @@
#include "NeuralNetworksExtensions.h"
#include "NeuralNetworksOEM.h"
+#ifdef NN_COMPATIBILITY_LIBRARY_BUILD
+#include "NeuralNetworksSupportLibraryImpl.h"
+#endif // NN_COMPATIBILITY_LIBRARY_BUILD
+
using namespace android::nn;
// Make sure the constants defined in the header files have not changed values.
@@ -1648,3 +1652,91 @@
ExecutionBuilder* r = reinterpret_cast<ExecutionBuilder*>(execution);
return r->setReusable(reusable);
}
+
+#ifdef NN_COMPATIBILITY_LIBRARY_BUILD
+
+#define NNCL_FUNC(symbol) .symbol = symbol
+
+NnApiSLDriverImplFL5 slDriverImpl{
+ .base{.implFeatureLevel = ANEURALNETWORKS_FEATURE_LEVEL_5},
+ NNCL_FUNC(ANeuralNetworksBurst_create),
+ NNCL_FUNC(ANeuralNetworksBurst_free),
+ NNCL_FUNC(ANeuralNetworksCompilation_createForDevices),
+ NNCL_FUNC(ANeuralNetworksCompilation_finish),
+ NNCL_FUNC(ANeuralNetworksCompilation_free),
+ NNCL_FUNC(ANeuralNetworksCompilation_getPreferredMemoryAlignmentForInput),
+ NNCL_FUNC(ANeuralNetworksCompilation_getPreferredMemoryAlignmentForOutput),
+ NNCL_FUNC(ANeuralNetworksCompilation_getPreferredMemoryPaddingForInput),
+ NNCL_FUNC(ANeuralNetworksCompilation_getPreferredMemoryPaddingForOutput),
+ NNCL_FUNC(ANeuralNetworksCompilation_setCaching),
+ NNCL_FUNC(ANeuralNetworksCompilation_setPreference),
+ NNCL_FUNC(ANeuralNetworksCompilation_setPriority),
+ NNCL_FUNC(ANeuralNetworksCompilation_setTimeout),
+ NNCL_FUNC(ANeuralNetworksDevice_getExtensionSupport),
+ NNCL_FUNC(ANeuralNetworksDevice_getName),
+ NNCL_FUNC(ANeuralNetworksDevice_getType),
+ NNCL_FUNC(ANeuralNetworksDevice_getVersion),
+ NNCL_FUNC(ANeuralNetworksDevice_wait),
+ NNCL_FUNC(ANeuralNetworksEvent_createFromSyncFenceFd),
+ NNCL_FUNC(ANeuralNetworksEvent_free),
+ NNCL_FUNC(ANeuralNetworksEvent_getSyncFenceFd),
+ NNCL_FUNC(ANeuralNetworksEvent_wait),
+ NNCL_FUNC(ANeuralNetworksExecution_burstCompute),
+ NNCL_FUNC(ANeuralNetworksExecution_compute),
+ NNCL_FUNC(ANeuralNetworksExecution_create),
+ NNCL_FUNC(ANeuralNetworksExecution_enableInputAndOutputPadding),
+ NNCL_FUNC(ANeuralNetworksExecution_free),
+ NNCL_FUNC(ANeuralNetworksExecution_getDuration),
+ NNCL_FUNC(ANeuralNetworksExecution_getOutputOperandDimensions),
+ NNCL_FUNC(ANeuralNetworksExecution_getOutputOperandRank),
+ NNCL_FUNC(ANeuralNetworksExecution_setInput),
+ NNCL_FUNC(ANeuralNetworksExecution_setInputFromMemory),
+ NNCL_FUNC(ANeuralNetworksExecution_setLoopTimeout),
+ NNCL_FUNC(ANeuralNetworksExecution_setMeasureTiming),
+ NNCL_FUNC(ANeuralNetworksExecution_setOutput),
+ NNCL_FUNC(ANeuralNetworksExecution_setOutputFromMemory),
+ NNCL_FUNC(ANeuralNetworksExecution_setReusable),
+ NNCL_FUNC(ANeuralNetworksExecution_setTimeout),
+ NNCL_FUNC(ANeuralNetworksExecution_startComputeWithDependencies),
+ NNCL_FUNC(ANeuralNetworksMemoryDesc_addInputRole),
+ NNCL_FUNC(ANeuralNetworksMemoryDesc_addOutputRole),
+ NNCL_FUNC(ANeuralNetworksMemoryDesc_create),
+ NNCL_FUNC(ANeuralNetworksMemoryDesc_finish),
+ NNCL_FUNC(ANeuralNetworksMemoryDesc_free),
+ NNCL_FUNC(ANeuralNetworksMemoryDesc_setDimensions),
+ NNCL_FUNC(ANeuralNetworksMemory_copy),
+ NNCL_FUNC(ANeuralNetworksMemory_createFromAHardwareBuffer),
+ NNCL_FUNC(ANeuralNetworksMemory_createFromDesc),
+ NNCL_FUNC(ANeuralNetworksMemory_createFromFd),
+ NNCL_FUNC(ANeuralNetworksMemory_free),
+ NNCL_FUNC(ANeuralNetworksModel_addOperand),
+ NNCL_FUNC(ANeuralNetworksModel_addOperation),
+ NNCL_FUNC(ANeuralNetworksModel_create),
+ NNCL_FUNC(ANeuralNetworksModel_finish),
+ NNCL_FUNC(ANeuralNetworksModel_free),
+ NNCL_FUNC(ANeuralNetworksModel_getExtensionOperandType),
+ NNCL_FUNC(ANeuralNetworksModel_getExtensionOperationType),
+ NNCL_FUNC(ANeuralNetworksModel_getSupportedOperationsForDevices),
+ NNCL_FUNC(ANeuralNetworksModel_identifyInputsAndOutputs),
+ NNCL_FUNC(ANeuralNetworksModel_relaxComputationFloat32toFloat16),
+ NNCL_FUNC(ANeuralNetworksModel_setOperandExtensionData),
+ NNCL_FUNC(ANeuralNetworksModel_setOperandSymmPerChannelQuantParams),
+ NNCL_FUNC(ANeuralNetworksModel_setOperandValue),
+ NNCL_FUNC(ANeuralNetworksModel_setOperandValueFromMemory),
+ NNCL_FUNC(ANeuralNetworksModel_setOperandValueFromModel),
+ NNCL_FUNC(ANeuralNetworks_getDefaultLoopTimeout),
+ NNCL_FUNC(ANeuralNetworks_getDevice),
+ NNCL_FUNC(ANeuralNetworks_getDeviceCount),
+ NNCL_FUNC(ANeuralNetworks_getMaximumLoopTimeout),
+ NNCL_FUNC(ANeuralNetworks_getRuntimeFeatureLevel),
+};
+
+#undef NNCL_FUNC
+
+__BEGIN_DECLS
+NnApiSLDriverImpl* ANeuralNetworks_getSLDriverImpl() {
+ return reinterpret_cast<NnApiSLDriverImpl*>(&slDriverImpl);
+}
+__END_DECLS
+
+#endif // NN_COMPATIBILITY_LIBRARY_BUILD