aboutsummaryrefslogtreecommitdiff
path: root/src/backends/cl/ICLTensorProxy.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/backends/cl/ICLTensorProxy.hpp')
-rw-r--r--src/backends/cl/ICLTensorProxy.hpp78
1 files changed, 78 insertions, 0 deletions
diff --git a/src/backends/cl/ICLTensorProxy.hpp b/src/backends/cl/ICLTensorProxy.hpp
new file mode 100644
index 0000000000..fff9c53d31
--- /dev/null
+++ b/src/backends/cl/ICLTensorProxy.hpp
@@ -0,0 +1,78 @@
+//
+// Copyright © 2022 Arm Ltd and Contributors. All rights reserved.
+// SPDX-License-Identifier: MIT
+//
+#pragma once
+
+#include <arm_compute/core/CL/ICLTensor.h>
+#include <arm_compute/core/ITensorInfo.h>
+
+namespace armnn
+{
+
+class ICLTensorProxy : public arm_compute::ICLTensor
+{
+public:
+ ICLTensorProxy(arm_compute::ICLTensor* iclTensor) : m_DelegateTensor(iclTensor) {}
+ ICLTensorProxy(const ICLTensorProxy&) = delete;
+ ICLTensorProxy& operator=(const ICLTensorProxy&) = delete;
+ ICLTensorProxy(ICLTensorProxy&&) = default;
+ ICLTensorProxy& operator=(ICLTensorProxy&&) = default;
+
+ void set(arm_compute::ICLTensor* iclTensor)
+ {
+ if(iclTensor != nullptr)
+ {
+ m_DelegateTensor = iclTensor;
+ }
+ }
+
+ // Inherited methods overridden:
+ arm_compute::ITensorInfo* info() const
+ {
+ ARM_COMPUTE_ERROR_ON(m_DelegateTensor == nullptr);
+ return m_DelegateTensor->info();
+ }
+
+ arm_compute::ITensorInfo* info()
+ {
+ ARM_COMPUTE_ERROR_ON(m_DelegateTensor == nullptr);
+ return m_DelegateTensor->info();
+ }
+
+ uint8_t* buffer() const
+ {
+ ARM_COMPUTE_ERROR_ON(m_DelegateTensor == nullptr);
+ return m_DelegateTensor->buffer();
+ }
+
+ arm_compute::CLQuantization quantization() const
+ {
+ ARM_COMPUTE_ERROR_ON(m_DelegateTensor == nullptr);
+ return m_DelegateTensor->quantization();
+ }
+
+ const cl::Buffer& cl_buffer() const
+ {
+ ARM_COMPUTE_ERROR_ON(m_DelegateTensor == nullptr);
+ return m_DelegateTensor->cl_buffer();
+ }
+
+protected:
+ uint8_t* do_map(cl::CommandQueue& q, bool blocking)
+ {
+ ARM_COMPUTE_ERROR_ON(m_DelegateTensor == nullptr);
+ m_DelegateTensor->map(q, blocking);
+ return m_DelegateTensor->buffer();
+ }
+ void do_unmap(cl::CommandQueue& q)
+ {
+ ARM_COMPUTE_ERROR_ON(m_DelegateTensor == nullptr);
+ return m_DelegateTensor->unmap(q);
+ }
+
+private:
+ arm_compute::ICLTensor* m_DelegateTensor{ nullptr };
+};
+
+} //namespace armnn \ No newline at end of file