From d57a8dc5d9f00fa3e3befeef1709cfe5a7469446 Mon Sep 17 00:00:00 2001 From: baldurk Date: Thu, 24 Feb 2022 13:38:14 +0000 Subject: [PATCH] Sanitise renderpass barrier layouts before applying them --- renderdoc/driver/vulkan/wrappers/vk_cmd_funcs.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/renderdoc/driver/vulkan/wrappers/vk_cmd_funcs.cpp b/renderdoc/driver/vulkan/wrappers/vk_cmd_funcs.cpp index 50f6036fe..53a417e25 100644 --- a/renderdoc/driver/vulkan/wrappers/vk_cmd_funcs.cpp +++ b/renderdoc/driver/vulkan/wrappers/vk_cmd_funcs.cpp @@ -1487,8 +1487,14 @@ bool WrappedVulkan::Serialise_vkEndCommandBuffer(SerialiserType &ser, VkCommandB // do the barriers in reverse order std::reverse(endBarriers.begin(), endBarriers.end()); for(VkImageMemoryBarrier &barrier : endBarriers) + { std::swap(barrier.oldLayout, barrier.newLayout); + // sanitise layouts before passing to vulkan + SanitiseOldImageLayout(barrier.oldLayout); + SanitiseReplayImageLayout(barrier.newLayout); + } + // it's unnecessary to replay barriers towards an undefined layout, since every layout // can be considered as undefined endBarriers.removeIf([](const VkImageMemoryBarrier &b) {