From 5b6495a953bd4c453e082814d1d02f05ee5d3d2f Mon Sep 17 00:00:00 2001 From: Iago Toral Quiroga Date: Mon, 3 Jun 2024 13:22:26 +0200 Subject: [PATCH] v3dv: fix a few asserts that check layerCount instead of array_layers MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The intent behind these asserts is to ensure the layer is within bounds, so we rather check it is within the image layer count than within the layerCount of the image subresource passed by the API. Reviewed-by: Alejandro PiƱeiro Part-of: --- src/broadcom/vulkan/v3dvx_meta_common.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/broadcom/vulkan/v3dvx_meta_common.c b/src/broadcom/vulkan/v3dvx_meta_common.c index 858096f9e4b..98183b2b4bb 100644 --- a/src/broadcom/vulkan/v3dvx_meta_common.c +++ b/src/broadcom/vulkan/v3dvx_meta_common.c @@ -582,7 +582,7 @@ emit_copy_layer_to_buffer_per_tile_list(struct v3dv_job *job, /* Load image to TLB */ assert((image->vk.image_type != VK_IMAGE_TYPE_3D && - layer_offset < region->imageSubresource.layerCount) || + layer_offset < image->vk.array_layers) || layer_offset < image->vk.extent.depth); const uint32_t image_layer = image->vk.image_type != VK_IMAGE_TYPE_3D ? @@ -691,7 +691,7 @@ emit_resolve_image_layer_per_tile_list(struct v3dv_job *job, cl_emit(cl, TILE_COORDINATES_IMPLICIT, coords); assert((src->vk.image_type != VK_IMAGE_TYPE_3D && - layer_offset < region->srcSubresource.layerCount) || + layer_offset < src->vk.array_layers) || layer_offset < src->vk.extent.depth); const uint32_t src_layer = src->vk.image_type != VK_IMAGE_TYPE_3D ? @@ -709,7 +709,7 @@ emit_resolve_image_layer_per_tile_list(struct v3dv_job *job, cl_emit(cl, BRANCH_TO_IMPLICIT_TILE_LIST, branch); assert((dst->vk.image_type != VK_IMAGE_TYPE_3D && - layer_offset < region->dstSubresource.layerCount) || + layer_offset < dst->vk.array_layers) || layer_offset < dst->vk.extent.depth); const uint32_t dst_layer = dst->vk.image_type != VK_IMAGE_TYPE_3D ? @@ -855,7 +855,7 @@ emit_copy_image_layer_per_tile_list(struct v3dv_job *job, cl_emit(cl, TILE_COORDINATES_IMPLICIT, coords); assert((src->vk.image_type != VK_IMAGE_TYPE_3D && - layer_offset < region->srcSubresource.layerCount) || + layer_offset < src->vk.array_layers) || layer_offset < src->vk.extent.depth); const uint32_t src_layer = src->vk.image_type != VK_IMAGE_TYPE_3D ? @@ -873,7 +873,7 @@ emit_copy_image_layer_per_tile_list(struct v3dv_job *job, cl_emit(cl, BRANCH_TO_IMPLICIT_TILE_LIST, branch); assert((dst->vk.image_type != VK_IMAGE_TYPE_3D && - layer_offset < region->dstSubresource.layerCount) || + layer_offset < dst->vk.array_layers) || layer_offset < dst->vk.extent.depth); const uint32_t dst_layer = dst->vk.image_type != VK_IMAGE_TYPE_3D ? @@ -1192,8 +1192,7 @@ emit_copy_buffer_to_layer_per_tile_list(struct v3dv_job *job, cl_emit(cl, TILE_COORDINATES_IMPLICIT, coords); - const VkImageSubresourceLayers *imgrsc = ®ion->imageSubresource; - assert((image->vk.image_type != VK_IMAGE_TYPE_3D && layer < imgrsc->layerCount) || + assert((image->vk.image_type != VK_IMAGE_TYPE_3D && layer < image->vk.array_layers) || layer < image->vk.extent.depth); /* Load TLB from buffer */ @@ -1212,6 +1211,7 @@ emit_copy_buffer_to_layer_per_tile_list(struct v3dv_job *job, width = DIV_ROUND_UP(width, vk_format_get_blockwidth(image->vk.format)); height = DIV_ROUND_UP(height, vk_format_get_blockheight(image->vk.format)); + const VkImageSubresourceLayers *imgrsc = ®ion->imageSubresource; uint8_t plane = v3dv_plane_from_aspect(imgrsc->aspectMask); uint32_t cpp = imgrsc->aspectMask & VK_IMAGE_ASPECT_STENCIL_BIT ? 1 : image->planes[plane].cpp;