diff --git a/renderdoc/driver/vulkan/vk_info.h b/renderdoc/driver/vulkan/vk_info.h index dff693511..44882c1ee 100644 --- a/renderdoc/driver/vulkan/vk_info.h +++ b/renderdoc/driver/vulkan/vk_info.h @@ -502,4 +502,26 @@ struct VulkanCreationInfo // just contains the queueFamilyIndex (after remapping) std::map m_Queue; + + void erase(ResourceId id) + { + m_Pipeline.erase(id); + m_PipelineLayout.erase(id); + m_RenderPass.erase(id); + m_Framebuffer.erase(id); + m_Memory.erase(id); + m_Buffer.erase(id); + m_BufferView.erase(id); + m_Image.erase(id); + m_Sampler.erase(id); + m_YCbCrSampler.erase(id); + m_ImageView.erase(id); + m_ShaderModule.erase(id); + m_DescSetPool.erase(id); + m_Names.erase(id); + m_SwapChain.erase(id); + m_DescSetLayout.erase(id); + m_DescUpdateTemplate.erase(id); + m_Queue.erase(id); + } }; diff --git a/renderdoc/driver/vulkan/wrappers/vk_misc_funcs.cpp b/renderdoc/driver/vulkan/wrappers/vk_misc_funcs.cpp index ef48f5546..64f70000c 100644 --- a/renderdoc/driver/vulkan/wrappers/vk_misc_funcs.cpp +++ b/renderdoc/driver/vulkan/wrappers/vk_misc_funcs.cpp @@ -96,6 +96,8 @@ VkFramebufferCreateInfo WrappedVulkan::UnwrapInfo(const VkFramebufferCreateInfo return; \ type unwrappedObj = Unwrap(obj); \ m_ForcedReferences.erase(GetResID(obj)); \ + if(IsReplayMode(m_State)) \ + m_CreationInfo.erase(GetResID(obj)); \ GetResourceManager()->ReleaseWrappedResource(obj, true); \ ObjDisp(device)->func(Unwrap(device), unwrappedObj, pAllocator); \ } diff --git a/renderdoc/driver/vulkan/wrappers/vk_resource_funcs.cpp b/renderdoc/driver/vulkan/wrappers/vk_resource_funcs.cpp index b18992216..585707d2d 100644 --- a/renderdoc/driver/vulkan/wrappers/vk_resource_funcs.cpp +++ b/renderdoc/driver/vulkan/wrappers/vk_resource_funcs.cpp @@ -512,6 +512,7 @@ void WrappedVulkan::vkFreeMemory(VkDevice device, VkDeviceMemory memory, } m_ForcedReferences.erase(GetResID(memory)); + m_CreationInfo.erase(GetResID(memory)); GetResourceManager()->ReleaseWrappedResource(memory);