Mesa (main): radv: Use vk_image_buffer_copy_layout

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Tue Jun 7 18:25:03 UTC 2022


Module: Mesa
Branch: main
Commit: 8d6b7eb5cece9b0b7cbfafd7a3cb4bb3d12e3276
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=8d6b7eb5cece9b0b7cbfafd7a3cb4bb3d12e3276

Author: Jason Ekstrand <jason.ekstrand at collabora.com>
Date:   Mon Jun  6 08:22:12 2022 -0500

radv: Use vk_image_buffer_copy_layout

Reviewed-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16873>

---

 src/amd/vulkan/radv_meta_copy.c | 10 +++-------
 1 file changed, 3 insertions(+), 7 deletions(-)

diff --git a/src/amd/vulkan/radv_meta_copy.c b/src/amd/vulkan/radv_meta_copy.c
index 7a4364b5a67..dc5522a1840 100644
--- a/src/amd/vulkan/radv_meta_copy.c
+++ b/src/amd/vulkan/radv_meta_copy.c
@@ -122,11 +122,6 @@ copy_buffer_to_image(struct radv_cmd_buffer *cmd_buffer, struct radv_buffer *buf
     * blocks - which is the highest resolution accessible in this command.
     */
    const VkOffset3D img_offset_el = vk_image_offset_to_elements(&image->vk, region->imageOffset);
-   const VkExtent3D bufferExtent = {
-      .width = region->bufferRowLength ? region->bufferRowLength : region->imageExtent.width,
-      .height = region->bufferImageHeight ? region->bufferImageHeight : region->imageExtent.height,
-   };
-   const VkExtent3D buf_extent_el = vk_image_extent_to_elements(&image->vk, bufferExtent);
 
    /* Start creating blit rect */
    const VkExtent3D img_extent_el = vk_image_extent_to_elements(&image->vk, region->imageExtent);
@@ -159,12 +154,13 @@ copy_buffer_to_image(struct radv_cmd_buffer *cmd_buffer, struct radv_buffer *buf
       img_bsurf.format = vk_format_for_size(vk_format_get_blocksize(img_bsurf.format));
    }
 
+   const struct vk_image_buffer_layout buf_layout = vk_image_buffer_copy_layout(&image->vk, region);
    struct radv_meta_blit2d_buffer buf_bsurf = {
       .bs = img_bsurf.bs,
       .format = img_bsurf.format,
       .buffer = buffer,
       .offset = region->bufferOffset,
-      .pitch = buf_extent_el.width,
+      .pitch = buf_layout.row_stride_B / buf_layout.element_size_B,
    };
 
    if (image->vk.image_type == VK_IMAGE_TYPE_3D)
@@ -191,7 +187,7 @@ copy_buffer_to_image(struct radv_cmd_buffer *cmd_buffer, struct radv_buffer *buf
        * increment the offset directly in the image effectively
        * re-binding it to different backing memory.
        */
-      buf_bsurf.offset += buf_extent_el.width * buf_extent_el.height * buf_bsurf.bs;
+      buf_bsurf.offset += buf_layout.image_stride_B;
       img_bsurf.layer++;
       if (image->vk.image_type == VK_IMAGE_TYPE_3D)
          slice_3d++;



More information about the mesa-commit mailing list