diff --git a/renderdoc/driver/vulkan/wrappers/vk_misc_funcs.cpp b/renderdoc/driver/vulkan/wrappers/vk_misc_funcs.cpp index 81dbf7a0d..a62af0fb9 100644 --- a/renderdoc/driver/vulkan/wrappers/vk_misc_funcs.cpp +++ b/renderdoc/driver/vulkan/wrappers/vk_misc_funcs.cpp @@ -188,81 +188,138 @@ bool WrappedVulkan::ReleaseResource(WrappedVkRes *res) break; case eResDeviceMemory: - vt->FreeMemory(Unwrap(dev), nondisp->real.As(), NULL); + { + VkDeviceMemory real = nondisp->real.As(); GetResourceManager()->ReleaseWrappedResource(VkDeviceMemory(handle)); + vt->FreeMemory(Unwrap(dev), real, NULL); break; + } case eResBuffer: - vt->DestroyBuffer(Unwrap(dev), nondisp->real.As(), NULL); + { + VkBuffer real = nondisp->real.As(); GetResourceManager()->ReleaseWrappedResource(VkBuffer(handle)); + vt->DestroyBuffer(Unwrap(dev), real, NULL); break; + } case eResBufferView: - vt->DestroyBufferView(Unwrap(dev), nondisp->real.As(), NULL); + { + VkBufferView real = nondisp->real.As(); GetResourceManager()->ReleaseWrappedResource(VkBufferView(handle)); + vt->DestroyBufferView(Unwrap(dev), real, NULL); break; + } case eResImage: - vt->DestroyImage(Unwrap(dev), nondisp->real.As(), NULL); + { + VkImage real = nondisp->real.As(); GetResourceManager()->ReleaseWrappedResource(VkImage(handle)); + vt->DestroyImage(Unwrap(dev), real, NULL); break; + } case eResImageView: - vt->DestroyImageView(Unwrap(dev), nondisp->real.As(), NULL); + { + VkImageView real = nondisp->real.As(); GetResourceManager()->ReleaseWrappedResource(VkImageView(handle)); + vt->DestroyImageView(Unwrap(dev), real, NULL); break; + } case eResFramebuffer: - vt->DestroyFramebuffer(Unwrap(dev), nondisp->real.As(), NULL); + { + VkFramebuffer real = nondisp->real.As(); GetResourceManager()->ReleaseWrappedResource(VkFramebuffer(handle)); + vt->DestroyFramebuffer(Unwrap(dev), real, NULL); break; + } case eResRenderPass: - vt->DestroyRenderPass(Unwrap(dev), nondisp->real.As(), NULL); + { + VkRenderPass real = nondisp->real.As(); GetResourceManager()->ReleaseWrappedResource(VkRenderPass(handle)); + vt->DestroyRenderPass(Unwrap(dev), real, NULL); break; + } case eResShaderModule: - vt->DestroyShaderModule(Unwrap(dev), nondisp->real.As(), NULL); + { + VkShaderModule real = nondisp->real.As(); GetResourceManager()->ReleaseWrappedResource(VkShaderModule(handle)); + vt->DestroyShaderModule(Unwrap(dev), real, NULL); break; + } case eResPipelineCache: - vt->DestroyPipelineCache(Unwrap(dev), nondisp->real.As(), NULL); + { + VkPipelineCache real = nondisp->real.As(); GetResourceManager()->ReleaseWrappedResource(VkPipelineCache(handle)); + vt->DestroyPipelineCache(Unwrap(dev), real, NULL); break; + } case eResPipelineLayout: - vt->DestroyPipelineLayout(Unwrap(dev), nondisp->real.As(), NULL); + { + VkPipelineLayout real = nondisp->real.As(); GetResourceManager()->ReleaseWrappedResource(VkPipelineLayout(handle)); + vt->DestroyPipelineLayout(Unwrap(dev), real, NULL); break; + } case eResPipeline: - vt->DestroyPipeline(Unwrap(dev), nondisp->real.As(), NULL); + { + VkPipeline real = nondisp->real.As(); GetResourceManager()->ReleaseWrappedResource(VkPipeline(handle)); + vt->DestroyPipeline(Unwrap(dev), real, NULL); break; + } case eResSampler: - vt->DestroySampler(Unwrap(dev), nondisp->real.As(), NULL); + { + VkSampler real = nondisp->real.As(); GetResourceManager()->ReleaseWrappedResource(VkSampler(handle)); + vt->DestroySampler(Unwrap(dev), real, NULL); break; + } case eResDescriptorPool: - vt->DestroyDescriptorPool(Unwrap(dev), nondisp->real.As(), NULL); + { + VkDescriptorPool real = nondisp->real.As(); GetResourceManager()->ReleaseWrappedResource(VkDescriptorPool(handle)); + vt->DestroyDescriptorPool(Unwrap(dev), real, NULL); break; + } case eResDescriptorSetLayout: - vt->DestroyDescriptorSetLayout(Unwrap(dev), nondisp->real.As(), NULL); + { + VkDescriptorSetLayout real = nondisp->real.As(); GetResourceManager()->ReleaseWrappedResource(VkDescriptorSetLayout(handle)); + vt->DestroyDescriptorSetLayout(Unwrap(dev), real, NULL); break; + } case eResCommandPool: - vt->DestroyCommandPool(Unwrap(dev), nondisp->real.As(), NULL); + { + VkCommandPool real = nondisp->real.As(); GetResourceManager()->ReleaseWrappedResource(VkCommandPool(handle)); + vt->DestroyCommandPool(Unwrap(dev), real, NULL); break; + } case eResFence: - vt->DestroyFence(Unwrap(dev), nondisp->real.As(), NULL); + { + VkFence real = nondisp->real.As(); GetResourceManager()->ReleaseWrappedResource(VkFence(handle)); + vt->DestroyFence(Unwrap(dev), real, NULL); break; + } case eResEvent: - vt->DestroyEvent(Unwrap(dev), nondisp->real.As(), NULL); + { + VkEvent real = nondisp->real.As(); GetResourceManager()->ReleaseWrappedResource(VkEvent(handle)); + vt->DestroyEvent(Unwrap(dev), real, NULL); break; + } case eResQueryPool: - vt->DestroyQueryPool(Unwrap(dev), nondisp->real.As(), NULL); + { + VkQueryPool real = nondisp->real.As(); GetResourceManager()->ReleaseWrappedResource(VkQueryPool(handle)); + vt->DestroyQueryPool(Unwrap(dev), real, NULL); break; + } case eResSemaphore: - vt->DestroySemaphore(Unwrap(dev), nondisp->real.As(), NULL); + { + VkSemaphore real = nondisp->real.As(); GetResourceManager()->ReleaseWrappedResource(VkSemaphore(handle)); + vt->DestroySemaphore(Unwrap(dev), real, NULL); break; + } } return true;