blob: 49f0975e3660a69f6b583fbbc1c0ea6c5194476b [file] [log] [blame]
Matteo Martincighe48bdff2018-09-03 13:50:50 +01001//
2// Copyright © 2017 Arm Ltd. All rights reserved.
David Beck93e48982018-09-05 13:05:09 +01003// SPDX-License-Identifier: MIT
Matteo Martincighe48bdff2018-09-03 13:50:50 +01004//
5
6#pragma once
7
Matteo Martincighe48bdff2018-09-03 13:50:50 +01008#include "DriverOptions.hpp"
9
arovir01b0717b52018-09-05 17:03:25 +010010#include <HalInterfaces.h>
Matteo Martincighe48bdff2018-09-03 13:50:50 +010011
Matthew Bentham912b3622019-05-03 15:49:14 +010012namespace V1_0 = ::android::hardware::neuralnetworks::V1_0;
Mike Kellyb5fdf382019-06-11 16:35:25 +010013namespace V1_1 = ::android::hardware::neuralnetworks::V1_1;
14
15#ifdef ARMNN_ANDROID_NN_V1_2 // Using ::android::hardware::neuralnetworks::V1_2
16namespace V1_2 = ::android::hardware::neuralnetworks::V1_2;
17#endif
Matthew Bentham912b3622019-05-03 15:49:14 +010018
Matteo Martincighe48bdff2018-09-03 13:50:50 +010019namespace armnn_driver
20{
21
arovir01b0717b52018-09-05 17:03:25 +010022template<typename HalPolicy>
Matteo Martincighe48bdff2018-09-03 13:50:50 +010023class ArmnnDriverImpl
24{
25public:
arovir01b0717b52018-09-05 17:03:25 +010026 using HalModel = typename HalPolicy::Model;
27 using HalGetSupportedOperations_cb = typename HalPolicy::getSupportedOperations_cb;
Matteo Martincighe48bdff2018-09-03 13:50:50 +010028
Matteo Martincighe48bdff2018-09-03 13:50:50 +010029 static Return<void> getSupportedOperations(
30 const armnn::IRuntimePtr& runtime,
31 const DriverOptions& options,
32 const HalModel& model,
33 HalGetSupportedOperations_cb);
arovir01b0717b52018-09-05 17:03:25 +010034
Matteo Martincighe48bdff2018-09-03 13:50:50 +010035 static Return<ErrorStatus> prepareModel(
36 const armnn::IRuntimePtr& runtime,
37 const armnn::IGpuAccTunedParametersPtr& clTunedParameters,
38 const DriverOptions& options,
39 const HalModel& model,
Matthew Bentham912b3622019-05-03 15:49:14 +010040 const android::sp<V1_0::IPreparedModelCallback>& cb,
Matteo Martincighe48bdff2018-09-03 13:50:50 +010041 bool float32ToFloat16 = false);
arovir01b0717b52018-09-05 17:03:25 +010042
Matteo Martincighe48bdff2018-09-03 13:50:50 +010043 static Return<DeviceStatus> getStatus();
Mike Kellyb5fdf382019-06-11 16:35:25 +010044
Matteo Martincighe48bdff2018-09-03 13:50:50 +010045};
46
47} // namespace armnn_driver