xref: /aosp_15_r20/external/armnn/src/dynamic/sample/SampleDynamicTensorHandleFactory.hpp (revision 89c4ff92f2867872bb9e2354d150bf0c8c502810)
1 //
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 
12 namespace sdb // sample dynamic backend
13 {
14 
SampleDynamicTensorHandleFactoryId()15 constexpr const char * SampleDynamicTensorHandleFactoryId() { return "Arm/SampleDynamic/TensorHandleFactory"; }
16 
17 class SampleDynamicTensorHandleFactory : public armnn::ITensorHandleFactory
18 {
19 
20 public:
SampleDynamicTensorHandleFactory(std::shared_ptr<SampleMemoryManager> mgr)21     SampleDynamicTensorHandleFactory(std::shared_ptr<SampleMemoryManager> mgr)
22     : m_MemoryManager(mgr),
23       m_ImportFlags(static_cast<armnn::MemorySourceFlags>(armnn::MemorySource::Malloc)),
24       m_ExportFlags(static_cast<armnn::MemorySourceFlags>(armnn::MemorySource::Malloc))
25     {}
26 
27     std::unique_ptr<armnn::ITensorHandle> CreateSubTensorHandle(armnn::ITensorHandle& parent,
28                                                                 armnn::TensorShape const& subTensorShape,
29                                                                 unsigned int const* subTensorOrigin) const override;
30 
31     std::unique_ptr<armnn::ITensorHandle> CreateTensorHandle(const armnn::TensorInfo& tensorInfo) const override;
32 
33     std::unique_ptr<armnn::ITensorHandle> CreateTensorHandle(const armnn::TensorInfo& tensorInfo,
34                                                              armnn::DataLayout dataLayout) const override;
35 
36     std::unique_ptr<armnn::ITensorHandle> CreateTensorHandle(const armnn::TensorInfo& tensorInfo,
37                                                              const bool IsMemoryManaged) const override;
38 
39     std::unique_ptr<armnn::ITensorHandle> CreateTensorHandle(const armnn::TensorInfo& tensorInfo,
40                                                              armnn::DataLayout dataLayout,
41                                                              const bool IsMemoryManaged) const override;
42 
43     static const FactoryId& GetIdStatic();
44 
45     const FactoryId& GetId() const override;
46 
47     bool SupportsSubTensors() const override;
48 
49     armnn::MemorySourceFlags GetExportFlags() const override;
50 
51     armnn::MemorySourceFlags GetImportFlags() const override;
52 
53 private:
54     mutable std::shared_ptr<SampleMemoryManager> m_MemoryManager;
55     armnn::MemorySourceFlags m_ImportFlags;
56     armnn::MemorySourceFlags m_ExportFlags;
57 };
58 
59 } // namespace sdb
60 
61