blob: c06009773aff5c027011430eae592018328358be [file] [log] [blame]
Matteo Martincighe48bdff2018-09-03 13:50:50 +01001//
2// Copyright © 2017 Arm Ltd. All rights reserved.
3// See LICENSE file in the project root for full license information.
4//
5
6#pragma once
7
8#include <HalInterfaces.h>
9
10#include "DriverOptions.hpp"
11
12#include <armnn/ArmNN.hpp>
13
14namespace armnn_driver
15{
16
17struct HalVersion_1_0
18{
19 using Model = ::android::hardware::neuralnetworks::V1_0::Model;
20 using Capabilities = ::android::hardware::neuralnetworks::V1_0::Capabilities;
21 using getCapabilities_cb = ::android::hardware::neuralnetworks::V1_0::IDevice::getCapabilities_cb;
22 using getSupportedOperations_cb = ::android::hardware::neuralnetworks::V1_0::IDevice::getSupportedOperations_cb;
23};
24
25#if defined(ARMNN_ANDROID_NN_V1_1)
26struct HalVersion_1_1
27{
28 using Model = ::android::hardware::neuralnetworks::V1_1::Model;
29 using Capabilities = ::android::hardware::neuralnetworks::V1_1::Capabilities;
30 using getCapabilities_cb = ::android::hardware::neuralnetworks::V1_1::IDevice::getCapabilities_1_1_cb;
31 using getSupportedOperations_cb = ::android::hardware::neuralnetworks::V1_1::IDevice::getSupportedOperations_1_1_cb;
32};
33#endif
34
35template <typename HalVersion>
36class ArmnnDriverImpl
37{
38public:
39 using HalModel = typename HalVersion::Model;
40 using HalCapabilities = typename HalVersion::Capabilities;
41 using HalGetCapabilities_cb = typename HalVersion::getCapabilities_cb;
42 using HalGetSupportedOperations_cb = typename HalVersion::getSupportedOperations_cb;
43
44 static Return<void> getCapabilities(
45 const armnn::IRuntimePtr& runtime,
46 HalGetCapabilities_cb cb);
47 static Return<void> getSupportedOperations(
48 const armnn::IRuntimePtr& runtime,
49 const DriverOptions& options,
50 const HalModel& model,
51 HalGetSupportedOperations_cb);
52 static Return<ErrorStatus> prepareModel(
53 const armnn::IRuntimePtr& runtime,
54 const armnn::IGpuAccTunedParametersPtr& clTunedParameters,
55 const DriverOptions& options,
56 const HalModel& model,
57 const android::sp<IPreparedModelCallback>& cb,
58 bool float32ToFloat16 = false);
59 static Return<DeviceStatus> getStatus();
60};
61
62} // namespace armnn_driver