Mesa (master): v3dv: update assertion to match VK_KHR_maintenance1 semantics

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Mon Nov 2 08:42:40 UTC 2020


Module: Mesa
Branch: master
Commit: 0dedee7636e8fa64734dfb1c8f740b3665b52607
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=0dedee7636e8fa64734dfb1c8f740b3665b52607

Author: Iago Toral Quiroga <itoral at igalia.com>
Date:   Wed Oct 28 09:58:35 2020 +0100

v3dv: update assertion to match VK_KHR_maintenance1 semantics

Fixes crashes in:
dEQP-VK.api.copy_and_blit.core.image_to_image.3d_images.*

Reviewed-by: Alejandro Piñeiro <apinheiro at igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7364>

---

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

diff --git a/src/broadcom/vulkan/v3dv_meta_copy.c b/src/broadcom/vulkan/v3dv_meta_copy.c
index 72fb8926dc1..3b91589e26d 100644
--- a/src/broadcom/vulkan/v3dv_meta_copy.c
+++ b/src/broadcom/vulkan/v3dv_meta_copy.c
@@ -1295,12 +1295,16 @@ copy_image_tlb(struct v3dv_cmd_buffer *cmd_buffer,
                                            region->dstSubresource.aspectMask,
                                            &internal_type, &internal_bpp);
 
-   /* From the Vulkan spec, VkImageCopy valid usage:
+   /* From the Vulkan spec with VK_KHR_maintenance1, VkImageCopy valid usage:
     *
-    * "The layerCount member of srcSubresource and dstSubresource must match"
+    * "The number of slices of the extent (for 3D) or layers of the
+    *  srcSubresource (for non-3D) must match the number of slices of the
+    *  extent (for 3D) or layers of the dstSubresource (for non-3D)."
     */
-   assert(region->srcSubresource.layerCount ==
-          region->dstSubresource.layerCount);
+   assert((src->type != VK_IMAGE_TYPE_3D ?
+           region->srcSubresource.layerCount : region->extent.depth) ==
+          (dst->type != VK_IMAGE_TYPE_3D ?
+           region->dstSubresource.layerCount : region->extent.depth));
    uint32_t num_layers;
    if (dst->type != VK_IMAGE_TYPE_3D)
       num_layers = region->dstSubresource.layerCount;



More information about the mesa-commit mailing list