From ba578ed15f2a10d753848badf4825f0a591c917d Mon Sep 17 00:00:00 2001 From: baldurk Date: Mon, 13 Oct 2025 13:35:31 +0100 Subject: [PATCH] Handle maintenance9 handling of 3D barriers to internal transitions --- renderdoc/driver/vulkan/vk_image_states.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/renderdoc/driver/vulkan/vk_image_states.cpp b/renderdoc/driver/vulkan/vk_image_states.cpp index 4138d2191..305d242b8 100644 --- a/renderdoc/driver/vulkan/vk_image_states.cpp +++ b/renderdoc/driver/vulkan/vk_image_states.cpp @@ -1234,6 +1234,12 @@ void ImageState::ResetToOldState(ImageBarrierSequence &barriers, ImageTransition /* image = */ wrappedHandle, /* subresourceRange = */ subRange, }; + if(GetImageInfo().imageType == VK_IMAGE_TYPE_3D) + { + RDCASSERTEQUAL(subRange.baseArrayLayer, 0); + RDCASSERTEQUAL(subRange.layerCount, 1); + barrier.subresourceRange.layerCount = VK_REMAINING_ARRAY_LAYERS; + } barriers.AddWrapped(MAIN_BATCH_INDEX, submitQueueFamilyIndex, barrier); // acquire the subresource in the dstQueueFamily, if necessary @@ -1390,6 +1396,13 @@ void ImageState::Transition(const ImageState &dstState, VkAccessFlags srcAccessM /* layerCount = */ endArrayLayer - baseArrayLayer, }, }; + if(GetImageInfo().imageType == VK_IMAGE_TYPE_3D) + { + RDCASSERTEQUAL(baseArrayLayer, 0); + RDCASSERTEQUAL(barrier.subresourceRange.layerCount, 1); + barrier.subresourceRange.layerCount = VK_REMAINING_ARRAY_LAYERS; + } + barriers.AddWrapped(MAIN_BATCH_INDEX, submitQueueFamilyIndex, barrier); // acquire the subresource in the dstQueueFamily, if necessary