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) {