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