From 08721f7a2163a2e3bb56c36dfe99f4594c03a65e Mon Sep 17 00:00:00 2001 From: Bill Currie Date: Tue, 30 Nov 2021 21:56:57 +0900 Subject: [PATCH] [vulkan] Destroy the right framebuffers Why nvidia's drivers accepted double-destroyed framebuffers is beyond me, but this fixes the Intel drivers complaining about such (and the subsequent segfault). --- libs/video/renderer/vulkan/vulkan_vid_common.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/libs/video/renderer/vulkan/vulkan_vid_common.c b/libs/video/renderer/vulkan/vulkan_vid_common.c index 12b14c15a..01b991e9d 100644 --- a/libs/video/renderer/vulkan/vulkan_vid_common.c +++ b/libs/video/renderer/vulkan/vulkan_vid_common.c @@ -572,7 +572,7 @@ Vulkan_DestroyFrames (vulkan_ctx_t *ctx) df->vkDestroyFence (dev, frame->fence, 0); df->vkDestroySemaphore (dev, frame->imageAvailableSemaphore, 0); df->vkDestroySemaphore (dev, frame->renderDoneSemaphore, 0); - df->vkDestroyFramebuffer (dev, frame->framebuffer, 0); + frame->framebuffer = 0; for (int j = 0; j < frame->cmdSetCount; j++) { DARRAY_CLEAR (&frame->cmdSets[j]); } @@ -580,6 +580,11 @@ Vulkan_DestroyFrames (vulkan_ctx_t *ctx) } DARRAY_CLEAR (&ctx->frames); + + for (size_t i = 0; i < ctx->framebuffers->size; i++) { + df->vkDestroyFramebuffer (dev, ctx->framebuffers->a[i], 0); + } + free (ctx->framebuffers); } void