xref: /aosp_15_r20/external/armnn/src/backends/cl/test/ClWorkloadFactoryHelper.hpp (revision 89c4ff92f2867872bb9e2354d150bf0c8c502810)
1 //
2 // Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5 
6 #pragma once
7 
8 #include <armnn/backends/IBackendInternal.hpp>
9 #include <armnn/backends/IMemoryManager.hpp>
10 #include <armnn/utility/PolymorphicDowncast.hpp>
11 #include <backendsCommon/test/WorkloadFactoryHelper.hpp>
12 
13 #include <cl/ClBackend.hpp>
14 #include <cl/ClWorkloadFactory.hpp>
15 #include <cl/ClTensorHandleFactory.hpp>
16 
17 namespace
18 {
19 
20 template<>
21 struct WorkloadFactoryHelper<armnn::ClWorkloadFactory>
22 {
GetMemoryManager__anond8a226000111::WorkloadFactoryHelper23     static armnn::IBackendInternal::IMemoryManagerSharedPtr GetMemoryManager()
24     {
25         armnn::ClBackend backend;
26         return backend.CreateMemoryManager();
27     }
28 
GetFactory__anond8a226000111::WorkloadFactoryHelper29     static armnn::ClWorkloadFactory GetFactory(
30         const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager,
31         const armnn::ModelOptions& modelOptions = {})
32     {
33         armnn::ClBackend backend;
34         return armnn::ClWorkloadFactory(armnn::PolymorphicPointerDowncast<armnn::ClMemoryManager>(memoryManager),
35                                         backend.CreateBackendSpecificModelContext(modelOptions));
36     }
37 
GetTensorHandleFactory__anond8a226000111::WorkloadFactoryHelper38     static armnn::ClTensorHandleFactory GetTensorHandleFactory(
39             const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager = nullptr)
40     {
41 
42         return armnn::ClTensorHandleFactory(armnn::PolymorphicPointerDowncast<armnn::ClMemoryManager>(memoryManager));
43     }
44 };
45 
46 using ClWorkloadFactoryHelper = WorkloadFactoryHelper<armnn::ClWorkloadFactory>;
47 
48 } // anonymous namespace
49