diff --git a/renderdoc/driver/vulkan/vk_core.cpp b/renderdoc/driver/vulkan/vk_core.cpp index 341a33951..2e6244195 100644 --- a/renderdoc/driver/vulkan/vk_core.cpp +++ b/renderdoc/driver/vulkan/vk_core.cpp @@ -1074,7 +1074,7 @@ DESTROY_IMPL(VkSwapChainWSI, DestroySwapChainWSI) VkResult WrappedVulkan::vkDestroyCommandBuffer(VkDevice device, VkCmdBuffer obj) { WrappedVkDispRes *wrapped = (WrappedVkDispRes *)GetWrapped(obj); - GetResourceManager()->MarkCleanResource(wrapped->id); + if(wrapped->record) { if(wrapped->record->bakedCommands) @@ -1083,8 +1083,13 @@ VkResult WrappedVulkan::vkDestroyCommandBuffer(VkDevice device, VkCmdBuffer obj) wrapped->record->bakedCommands = NULL; } wrapped->record->Delete(GetResourceManager()); + wrapped->record = NULL; } - return ObjDisp(device)->DestroyCommandBuffer(Unwrap(device), wrapped->real.As()); + VkResult ret = ObjDisp(device)->DestroyCommandBuffer(Unwrap(device), wrapped->real.As()); + + GetResourceManager()->ReleaseWrappedResource(obj); + + return ret; }