From b2039bd14fdd0aef755beb2689d3aae6e271ddf6 Mon Sep 17 00:00:00 2001 From: "Unknown W. Brackets" Date: Sun, 5 Nov 2017 14:22:09 -0800 Subject: [PATCH] Vulkan: Fix leak in WipeQueue(). --- ext/native/thin3d/VulkanRenderManager.cpp | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/ext/native/thin3d/VulkanRenderManager.cpp b/ext/native/thin3d/VulkanRenderManager.cpp index b87f9a6d63..88009d666a 100644 --- a/ext/native/thin3d/VulkanRenderManager.cpp +++ b/ext/native/thin3d/VulkanRenderManager.cpp @@ -616,8 +616,27 @@ void VulkanRenderManager::Finish() { void VulkanRenderManager::Wipe() { int curFrame = vulkan_->GetCurFrame(); - for (auto iter : steps_) { - delete iter; + for (auto step : steps_) { + // Need to release held framebuffers. + switch (step->stepType) { + case VKRStepType::RENDER: + for (const auto &iter : step->preTransitions) { + iter.fb->Release(); + } + break; + case VKRStepType::COPY: + step->copy.src->Release(); + step->copy.dst->Release(); + break; + case VKRStepType::BLIT: + step->blit.src->Release(); + step->blit.dst->Release(); + break; + case VKRStepType::READBACK: + step->readback.src->Release(); + break; + } + delete step; } steps_.clear(); }