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