From 3ba839bf734f37f50dfc5ffbe26af70763f974a2 Mon Sep 17 00:00:00 2001 From: Iago Toral Quiroga Date: Wed, 24 May 2023 09:00:48 +0200 Subject: [PATCH] v3dv: align compressed image regions to block size MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 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 Part-of: --- 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 0ccfcfb..7cb3088 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, }; -- 2.7.4