1*3e777be0SXin Li // 2*3e777be0SXin Li // Copyright © 2020 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 #if !defined(ARMNN_ANDROID_S) 16*3e777be0SXin Li using namespace android::nn::hal; 17*3e777be0SXin Li #endif 18*3e777be0SXin Li 19*3e777be0SXin Li #ifdef ARMNN_ANDROID_S 20*3e777be0SXin Li using namespace android::hardware; 21*3e777be0SXin Li #endif 22*3e777be0SXin Li 23*3e777be0SXin Li namespace V1_0 = ::android::hardware::neuralnetworks::V1_0; 24*3e777be0SXin Li namespace V1_2 = ::android::hardware::neuralnetworks::V1_2; 25*3e777be0SXin Li namespace V1_3 = ::android::hardware::neuralnetworks::V1_3; 26*3e777be0SXin Li 27*3e777be0SXin Li namespace armnn_driver 28*3e777be0SXin Li { 29*3e777be0SXin Li namespace hal_1_3 30*3e777be0SXin Li { 31*3e777be0SXin Li 32*3e777be0SXin Li class ArmnnDriverImpl 33*3e777be0SXin Li { 34*3e777be0SXin Li public: 35*3e777be0SXin Li using HidlToken = android::hardware::hidl_array<uint8_t, ANEURALNETWORKS_BYTE_SIZE_OF_CACHE_TOKEN>; 36*3e777be0SXin Li 37*3e777be0SXin Li static Return<V1_3::ErrorStatus> prepareArmnnModel_1_3( 38*3e777be0SXin Li const armnn::IRuntimePtr& runtime, 39*3e777be0SXin Li const armnn::IGpuAccTunedParametersPtr& clTunedParameters, 40*3e777be0SXin Li const DriverOptions& options, 41*3e777be0SXin Li const V1_3::Model& model, 42*3e777be0SXin Li const android::hardware::hidl_vec<android::hardware::hidl_handle>& modelCacheHandle, 43*3e777be0SXin Li const android::hardware::hidl_vec<android::hardware::hidl_handle>& dataCacheHandle, 44*3e777be0SXin Li const HidlToken& token, 45*3e777be0SXin Li const android::sp<V1_3::IPreparedModelCallback>& cb, 46*3e777be0SXin Li bool float32ToFloat16 = false, 47*3e777be0SXin Li V1_3::Priority priority = V1_3::Priority::MEDIUM); 48*3e777be0SXin Li 49*3e777be0SXin Li static Return<V1_3::ErrorStatus> prepareModelFromCache_1_3( 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_3::IPreparedModelCallback>& cb); 56*3e777be0SXin Li 57*3e777be0SXin Li static Return<void> getCapabilities_1_3(const armnn::IRuntimePtr& runtime, 58*3e777be0SXin Li V1_3::IDevice::getCapabilities_1_3_cb cb); 59*3e777be0SXin Li }; 60*3e777be0SXin Li 61*3e777be0SXin Li } // namespace hal_1_3 62*3e777be0SXin Li } // namespace armnn_driver