From 104072debe5a3db8379850a985b2ad09b4e3c5da Mon Sep 17 00:00:00 2001 From: baldurk Date: Fri, 3 Aug 2018 14:07:03 +0100 Subject: [PATCH] Only mark resources as dirty if they are still alive * We can have dangling references to resources due to descriptor binding references, so ignore any IDs that are no longer valid. --- renderdoc/driver/vulkan/wrappers/vk_queue_funcs.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/renderdoc/driver/vulkan/wrappers/vk_queue_funcs.cpp b/renderdoc/driver/vulkan/wrappers/vk_queue_funcs.cpp index 57704feaf..c5c9b6eb5 100644 --- a/renderdoc/driver/vulkan/wrappers/vk_queue_funcs.cpp +++ b/renderdoc/driver/vulkan/wrappers/vk_queue_funcs.cpp @@ -589,7 +589,10 @@ VkResult WrappedVulkan::vkQueueSubmit(VkQueue queue, uint32_t submitCount, { for(auto it = record->bakedCommands->cmdInfo->dirtied.begin(); it != record->bakedCommands->cmdInfo->dirtied.end(); ++it) - GetResourceManager()->MarkPendingDirty(*it); + { + if(GetResourceManager()->HasCurrentResource(*it)) + GetResourceManager()->MarkPendingDirty(*it); + } capframe = true; } @@ -597,7 +600,10 @@ VkResult WrappedVulkan::vkQueueSubmit(VkQueue queue, uint32_t submitCount, { for(auto it = record->bakedCommands->cmdInfo->dirtied.begin(); it != record->bakedCommands->cmdInfo->dirtied.end(); ++it) - GetResourceManager()->MarkDirtyResource(*it); + { + if(GetResourceManager()->HasCurrentResource(*it)) + GetResourceManager()->MarkDirtyResource(*it); + } } }