diff --git a/backends/vulkan/runtime/api/containers/Tensor.cpp b/backends/vulkan/runtime/api/containers/Tensor.cpp index 43ebbfecbc6..64f330de59c 100644 --- a/backends/vulkan/runtime/api/containers/Tensor.cpp +++ b/backends/vulkan/runtime/api/containers/Tensor.cpp @@ -615,8 +615,7 @@ vTensor::vTensor( sizes_, whcn_dim_order, unsqueezed_strides, - TextureLimits( - calculate_logical_limits(storage_->image_extents_, axis_map_)), + calculate_logical_limits(storage_->image_extents_, axis_map_), numel_}); VK_CHECK_COND( dim_order_is_valid(dim_order_), "computed dim order is invalid"); @@ -648,10 +647,12 @@ vTensor::vTensor( uniforms_(), // Construct Tensor storage storage_(std::make_shared(context, image)) { - TextureLimits logical_limits( - calculate_logical_limits(storage_->image_extents_, axis_map_)); - uniform_data_ = std::make_shared( - UniformData{sizes_, {0, 0, 0, 0}, {0, 0, 0, 0}, logical_limits, numel_}); + uniform_data_ = std::make_shared(UniformData{ + sizes_, + {0, 0, 0, 0}, + {0, 0, 0, 0}, + calculate_logical_limits(storage_->image_extents_, axis_map_), + numel_}); } vTensor::vTensor(vTensor& other) @@ -698,7 +699,7 @@ vTensor::vTensor( sizes_, create_whcn_dim_order(dim_order_), unsqueeze_strides(strides_, numel_), - {other.logical_limits()}, + other.logical_limits(), static_cast(utils::multiply_integers(sizes_))}); VK_CHECK_COND( diff --git a/backends/vulkan/runtime/api/containers/Tensor.h b/backends/vulkan/runtime/api/containers/Tensor.h index 78a24d87e77..0e1a1526d88 100644 --- a/backends/vulkan/runtime/api/containers/Tensor.h +++ b/backends/vulkan/runtime/api/containers/Tensor.h @@ -167,6 +167,8 @@ class vTensor final { // component vector with components of size N must have base alignment of // 4N. alignas(16) utils::ivec3 limits; + + TextureLimits(const utils::uvec3& ulimits) : limits{ulimits} {} }; public: @@ -249,7 +251,7 @@ class vTensor final { const std::vector& sizes, const std::vector& whcn_dim_order, const std::vector& strides, - const TextureLimits& logical_limits, + const utils::uvec3& logical_limits, const size_t numel_ll) : sizes_v(utils::make_whcn_ivec4(sizes)), whcn_dim_order_v(utils::make_ivec4(whcn_dim_order)),