From e73c4ce7c526625aa704247ee5919cfc678674dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Iv=C3=A1n=20Briano?= Date: Wed, 29 Jan 2025 14:59:33 -0800 Subject: [PATCH] anv: handle REMAINING_LAYERS in host image copy cases Signed-off-by: Lionel Landwerlin Part-of: --- src/intel/vulkan/anv_image_host_copy.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/intel/vulkan/anv_image_host_copy.c b/src/intel/vulkan/anv_image_host_copy.c index 18799dbbf0b..69f63309a2a 100644 --- a/src/intel/vulkan/anv_image_host_copy.c +++ b/src/intel/vulkan/anv_image_host_copy.c @@ -268,7 +268,9 @@ anv_CopyMemoryToImageEXT( VkExtent3D extent_el = vk_extent3d_to_el(surf->format, region->imageExtent); - for (uint32_t a = 0; a < region->imageSubresource.layerCount; a++) { + uint32_t layer_count = + vk_image_subresource_layer_count(&image->vk, ®ion->imageSubresource); + for (uint32_t a = 0; a < layer_count; a++) { for (uint32_t z = 0; z < region->imageExtent.depth; z++) { if ((pCopyMemoryToImageInfo->flags & VK_HOST_IMAGE_COPY_MEMCPY_EXT) && @@ -336,7 +338,9 @@ anv_CopyImageToMemoryEXT( region->memoryImageHeight, ®ion->imageExtent); - for (uint32_t a = 0; a < region->imageSubresource.layerCount; a++) { + uint32_t layer_count = + vk_image_subresource_layer_count(&image->vk, ®ion->imageSubresource); + for (uint32_t a = 0; a < layer_count; a++) { for (uint32_t z = 0; z < region->imageExtent.depth; z++) { if ((pCopyImageToMemoryInfo->flags & VK_HOST_IMAGE_COPY_MEMCPY_EXT) && @@ -439,7 +443,9 @@ anv_CopyImageToImageEXT( tile_width_B = tile_width_el * src_tile.format_bpb / 8; } - for (uint32_t a = 0; a < region->srcSubresource.layerCount; a++) { + uint32_t layer_count = + vk_image_subresource_layer_count(&src_image->vk, ®ion->srcSubresource); + for (uint32_t a = 0; a < layer_count; a++) { for (uint32_t z = 0; z < region->extent.depth; z++) { for (uint32_t y_el = 0; y_el < extent_el.height; y_el += tile_height_el) { for (uint32_t x_el = 0; x_el < extent_el.width; x_el += tile_width_el) {