From 470d6ce682141a8f2368c40fd019cd80936f625c Mon Sep 17 00:00:00 2001 From: baldurk Date: Fri, 9 Aug 2019 12:16:51 +0100 Subject: [PATCH] Add some missing image layout sanitisation --- renderdoc/driver/vulkan/vk_rendertexture.cpp | 3 +++ renderdoc/driver/vulkan/vk_replay.cpp | 10 ++++++++++ 2 files changed, 13 insertions(+) diff --git a/renderdoc/driver/vulkan/vk_rendertexture.cpp b/renderdoc/driver/vulkan/vk_rendertexture.cpp index ed44e39df..a80516fa8 100644 --- a/renderdoc/driver/vulkan/vk_rendertexture.cpp +++ b/renderdoc/driver/vulkan/vk_rendertexture.cpp @@ -596,6 +596,9 @@ bool VulkanReplay::RenderTextureInternal(TextureDisplay cfg, VkRenderPassBeginIn srcimBarrier.subresourceRange = layouts.subresourceStates[si].subresourceRange; srcimBarrier.newLayout = layouts.subresourceStates[si].newLayout; srcimBarrier.dstAccessMask = MakeAccessMask(srcimBarrier.newLayout); + + SanitiseNewImageLayout(srcimBarrier.newLayout); + DoPipelineBarrier(cmd, 1, &srcimBarrier); if(extQCmd != VK_NULL_HANDLE) diff --git a/renderdoc/driver/vulkan/vk_replay.cpp b/renderdoc/driver/vulkan/vk_replay.cpp index 5047765a5..7ab7abaa7 100644 --- a/renderdoc/driver/vulkan/vk_replay.cpp +++ b/renderdoc/driver/vulkan/vk_replay.cpp @@ -2037,6 +2037,7 @@ bool VulkanReplay::GetMinMax(ResourceId texid, uint32_t sliceFace, uint32_t mip, { srcimBarrier.subresourceRange = layouts.subresourceStates[si].subresourceRange; srcimBarrier.oldLayout = layouts.subresourceStates[si].newLayout; + SanitiseOldImageLayout(srcimBarrier.oldLayout); DoPipelineBarrier(cmd, 1, &srcimBarrier); } @@ -2063,6 +2064,7 @@ bool VulkanReplay::GetMinMax(ResourceId texid, uint32_t sliceFace, uint32_t mip, srcimBarrier.subresourceRange = layouts.subresourceStates[si].subresourceRange; srcimBarrier.newLayout = layouts.subresourceStates[si].newLayout; srcimBarrier.dstAccessMask = MakeAccessMask(srcimBarrier.newLayout); + SanitiseNewImageLayout(srcimBarrier.newLayout); DoPipelineBarrier(cmd, 1, &srcimBarrier); } @@ -2368,6 +2370,7 @@ bool VulkanReplay::GetHistogram(ResourceId texid, uint32_t sliceFace, uint32_t m { srcimBarrier.subresourceRange = layouts.subresourceStates[si].subresourceRange; srcimBarrier.oldLayout = layouts.subresourceStates[si].newLayout; + SanitiseOldImageLayout(srcimBarrier.oldLayout); DoPipelineBarrier(cmd, 1, &srcimBarrier); } @@ -2397,6 +2400,7 @@ bool VulkanReplay::GetHistogram(ResourceId texid, uint32_t sliceFace, uint32_t m srcimBarrier.subresourceRange = layouts.subresourceStates[si].subresourceRange; srcimBarrier.newLayout = layouts.subresourceStates[si].newLayout; srcimBarrier.dstAccessMask = MakeAccessMask(srcimBarrier.newLayout); + SanitiseNewImageLayout(srcimBarrier.newLayout); DoPipelineBarrier(cmd, 1, &srcimBarrier); } @@ -2848,6 +2852,7 @@ void VulkanReplay::GetTextureData(ResourceId tex, uint32_t arrayIdx, uint32_t mi { srcimBarrier.subresourceRange = layouts.subresourceStates[si].subresourceRange; srcimBarrier.oldLayout = layouts.subresourceStates[si].newLayout; + SanitiseOldImageLayout(srcimBarrier.oldLayout); DoPipelineBarrier(cmd, 1, &srcimBarrier); if(extQCmd != VK_NULL_HANDLE) @@ -2887,6 +2892,7 @@ void VulkanReplay::GetTextureData(ResourceId tex, uint32_t arrayIdx, uint32_t mi { srcimBarrier.subresourceRange = layouts.subresourceStates[si].subresourceRange; srcimBarrier.newLayout = layouts.subresourceStates[si].newLayout; + SanitiseNewImageLayout(srcimBarrier.newLayout); DoPipelineBarrier(cmd, 1, &srcimBarrier); if(extQCmd != VK_NULL_HANDLE) @@ -3007,6 +3013,7 @@ void VulkanReplay::GetTextureData(ResourceId tex, uint32_t arrayIdx, uint32_t mi { srcimBarrier.subresourceRange = layouts.subresourceStates[si].subresourceRange; srcimBarrier.oldLayout = layouts.subresourceStates[si].newLayout; + SanitiseOldImageLayout(srcimBarrier.oldLayout); DoPipelineBarrier(cmd, 1, &srcimBarrier); if(extQCmd != VK_NULL_HANDLE) @@ -3059,6 +3066,7 @@ void VulkanReplay::GetTextureData(ResourceId tex, uint32_t arrayIdx, uint32_t mi srcimBarrier.subresourceRange = layouts.subresourceStates[si].subresourceRange; srcimBarrier.newLayout = layouts.subresourceStates[si].newLayout; srcimBarrier.dstAccessMask = MakeAccessMask(srcimBarrier.newLayout); + SanitiseNewImageLayout(srcimBarrier.newLayout); DoPipelineBarrier(cmd, 1, &srcimBarrier); if(extQCmd != VK_NULL_HANDLE) @@ -3133,6 +3141,7 @@ void VulkanReplay::GetTextureData(ResourceId tex, uint32_t arrayIdx, uint32_t mi { srcimBarrier.subresourceRange = layouts.subresourceStates[si].subresourceRange; srcimBarrier.oldLayout = layouts.subresourceStates[si].newLayout; + SanitiseOldImageLayout(srcimBarrier.oldLayout); DoPipelineBarrier(cmd, 1, &srcimBarrier); if(extQCmd != VK_NULL_HANDLE) @@ -3281,6 +3290,7 @@ void VulkanReplay::GetTextureData(ResourceId tex, uint32_t arrayIdx, uint32_t mi srcimBarrier.subresourceRange = layouts.subresourceStates[si].subresourceRange; srcimBarrier.newLayout = layouts.subresourceStates[si].newLayout; srcimBarrier.dstAccessMask = MakeAccessMask(srcimBarrier.newLayout); + SanitiseNewImageLayout(srcimBarrier.newLayout); DoPipelineBarrier(cmd, 1, &srcimBarrier); if(extQCmd != VK_NULL_HANDLE)