From af40baca4ea151e0d47dbcbd74d78f16962a841e Mon Sep 17 00:00:00 2001 From: baldurk Date: Mon, 17 Apr 2017 11:52:15 +0100 Subject: [PATCH] Make sure to submit and delete any semaphores created during replay --- renderdoc/driver/vulkan/wrappers/vk_device_funcs.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/renderdoc/driver/vulkan/wrappers/vk_device_funcs.cpp b/renderdoc/driver/vulkan/wrappers/vk_device_funcs.cpp index 94065bea3..e488463e6 100644 --- a/renderdoc/driver/vulkan/wrappers/vk_device_funcs.cpp +++ b/renderdoc/driver/vulkan/wrappers/vk_device_funcs.cpp @@ -413,8 +413,9 @@ VkResult WrappedVulkan::vkCreateInstance(const VkInstanceCreateInfo *pCreateInfo void WrappedVulkan::Shutdown() { - // flush out any pending commands + // flush out any pending commands/semaphores SubmitCmds(); + SubmitSemaphores(); FlushQ(); // since we didn't create proper registered resources for our command buffers, @@ -427,6 +428,12 @@ void WrappedVulkan::Shutdown() ObjDisp(m_Device)->DestroyCommandPool(Unwrap(m_Device), Unwrap(m_InternalCmds.cmdpool), NULL); GetResourceManager()->ReleaseWrappedResource(m_InternalCmds.cmdpool); + for(size_t i = 0; i < m_InternalCmds.freesems.size(); i++) + { + ObjDisp(m_Device)->DestroySemaphore(Unwrap(m_Device), Unwrap(m_InternalCmds.freesems[i]), NULL); + GetResourceManager()->ReleaseWrappedResource(m_InternalCmds.freesems[i]); + } + // we do more in Shutdown than the equivalent vkDestroyInstance since on replay there's // no explicit vkDestroyDevice, we destroy the device here then the instance