diff --git a/renderdoc/driver/vulkan/wrappers/vk_descriptor_funcs.cpp b/renderdoc/driver/vulkan/wrappers/vk_descriptor_funcs.cpp index 6ff713b28..895478d0f 100644 --- a/renderdoc/driver/vulkan/wrappers/vk_descriptor_funcs.cpp +++ b/renderdoc/driver/vulkan/wrappers/vk_descriptor_funcs.cpp @@ -315,16 +315,13 @@ VkResult WrappedVulkan::vkFreeDescriptorSets( for(uint32_t i=0; i < count; i++) unwrapped[i] = Unwrap(pDescriptorSets[i]); + for(uint32_t i=0; i < count; i++) + GetResourceManager()->ReleaseWrappedResource(pDescriptorSets[i]); + VkResult ret = ObjDisp(device)->FreeDescriptorSets(Unwrap(device), Unwrap(descriptorPool), count, unwrapped); SAFE_DELETE_ARRAY(unwrapped); - if(ret == VK_SUCCESS) - { - for(uint32_t i=0; i < count; i++) - GetResourceManager()->ReleaseWrappedResource(pDescriptorSets[i]); - } - return ret; } diff --git a/renderdoc/driver/vulkan/wrappers/vk_resource_funcs.cpp b/renderdoc/driver/vulkan/wrappers/vk_resource_funcs.cpp index fac35f8e0..2024ae241 100644 --- a/renderdoc/driver/vulkan/wrappers/vk_resource_funcs.cpp +++ b/renderdoc/driver/vulkan/wrappers/vk_resource_funcs.cpp @@ -122,11 +122,12 @@ VkResult WrappedVulkan::vkFreeMemory( // we just need to clean up after ourselves on replay WrappedVkNonDispRes *wrapped = (WrappedVkNonDispRes *)GetWrapped(mem); m_MemoryInfo.erase(wrapped->id); - VkResult res = ObjDisp(device)->FreeMemory(Unwrap(device), wrapped->real.As()); + + VkDeviceMemory unwrappedMem = wrapped->real.As(); GetResourceManager()->ReleaseWrappedResource(mem); - return res; + return ObjDisp(device)->FreeMemory(Unwrap(device), unwrappedMem); } VkResult WrappedVulkan::vkMapMemory(