From 71191cd12755d44ffee62d43cb4a1ba1613cd0ba 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 (cherry picked from commit af736168f77886a48b25a244cfdc65ee42b7578d) --- 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];