// // Copyright © 2017 Arm Ltd. All rights reserved. // See LICENSE file in the project root for full license information. // #pragma once #include #include "DriverOptions.hpp" #include namespace armnn_driver { struct HalVersion_1_0 { using Model = ::android::hardware::neuralnetworks::V1_0::Model; using Capabilities = ::android::hardware::neuralnetworks::V1_0::Capabilities; using getCapabilities_cb = ::android::hardware::neuralnetworks::V1_0::IDevice::getCapabilities_cb; using getSupportedOperations_cb = ::android::hardware::neuralnetworks::V1_0::IDevice::getSupportedOperations_cb; }; #if defined(ARMNN_ANDROID_NN_V1_1) struct HalVersion_1_1 { using Model = ::android::hardware::neuralnetworks::V1_1::Model; using Capabilities = ::android::hardware::neuralnetworks::V1_1::Capabilities; using getCapabilities_cb = ::android::hardware::neuralnetworks::V1_1::IDevice::getCapabilities_1_1_cb; using getSupportedOperations_cb = ::android::hardware::neuralnetworks::V1_1::IDevice::getSupportedOperations_1_1_cb; }; #endif template class ArmnnDriverImpl { public: using HalModel = typename HalVersion::Model; using HalCapabilities = typename HalVersion::Capabilities; using HalGetCapabilities_cb = typename HalVersion::getCapabilities_cb; using HalGetSupportedOperations_cb = typename HalVersion::getSupportedOperations_cb; static Return getCapabilities( const armnn::IRuntimePtr& runtime, HalGetCapabilities_cb cb); static Return getSupportedOperations( const armnn::IRuntimePtr& runtime, const DriverOptions& options, const HalModel& model, HalGetSupportedOperations_cb); static Return prepareModel( const armnn::IRuntimePtr& runtime, const armnn::IGpuAccTunedParametersPtr& clTunedParameters, const DriverOptions& options, const HalModel& model, const android::sp& cb, bool float32ToFloat16 = false); static Return getStatus(); }; } // namespace armnn_driver