1*3e777be0SXin Li // 2*3e777be0SXin Li // Copyright © 2017 Arm Ltd. All rights reserved. 3*3e777be0SXin Li // SPDX-License-Identifier: MIT 4*3e777be0SXin Li // 5*3e777be0SXin Li 6*3e777be0SXin Li #pragma once 7*3e777be0SXin Li 8*3e777be0SXin Li #include <HalInterfaces.h> 9*3e777be0SXin Li 10*3e777be0SXin Li #include "../CacheDataHandler.hpp" 11*3e777be0SXin Li #include "../DriverOptions.hpp" 12*3e777be0SXin Li 13*3e777be0SXin Li #include <armnn/ArmNN.hpp> 14*3e777be0SXin Li 15*3e777be0SXin Li #include <NeuralNetworks.h> 16*3e777be0SXin Li 17*3e777be0SXin Li #ifdef ARMNN_ANDROID_R 18*3e777be0SXin Li using namespace android::nn::hal; 19*3e777be0SXin Li #endif 20*3e777be0SXin Li 21*3e777be0SXin Li #ifdef ARMNN_ANDROID_S 22*3e777be0SXin Li using namespace android::hardware; 23*3e777be0SXin Li #endif 24*3e777be0SXin Li 25*3e777be0SXin Li namespace V1_0 = ::android::hardware::neuralnetworks::V1_0; 26*3e777be0SXin Li namespace V1_2 = ::android::hardware::neuralnetworks::V1_2; 27*3e777be0SXin Li 28*3e777be0SXin Li namespace armnn_driver 29*3e777be0SXin Li { 30*3e777be0SXin Li namespace hal_1_2 31*3e777be0SXin Li { 32*3e777be0SXin Li 33*3e777be0SXin Li class ArmnnDriverImpl 34*3e777be0SXin Li { 35*3e777be0SXin Li public: 36*3e777be0SXin Li using HidlToken = android::hardware::hidl_array<uint8_t, ANEURALNETWORKS_BYTE_SIZE_OF_CACHE_TOKEN>; 37*3e777be0SXin Li 38*3e777be0SXin Li static Return<V1_0::ErrorStatus> prepareArmnnModel_1_2( 39*3e777be0SXin Li const armnn::IRuntimePtr& runtime, 40*3e777be0SXin Li const armnn::IGpuAccTunedParametersPtr& clTunedParameters, 41*3e777be0SXin Li const DriverOptions& options, 42*3e777be0SXin Li const V1_2::Model& model, 43*3e777be0SXin Li const android::hardware::hidl_vec<android::hardware::hidl_handle>& modelCacheHandle, 44*3e777be0SXin Li const android::hardware::hidl_vec<android::hardware::hidl_handle>& dataCacheHandle, 45*3e777be0SXin Li const HidlToken& token, 46*3e777be0SXin Li const android::sp<V1_2::IPreparedModelCallback>& cb, 47*3e777be0SXin Li bool float32ToFloat16 = false); 48*3e777be0SXin Li 49*3e777be0SXin Li static Return<V1_0::ErrorStatus> prepareModelFromCache( 50*3e777be0SXin Li const armnn::IRuntimePtr& runtime, 51*3e777be0SXin Li const DriverOptions& options, 52*3e777be0SXin Li const android::hardware::hidl_vec<android::hardware::hidl_handle>& modelCacheHandle, 53*3e777be0SXin Li const android::hardware::hidl_vec<android::hardware::hidl_handle>& dataCacheHandle, 54*3e777be0SXin Li const HidlToken& token, 55*3e777be0SXin Li const android::sp<V1_2::IPreparedModelCallback>& cb, 56*3e777be0SXin Li bool float32ToFloat16 = false); 57*3e777be0SXin Li 58*3e777be0SXin Li static Return<void> getCapabilities_1_2(const armnn::IRuntimePtr& runtime, 59*3e777be0SXin Li V1_2::IDevice::getCapabilities_1_2_cb cb); 60*3e777be0SXin Li }; 61*3e777be0SXin Li 62*3e777be0SXin Li } // namespace hal_1_2 63*3e777be0SXin Li } // namespace armnn_driver