xref: /aosp_15_r20/external/android-nn-driver/1.2/ArmnnDriverImpl.hpp (revision 3e777be0405cee09af5d5785ff37f7cfb5bee59a)
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