From d2d9361a0a338bce478f7d85b4af70d1ed20f26c Mon Sep 17 00:00:00 2001 From: Ramy Elgammal Date: Thu, 22 Dec 2022 15:21:03 +0000 Subject: Add extend padding lock flag - ITensorInfo's padding cannot be extended if its lock_paddings flag is set to True. Resolves: COMPMID-5714 Signed-off-by: Ramy Elgammal Change-Id: I6bca9bbf7172822af60562310578c438b9e15f46 Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/8875 Tested-by: Arm Jenkins Reviewed-by: SiCong Li Reviewed-by: Gian Marco Iodice Comments-Addressed: Arm Jenkins Benchmark: Arm Jenkins --- arm_compute/core/ITensorInfo.h | 11 +++++++++++ arm_compute/core/SubTensorInfo.h | 9 ++++++++- arm_compute/core/TensorInfo.h | 5 ++++- 3 files changed, 23 insertions(+), 2 deletions(-) (limited to 'arm_compute/core') diff --git a/arm_compute/core/ITensorInfo.h b/arm_compute/core/ITensorInfo.h index c48e6ebf79..1382649e74 100644 --- a/arm_compute/core/ITensorInfo.h +++ b/arm_compute/core/ITensorInfo.h @@ -142,6 +142,17 @@ public: * @return True if the strides or the offset to the first element have changed. */ virtual bool auto_padding() = 0; + /** Set the lock paddings flag of the tensor. + * It should be set to True, when the tensor could be mapped to camera or frame buffer. + * + * @return Reference to this ITensorInfo object + */ + virtual ITensorInfo &set_lock_paddings(bool flag) = 0; + /** Get the lock paddings flag value + * + * @return lock paddings flag value + */ + virtual bool lock_paddings() const = 0; /** Update the offset to the first element, the strides and the total size. * * @note This function can only increase the offset, strides and total size. diff --git a/arm_compute/core/SubTensorInfo.h b/arm_compute/core/SubTensorInfo.h index 374ea5b8c6..21703b0d93 100644 --- a/arm_compute/core/SubTensorInfo.h +++ b/arm_compute/core/SubTensorInfo.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2022 Arm Limited. + * Copyright (c) 2017-2023 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -116,7 +116,13 @@ public: ARM_COMPUTE_ERROR_ON(_parent == nullptr); return _parent->auto_padding(); }; + + ITensorInfo &set_lock_paddings(bool flag) override; + + bool lock_paddings() const override; + bool extend_padding(const PaddingSize &padding) override; + size_t dimension(size_t index) const override { return _tensor_shape[index]; @@ -256,6 +262,7 @@ private: Coordinates _coords; ValidRegion _valid_region; bool _extend_parent; + bool _lock_paddings; }; } // namespace arm_compute #endif /*ARM_COMPUTE_SUBTENSORINFO_H */ diff --git a/arm_compute/core/TensorInfo.h b/arm_compute/core/TensorInfo.h index 7eb8c52d07..8436407a75 100644 --- a/arm_compute/core/TensorInfo.h +++ b/arm_compute/core/TensorInfo.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016-2022 Arm Limited. + * Copyright (c) 2016-2023 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -201,6 +201,8 @@ public: ITensorInfo &set_data_layout(const DataLayout &data_layout) override; ITensorInfo &reset_padding() override; bool auto_padding() override; + ITensorInfo &set_lock_paddings(bool flag) override; + bool lock_paddings() const override; bool extend_padding(const PaddingSize &padding) override; size_t dimension(size_t index) const override { @@ -330,6 +332,7 @@ private: DataLayout _data_layout; bool _are_values_constant; ITensorInfo::Id _id; + bool _lock_paddings; }; /** Check whether two tensor info are equal. -- cgit v1.2.1