// // Copyright © 2022 Arm Ltd and Contributors. All rights reserved. // SPDX-License-Identifier: MIT // #pragma once #include "DriverOptions.hpp" #include #include #include #include #include #include using namespace android::nn; namespace armnn_driver { class ArmnnDriverImpl { public: static GeneralResult PrepareArmnnModel( const armnn::IRuntimePtr& runtime, const armnn::IGpuAccTunedParametersPtr& clTunedParameters, const DriverOptions& options, const Model& model, const std::vector& modelCacheHandle, const std::vector& dataCacheHandle, const CacheToken& token, bool float32ToFloat16 = false, Priority priority = Priority::MEDIUM); static GeneralResult PrepareArmnnModelFromCache( const armnn::IRuntimePtr& runtime, const armnn::IGpuAccTunedParametersPtr& clTunedParameters, const DriverOptions& options, const std::vector& modelCacheHandle, const std::vector& dataCacheHandle, const CacheToken& token, bool float32ToFloat16 = false); static const Capabilities& GetCapabilities(const armnn::IRuntimePtr& runtime); static std::vector& GetLoadedNetworks(); static void ClearNetworks(); private: static bool ValidateSharedHandle(const SharedHandle& sharedHandle); static bool ValidateDataCacheHandle(const std::vector& dataCacheHandle, const size_t dataSize); static std::vector m_NetworkIDs; }; } // namespace armnn_driver