blob: 777bc84b8ad42e655c308d17e8e339a1fcc1ec56 [file] [log] [blame]
Aron Virginas-Tar56055192018-11-12 18:10:43 +00001//
2// Copyright © 2017 Arm Ltd. All rights reserved.
3// SPDX-License-Identifier: MIT
4//
5
6#pragma once
7
8#include <backendsCommon/IBackendInternal.hpp>
9#include <backendsCommon/IMemoryManager.hpp>
10#include <backendsCommon/test/WorkloadFactoryHelper.hpp>
11
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +000012#include <cl/ClBackend.hpp>
Aron Virginas-Tar56055192018-11-12 18:10:43 +000013#include <cl/ClWorkloadFactory.hpp>
14
Aron Virginas-Tar56055192018-11-12 18:10:43 +000015#include <boost/polymorphic_pointer_cast.hpp>
16
17namespace
18{
19
20template<>
21struct WorkloadFactoryHelper<armnn::ClWorkloadFactory>
22{
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +000023 static armnn::IBackendInternal::IMemoryManagerSharedPtr GetMemoryManager()
Aron Virginas-Tar56055192018-11-12 18:10:43 +000024 {
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +000025 armnn::ClBackend backend;
26 return backend.CreateMemoryManager();
27 }
Aron Virginas-Tar56055192018-11-12 18:10:43 +000028
Aron Virginas-Tar5caf9072018-11-14 18:35:18 +000029 static armnn::ClWorkloadFactory GetFactory(
30 const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager)
31 {
Aron Virginas-Tar56055192018-11-12 18:10:43 +000032 return armnn::ClWorkloadFactory(boost::polymorphic_pointer_downcast<armnn::ClMemoryManager>(memoryManager));
33 }
34};
35
36using ClWorkloadFactoryHelper = WorkloadFactoryHelper<armnn::ClWorkloadFactory>;
37
38} // anonymous namespace