mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-05-06 01:50:38 +00:00
Clean up vulkan creation info when destroying objects
* Otherwise internal resources like pipelines for mesh-output fetch can lurk around in the creation info structures and cause problems when e.g. editing shaders.
This commit is contained in:
@@ -502,4 +502,26 @@ struct VulkanCreationInfo
|
||||
|
||||
// just contains the queueFamilyIndex (after remapping)
|
||||
std::map<ResourceId, uint32_t> 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);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -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); \
|
||||
}
|
||||
|
||||
@@ -512,6 +512,7 @@ void WrappedVulkan::vkFreeMemory(VkDevice device, VkDeviceMemory memory,
|
||||
}
|
||||
|
||||
m_ForcedReferences.erase(GetResID(memory));
|
||||
m_CreationInfo.erase(GetResID(memory));
|
||||
|
||||
GetResourceManager()->ReleaseWrappedResource(memory);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user