Sanitise renderpass barrier layouts before applying them

This commit is contained in:
baldurk
2022-02-24 13:38:14 +00:00
parent 522a947aac
commit d57a8dc5d9
@@ -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) {