diff --git a/renderdoc/driver/vulkan/vk_core.cpp b/renderdoc/driver/vulkan/vk_core.cpp index b538d8693..7c208072e 100644 --- a/renderdoc/driver/vulkan/vk_core.cpp +++ b/renderdoc/driver/vulkan/vk_core.cpp @@ -206,7 +206,10 @@ WrappedVulkan::~WrappedVulkan() } for(size_t i = 0; i < m_Partial.commandTree.size(); i++) + { + m_Partial.commandTree[i]->DeleteChildren(); delete m_Partial.commandTree[i]; + } delete m_Replay; } diff --git a/renderdoc/driver/vulkan/vk_core.h b/renderdoc/driver/vulkan/vk_core.h index 6c5495317..2a63f1d76 100644 --- a/renderdoc/driver/vulkan/vk_core.h +++ b/renderdoc/driver/vulkan/vk_core.h @@ -662,6 +662,15 @@ private: rdcarray childCmdNodes; CommandBufferNode *rootNode = NULL; bool renderPassActive = false; + + void DeleteChildren() + { + for(CommandBufferNode *child : childCmdNodes) + { + child->DeleteChildren(); + delete child; + } + } }; // CommandBufferExecuteInfo tracks the position of the execution of a secondary command buffer