From b5fdf38f0c6596958fab2b84882f2792a31e585a Mon Sep 17 00:00:00 2001 From: Mike Kelly Date: Tue, 11 Jun 2019 16:35:25 +0100 Subject: IVGCVSW-3181 Add HAL 1.2 support to android-nn-driver * Updated Android.mk to build HAL 1.2 driver * Added 1.2 HalPolicy and ArmnnDriver * Added 1.2 ArmnnPreparedModel * Updated converters and utilities to accept new HAL 1.2 operands and operand types. Signed-off-by: Sadik Armagan Signed-off-by: Mike Kelly Change-Id: I62856deab24e106f72cccce09468db4971756fa6 --- Android.mk | 210 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 206 insertions(+), 4 deletions(-) (limited to 'Android.mk') diff --git a/Android.mk b/Android.mk index 8d2fe9f7..8f598ca7 100644 --- a/Android.mk +++ b/Android.mk @@ -25,6 +25,12 @@ P_OR_LATER := 1 Q_OR_LATER := 1 endif # PLATFORM_VERSION == Q +CPP_VERSION := c++14 + +ifeq ($(Q_OR_LATER),1) +CPP_VERSION := c++17 +endif + # Configure these paths if you move the source or Khronos headers ARMNN_HEADER_PATH := $(LOCAL_PATH)/armnn/include ARMNN_UTILS_HEADER_PATH := $(LOCAL_PATH)/armnn/src/armnnUtils @@ -68,7 +74,7 @@ LOCAL_C_INCLUDES := \ $(NN_HEADER_PATH) LOCAL_CFLAGS := \ - -std=c++14 \ + -std=$(CPP_VERSION) \ -fexceptions \ -Werror \ -Wno-format-security @@ -85,6 +91,11 @@ LOCAL_CFLAGS+= \ -UNDEBUG endif # ARMNN_DRIVER_DEBUG == 1 +ifeq ($(Q_OR_LATER),1) +LOCAL_CFLAGS += \ + -DBOOST_NO_AUTO_PTR +endif # PLATFORM_VERSION == Q or later + ifeq ($(ARMNN_COMPUTE_CL_ENABLED),1) LOCAL_CFLAGS += \ -DARMCOMPUTECL_ENABLED @@ -179,7 +190,7 @@ LOCAL_C_INCLUDES := \ $(NN_HEADER_PATH) LOCAL_CFLAGS := \ - -std=c++14 \ + -std=$(CPP_VERSION) \ -fexceptions \ -Werror \ -Wno-format-security \ @@ -191,6 +202,11 @@ LOCAL_CFLAGS+= \ -UNDEBUG endif # ARMNN_DRIVER_DEBUG == 1 +ifeq ($(Q_OR_LATER),1) +LOCAL_CFLAGS += \ + -DBOOST_NO_AUTO_PTR +endif # PLATFORM_VERSION == Q or later + ifeq ($(ARMNN_COMPUTE_CL_ENABLED),1) LOCAL_CFLAGS += \ -DARMCOMPUTECL_ENABLED @@ -255,6 +271,108 @@ include $(BUILD_STATIC_LIBRARY) endif # PLATFORM_VERSION == 9 +ifeq ($(Q_OR_LATER),1) +# The following target is available starting from Android Q + +####################### +# libarmnn-driver@1.2 # +####################### +include $(CLEAR_VARS) + +LOCAL_MODULE := libarmnn-driver@1.2 +LOCAL_MODULE_TAGS := optional +LOCAL_ARM_MODE := arm +LOCAL_PROPRIETARY_MODULE := true +# Mark source files as dependent on Android.mk +LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk + +LOCAL_C_INCLUDES := \ + $(ARMNN_HEADER_PATH) \ + $(ARMNN_UTILS_HEADER_PATH) \ + $(OPENCL_HEADER_PATH) \ + $(NN_HEADER_PATH) + +LOCAL_CFLAGS := \ + -std=$(CPP_VERSION) \ + -fexceptions \ + -Werror \ + -Wno-format-security \ + -DARMNN_ANDROID_Q \ + -DARMNN_ANDROID_NN_V1_2 + +ifeq ($(ARMNN_DRIVER_DEBUG),1) +LOCAL_CFLAGS+= \ + -UNDEBUG +endif # ARMNN_DRIVER_DEBUG == 1 + +ifeq ($(Q_OR_LATER),1) +LOCAL_CFLAGS += \ + -DBOOST_NO_AUTO_PTR +endif # PLATFORM_VERSION == Q or later + +ifeq ($(ARMNN_COMPUTE_CL_ENABLED),1) +LOCAL_CFLAGS += \ + -DARMCOMPUTECL_ENABLED +endif # ARMNN_COMPUTE_CL_ENABLED == 1 + +ifeq ($(ARMNN_COMPUTE_NEON_ENABLED),1) +LOCAL_CFLAGS += \ + -DARMCOMPUTENEON_ENABLED +endif # ARMNN_COMPUTE_NEON_ENABLED == 1 + +LOCAL_SRC_FILES := \ + 1.0/ArmnnDriverImpl.cpp \ + 1.0/HalPolicy.cpp \ + 1.1/ArmnnDriverImpl.cpp \ + 1.1/HalPolicy.cpp \ + 1.2/ArmnnDriverImpl.cpp \ + 1.2/HalPolicy.cpp \ + ArmnnDriverImpl.cpp \ + DriverOptions.cpp \ + ArmnnDevice.cpp \ + ArmnnPreparedModel.cpp \ + ArmnnPreparedModel_1_2.cpp \ + ModelToINetworkConverter.cpp \ + RequestThread.cpp \ + Utils.cpp \ + ConversionUtils.cpp + +LOCAL_STATIC_LIBRARIES := \ + libneuralnetworks_common \ + libboost_log \ + libboost_program_options \ + libboost_system \ + libboost_thread \ + armnn-arm_compute + +LOCAL_WHOLE_STATIC_LIBRARIES := libarmnn + +LOCAL_SHARED_LIBRARIES := \ + libbase \ + libhidlbase \ + libhidltransport \ + libhidlmemory \ + liblog \ + libutils \ + libnativewindow \ + libui \ + libfmq \ + libcutils \ + android.hidl.allocator@1.0 \ + android.hidl.memory@1.0 \ + android.hardware.neuralnetworks@1.0 \ + android.hardware.neuralnetworks@1.1 \ + android.hardware.neuralnetworks@1.2 + +ifeq ($(ARMNN_COMPUTE_CL_ENABLED),1) +LOCAL_SHARED_LIBRARIES+= \ + libOpenCL +endif + +include $(BUILD_STATIC_LIBRARY) + +endif # PLATFORM_VERSION == Q + ##################################################### # android.hardware.neuralnetworks@1.0-service-armnn # ##################################################### @@ -279,13 +397,18 @@ LOCAL_C_INCLUDES := \ $(NN_HEADER_PATH) LOCAL_CFLAGS := \ - -std=c++14 \ + -std=$(CPP_VERSION) \ -fexceptions ifeq ($(ARMNN_DRIVER_DEBUG),1) LOCAL_CFLAGS += \ -UNDEBUG endif # ARMNN_DRIVER_DEBUG == 1 +ifeq ($(Q_OR_LATER),1) +LOCAL_CFLAGS += \ + -DBOOST_NO_AUTO_PTR +endif # PLATFORM_VERSION == Q or later + LOCAL_SRC_FILES := \ service.cpp @@ -363,7 +486,7 @@ LOCAL_C_INCLUDES := \ $(NN_HEADER_PATH) LOCAL_CFLAGS := \ - -std=c++14 \ + -std=$(CPP_VERSION) \ -fexceptions \ -DARMNN_ANDROID_NN_V1_1 ifeq ($(ARMNN_DRIVER_DEBUG),1) @@ -371,6 +494,11 @@ LOCAL_CFLAGS += \ -UNDEBUG endif # ARMNN_DRIVER_DEBUG == 1 +ifeq ($(Q_OR_LATER),1) +LOCAL_CFLAGS += \ + -DBOOST_NO_AUTO_PTR +endif # PLATFORM_VERSION == Q or later + LOCAL_SRC_FILES := \ service.cpp @@ -418,6 +546,80 @@ include $(BUILD_EXECUTABLE) endif # PLATFORM_VERSION == 9 +ifeq ($(Q_OR_LATER),1) +# The following target is available starting from Android Q + +##################################################### +# android.hardware.neuralnetworks@1.2-service-armnn # +##################################################### +include $(CLEAR_VARS) + +LOCAL_MODULE := android.hardware.neuralnetworks@1.2-service-armnn +LOCAL_INIT_RC := android.hardware.neuralnetworks@1.2-service-armnn.rc +LOCAL_MODULE_TAGS := optional +LOCAL_ARM_MODE := arm +LOCAL_MODULE_RELATIVE_PATH := hw +LOCAL_PROPRIETARY_MODULE := true +# Mark source files as dependent on Android.mk +LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk + +LOCAL_C_INCLUDES := \ + $(ARMNN_HEADER_PATH) \ + $(NN_HEADER_PATH) + +LOCAL_CFLAGS := \ + -std=$(CPP_VERSION) \ + -fexceptions \ + -DARMNN_ANDROID_NN_V1_2 \ + -DBOOST_NO_AUTO_PTR +ifeq ($(ARMNN_DRIVER_DEBUG),1) +LOCAL_CFLAGS += \ + -UNDEBUG +endif # ARMNN_DRIVER_DEBUG == 1 + +LOCAL_SRC_FILES := \ + service.cpp + +LOCAL_STATIC_LIBRARIES := \ + libneuralnetworks_common \ + libboost_log \ + libboost_program_options \ + libboost_system \ + libboost_thread \ + armnn-arm_compute + +LOCAL_WHOLE_STATIC_LIBRARIES := \ + libarmnn-driver@1.2 + +LOCAL_SHARED_LIBRARIES := \ + libbase \ + libhidlbase \ + libhidltransport \ + libhidlmemory \ + libdl \ + libhardware \ + liblog \ + libtextclassifier_hash \ + libutils \ + libnativewindow \ + libui \ + libfmq \ + libcutils \ + android.hidl.allocator@1.0 \ + android.hidl.memory@1.0 \ + android.hardware.neuralnetworks@1.0 \ + android.hardware.neuralnetworks@1.1 \ + android.hardware.neuralnetworks@1.2 + +ifeq ($(ARMNN_COMPUTE_CL_ENABLED),1) +LOCAL_SHARED_LIBRARIES+= \ + libOpenCL +endif + +include $(BUILD_EXECUTABLE) + +endif # PLATFORM_VERSION == Q + ########################## # armnn module and tests # ########################## -- cgit v1.2.1