From 0d2ebca39fd2a68bfb64dc2196e442e25dc90334 Mon Sep 17 00:00:00 2001 From: "Juan A. Suarez Romero" Date: Fri, 21 Mar 2025 12:28:15 +0100 Subject: [PATCH] v3dv: include depth offset on image view creation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When creating the image view in the texel buffer shader copy function, take in account the region to copy can start in a different Z-offset than 0. This fixes several dEQP-VK.image.concurrent_copy.* failing tests. Signed-off-by: Juan A. Suarez Romero Reviewed-by: Alejandro PiƱeiro Reviewed-by: Iago Toral Quiroga Part-of: --- src/broadcom/vulkan/v3dv_meta_copy.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/broadcom/vulkan/v3dv_meta_copy.c b/src/broadcom/vulkan/v3dv_meta_copy.c index a3796976708..673cdca9f99 100644 --- a/src/broadcom/vulkan/v3dv_meta_copy.c +++ b/src/broadcom/vulkan/v3dv_meta_copy.c @@ -2631,14 +2631,13 @@ texel_buffer_shader_copy(struct v3dv_cmd_buffer *cmd_buffer, * * If we are batching (region_count > 1) all our regions have the same * image subresource so we can take this from the first region. For 3D - * images we require the same depth extent. + * images we require the same depth extent and Z offset. */ const VkImageSubresourceLayers *resource = ®ions[0].imageSubresource; uint32_t num_layers; if (image->vk.image_type != VK_IMAGE_TYPE_3D) { num_layers = vk_image_subresource_layer_count(&image->vk, resource); } else { - assert(region_count == 1); num_layers = regions[0].imageExtent.depth; } assert(num_layers > 0); @@ -2732,7 +2731,7 @@ texel_buffer_shader_copy(struct v3dv_cmd_buffer *cmd_buffer, .aspectMask = aspect, .baseMipLevel = resource->mipLevel, .levelCount = 1, - .baseArrayLayer = resource->baseArrayLayer, + .baseArrayLayer = resource->baseArrayLayer + regions[0].imageOffset.z, .layerCount = num_layers, }, };