Merge pull request #10057 from unknownbrackets/vulkan-minor

Fix framebuffer leak in Vulkan
This commit is contained in:
Henrik Rydgård authored and GitHub committed 2017-11-05 23:38:35 +01:00
commit 0b68130968
2 files changed
+22 -3

No files matched your search

+1 -1
View File
@@ -326,8 +326,8 @@ void VulkanQueueRunner::PerformRenderPass(const VKRStep &step, VkCommandBuffer c
vkCmdPipelineBarrier(cmd, srcStage, dstStage, 0, 0, nullptr, 0, nullptr, 1, &barrier);
iter.fb->color.layout = barrier.newLayout;
iter.fb->Release();
}
iter.fb->Release();
}
// This is supposed to bind a vulkan render pass to the command buffer.
+21 -2
View File
@@ -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();
}