From f8cbc558db642ebefcbf78d78c936cdfe0b11f4a Mon Sep 17 00:00:00 2001 From: Lionel Landwerlin Date: Thu, 7 Aug 2025 12:30:56 +0300 Subject: [PATCH] vulkan/render_pass: fixup renderpasses barriers for 2D views of 3D images With maintenance9 enabled Spec clarification : https://gitlab.khronos.org/vulkan/vulkan/-/merge_requests/7629 Fixes: 595889018a ("anv: implement VK_KHR_maintenance9") Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/13669 Reviewed-by: Alyssa Anne Rosenzweig Part-of: --- src/vulkan/runtime/vk_render_pass.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/vulkan/runtime/vk_render_pass.c b/src/vulkan/runtime/vk_render_pass.c index 0e588a19379..7722fd63023 100644 --- a/src/vulkan/runtime/vk_render_pass.c +++ b/src/vulkan/runtime/vk_render_pass.c @@ -1706,8 +1706,14 @@ transition_attachment(struct vk_command_buffer *cmd_buffer, if (image_view->image->image_type == VK_IMAGE_TYPE_3D) { /* 3D is stupidly special. See transition_view_mask() */ assert(view == 0); - range.baseArrayLayer = 0; - range.layerCount = image_view->extent.depth; + if (image_view->view_type == VK_IMAGE_VIEW_TYPE_2D && + cmd_buffer->base.device->enabled_features.maintenance9) { + range.baseArrayLayer = image_view->base_array_layer; + range.layerCount = image_view->layer_count; + } else { + range.baseArrayLayer = 0; + range.layerCount = image_view->extent.depth; + } } else if (pass->is_multiview) { range.baseArrayLayer = image_view->base_array_layer + view; range.layerCount = 1;