blob: 790eee1b2c16d8c87427250440db4d4cc5f0f981 [file] [log] [blame]
Teresa Charline8816722020-08-05 17:43:54 +01001//
2// Copyright © 2020 Arm Ltd and Contributors. All rights reserved.
3// SPDX-License-Identifier: MIT
4//
5
6#pragma once
7
8#include "SampleMemoryManager.hpp"
9
10#include <armnn/backends/ITensorHandleFactory.hpp>
11
Jan Eilersc84e45d2020-08-19 14:14:36 +010012namespace sdb // sample dynamic backend
Teresa Charline8816722020-08-05 17:43:54 +010013{
14
15constexpr const char * SampleDynamicTensorHandleFactoryId() { return "Arm/SampleDynamic/TensorHandleFactory"; }
16
Jan Eilersc84e45d2020-08-19 14:14:36 +010017class SampleDynamicTensorHandleFactory : public armnn::ITensorHandleFactory
Teresa Charline8816722020-08-05 17:43:54 +010018{
19
20public:
21 SampleDynamicTensorHandleFactory(std::shared_ptr<SampleMemoryManager> mgr)
22 : m_MemoryManager(mgr),
Jan Eilersc84e45d2020-08-19 14:14:36 +010023 m_ImportFlags(static_cast<armnn::MemorySourceFlags>(armnn::MemorySource::Malloc)),
24 m_ExportFlags(static_cast<armnn::MemorySourceFlags>(armnn::MemorySource::Malloc))
Teresa Charline8816722020-08-05 17:43:54 +010025 {}
26
Jan Eilersc84e45d2020-08-19 14:14:36 +010027 std::unique_ptr<armnn::ITensorHandle> CreateSubTensorHandle(armnn::ITensorHandle& parent,
28 armnn::TensorShape const& subTensorShape,
29 unsigned int const* subTensorOrigin) const override;
Teresa Charline8816722020-08-05 17:43:54 +010030
Jan Eilersc84e45d2020-08-19 14:14:36 +010031 std::unique_ptr<armnn::ITensorHandle> CreateTensorHandle(const armnn::TensorInfo& tensorInfo) const override;
Teresa Charline8816722020-08-05 17:43:54 +010032
Jan Eilersc84e45d2020-08-19 14:14:36 +010033 std::unique_ptr<armnn::ITensorHandle> CreateTensorHandle(const armnn::TensorInfo& tensorInfo,
34 armnn::DataLayout dataLayout) const override;
Teresa Charline8816722020-08-05 17:43:54 +010035
Jan Eilersc84e45d2020-08-19 14:14:36 +010036 std::unique_ptr<armnn::ITensorHandle> CreateTensorHandle(const armnn::TensorInfo& tensorInfo,
37 const bool IsMemoryManaged) const override;
Teresa Charline8816722020-08-05 17:43:54 +010038
Jan Eilersc84e45d2020-08-19 14:14:36 +010039 std::unique_ptr<armnn::ITensorHandle> CreateTensorHandle(const armnn::TensorInfo& tensorInfo,
40 armnn::DataLayout dataLayout,
41 const bool IsMemoryManaged) const override;
Teresa Charline8816722020-08-05 17:43:54 +010042
43 static const FactoryId& GetIdStatic();
44
45 const FactoryId& GetId() const override;
46
47 bool SupportsSubTensors() const override;
48
Jan Eilersc84e45d2020-08-19 14:14:36 +010049 armnn::MemorySourceFlags GetExportFlags() const override;
Teresa Charline8816722020-08-05 17:43:54 +010050
Jan Eilersc84e45d2020-08-19 14:14:36 +010051 armnn::MemorySourceFlags GetImportFlags() const override;
Teresa Charline8816722020-08-05 17:43:54 +010052
53private:
54 mutable std::shared_ptr<SampleMemoryManager> m_MemoryManager;
Jan Eilersc84e45d2020-08-19 14:14:36 +010055 armnn::MemorySourceFlags m_ImportFlags;
56 armnn::MemorySourceFlags m_ExportFlags;
Teresa Charline8816722020-08-05 17:43:54 +010057};
58
Jan Eilersc84e45d2020-08-19 14:14:36 +010059} // namespace sdb
Teresa Charline8816722020-08-05 17:43:54 +010060