From 1826c166b5e519126a8e817aeffda20bdadb44e1 Mon Sep 17 00:00:00 2001 From: baldurk Date: Sun, 17 Jan 2016 10:54:39 +0100 Subject: [PATCH] Avoid allocating/deleting array during capture when it's not needed --- renderdoc/driver/vulkan/wrappers/vk_cmd_funcs.cpp | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/renderdoc/driver/vulkan/wrappers/vk_cmd_funcs.cpp b/renderdoc/driver/vulkan/wrappers/vk_cmd_funcs.cpp index 376ba672c..b86d4a838 100644 --- a/renderdoc/driver/vulkan/wrappers/vk_cmd_funcs.cpp +++ b/renderdoc/driver/vulkan/wrappers/vk_cmd_funcs.cpp @@ -1057,21 +1057,26 @@ bool WrappedVulkan::Serialise_vkCmdBindDescriptorSets( if(m_State < WRITING) m_LastCmdBufferID = cmdid; - ResourceId *descriptorIDs = new ResourceId[numSets]; + ResourceId *descriptorIDs = NULL; VkDescriptorSet *sets = (VkDescriptorSet *)pDescriptorSets; if(m_State < WRITING) + { + descriptorIDs = new ResourceId[numSets]; sets = new VkDescriptorSet[numSets]; + } for(uint32_t i=0; i < numSets; i++) { + ResourceId id; if(m_State >= WRITING) - descriptorIDs[i] = GetResID(sets[i]); + id = GetResID(sets[i]); - localSerialiser->Serialise("DescriptorSet", descriptorIDs[i]); + localSerialiser->Serialise("DescriptorSet", id); if(m_State < WRITING) { + descriptorIDs[i] = id; sets[i] = GetResourceManager()->GetLiveHandle(descriptorIDs[i]); descriptorIDs[i] = GetResID(sets[i]); sets[i] = Unwrap(sets[i]); @@ -1179,9 +1184,11 @@ bool WrappedVulkan::Serialise_vkCmdBindDescriptorSets( } if(m_State < WRITING) + { SAFE_DELETE_ARRAY(sets); + SAFE_DELETE_ARRAY(descriptorIDs); + } - SAFE_DELETE_ARRAY(descriptorIDs); SAFE_DELETE_ARRAY(offs); return true;