From af736168f77886a48b25a244cfdc65ee42b7578d Mon Sep 17 00:00:00 2001 From: Derek Foreman Date: Fri, 27 Mar 2026 13:35:47 -0500 Subject: [PATCH] clients: Fix dmabuf feedback stall in simple-vulkan When we receive dmabuf feedback, we hit the VK_SUBOPTIMAL path and recreate the swapchain, returning early without submitting work. However, we've already reset the fence before we do this, so we'll block forever waiting for work that never comes to signal it. Instead, we should reset the fence right before we know we're submitting work. Fixes: 75c37afa ("clients/simple-vulkan: New Vulkan client example") Signed-off-by: Derek Foreman --- clients/simple-vulkan.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/clients/simple-vulkan.c b/clients/simple-vulkan.c index ecc241d03..f795ec4f3 100644 --- a/clients/simple-vulkan.c +++ b/clients/simple-vulkan.c @@ -1564,7 +1564,6 @@ redraw(struct window *window) assert(window->vk.frame_index < ARRAY_LENGTH(window->vk.frames)); vkWaitForFences(window->vk.dev, 1, &frame->fence, VK_TRUE, UINT64_MAX); - vkResetFences(window->vk.dev, 1, &frame->fence); uint32_t image_index; result = vkAcquireNextImageKHR(window->vk.dev, window->vk.swapchain, UINT64_MAX, @@ -1575,6 +1574,8 @@ redraw(struct window *window) } assert(result == VK_SUCCESS); + vkResetFences(window->vk.dev, 1, &frame->fence); + assert(image_index < ARRAY_LENGTH(window->vk.images)); struct window_image *image = &window->vk.images[image_index];