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

Author: Iago Toral Quiroga <[email protected]>
Date:   Wed May 24 09:00:48 2023 +0200

v3dv: align compressed image regions to block size

This fixes an assert crash in UE4 when forcing the blit path for
image copies, caused by an image copy of a small miplevel which
pixel size is smaller than a single compressed block, leading to
an empty blit region.

Reviewed-by: Alejandro PiƱeiro <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23180>

---

 src/broadcom/vulkan/v3dv_meta_copy.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/broadcom/vulkan/v3dv_meta_copy.c 
b/src/broadcom/vulkan/v3dv_meta_copy.c
index 0ccfcfbbbb2..7cb30888447 100644
--- a/src/broadcom/vulkan/v3dv_meta_copy.c
+++ b/src/broadcom/vulkan/v3dv_meta_copy.c
@@ -1213,8 +1213,8 @@ copy_image_blit(struct v3dv_cmd_buffer *cmd_buffer,
       region->srcOffset.z,
    };
    const VkOffset3D src_end = {
-      src_start.x + region->extent.width * src_scale_w,
-      src_start.y + region->extent.height * src_scale_h,
+      src_start.x + align(region->extent.width, src_block_w) * src_scale_w,
+      src_start.y + align(region->extent.height, src_block_h) * src_scale_h,
       src_start.z + region->extent.depth,
    };
 
@@ -1224,8 +1224,8 @@ copy_image_blit(struct v3dv_cmd_buffer *cmd_buffer,
       region->dstOffset.z,
    };
    const VkOffset3D dst_end = {
-      dst_start.x + region->extent.width * src_scale_w,
-      dst_start.y + region->extent.height * src_scale_h,
+      dst_start.x + align(region->extent.width, src_block_w) * src_scale_w,
+      dst_start.y + align(region->extent.height, src_block_h) * src_scale_h,
       dst_start.z + region->extent.depth,
    };
 

Reply via email to