From 6ed298dce715eb03f0cea0d075da0af51438dae1 Mon Sep 17 00:00:00 2001 From: Jason Ekstrand Date: Fri, 29 Apr 2022 17:35:50 -0500 Subject: [PATCH] panvk: Add an elems field to panvk_buffer_view Reviewed-by: Alyssa Rosenzweig Part-of: --- src/panfrost/vulkan/panvk_private.h | 1 + src/panfrost/vulkan/panvk_vX_image.c | 10 +++++----- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/panfrost/vulkan/panvk_private.h b/src/panfrost/vulkan/panvk_private.h index 34fb66ada85..6b5255cbb95 100644 --- a/src/panfrost/vulkan/panvk_private.h +++ b/src/panfrost/vulkan/panvk_private.h @@ -1053,6 +1053,7 @@ struct panvk_buffer_view { uint32_t img_attrib_buf[ATTRIB_BUF_DESC_WORDS * 2]; } descs; enum pipe_format fmt; + uint32_t elems; }; struct panvk_attachment_info { diff --git a/src/panfrost/vulkan/panvk_vX_image.c b/src/panfrost/vulkan/panvk_vX_image.c index b35a8c19f92..efd215bac2b 100644 --- a/src/panfrost/vulkan/panvk_vX_image.c +++ b/src/panfrost/vulkan/panvk_vX_image.c @@ -201,7 +201,7 @@ panvk_per_arch(CreateBufferView)(VkDevice _device, unsigned size = panvk_buffer_range(buffer, pCreateInfo->offset, pCreateInfo->range); unsigned blksz = util_format_get_blocksize(view->fmt); - unsigned width = size / blksz; + view->elems = size / blksz; assert(!(address & 63)); @@ -225,7 +225,7 @@ panvk_per_arch(CreateBufferView)(VkDevice _device, pan_pack(tex, TEXTURE, cfg) { cfg.dimension = MALI_TEXTURE_DIMENSION_1D; cfg.format = pdev->formats[view->fmt].hw; - cfg.width = width; + cfg.width = view->elems; cfg.depth = cfg.height = 1; cfg.swizzle = PAN_V6_SWIZZLE(R, G, B, A); cfg.texel_ordering = MALI_TEXTURE_LAYOUT_LINEAR; @@ -247,15 +247,15 @@ panvk_per_arch(CreateBufferView)(VkDevice _device, cfg.type = MALI_ATTRIBUTE_TYPE_3D_LINEAR; cfg.pointer = address; cfg.stride = blksz; - cfg.size = width * blksz; + cfg.size = view->elems * blksz; } attrib_buf += pan_size(ATTRIBUTE_BUFFER); pan_pack(attrib_buf, ATTRIBUTE_BUFFER_CONTINUATION_3D, cfg) { - cfg.s_dimension = width; + cfg.s_dimension = view->elems; cfg.t_dimension = 1; cfg.r_dimension = 1; - cfg.row_stride = width * blksz; + cfg.row_stride = view->elems * blksz; } }