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 <alyssa.rosenzweig@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36624>
(cherry picked from commit f8cbc558db)
This commit is contained in:
Lionel Landwerlin 2025-08-07 12:30:56 +03:00 committed by Eric Engestrom
parent bec7631855
commit c0f6c28415
2 changed files with 9 additions and 3 deletions

View file

@ -4844,7 +4844,7 @@
"description": "vulkan/render_pass: fixup renderpasses barriers for 2D views of 3D images",
"nominated": true,
"nomination_type": 2,
"resolution": 0,
"resolution": 1,
"main_sha": null,
"because_sha": "595889018ad4fa3e2c593a13d640c9eee26336c7",
"notes": null

View file

@ -1633,8 +1633,14 @@ transition_attachment(struct vk_command_buffer *cmd_buffer,
*/
if (image_view->image->image_type == VK_IMAGE_TYPE_3D) {
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;