From bc36160ccb07a662b2cfd7f0dec56e9c3f4f5aff Mon Sep 17 00:00:00 2001 From: Lionel Landwerlin Date: Thu, 12 Dec 2019 17:51:26 +0200 Subject: [PATCH] vulkan/wsi: error out when image fence doesn't signal MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit If for some reason the fence associated with an image doesn't signal, we're likely in a device lost scenario, we should report that error. We can't really wait for a given amount of time because we could get a timeout and that is not a valid error to report for vkQueuePresentKHR, so just wait forever. Signed-off-by: Lionel Landwerlin Closes: https://gitlab.freedesktop.org/mesa/mesa/issues/830 Reviewed-by: Tapani Pälli --- src/vulkan/wsi/wsi_common.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/vulkan/wsi/wsi_common.c b/src/vulkan/wsi/wsi_common.c index 65ab543..e45810d 100644 --- a/src/vulkan/wsi/wsi_common.c +++ b/src/vulkan/wsi/wsi_common.c @@ -1057,10 +1057,16 @@ wsi_common_queue_present(const struct wsi_device *wsi, if (result != VK_SUCCESS) goto fail_present; } else { - wsi->WaitForFences(device, 1, &swapchain->fences[image_index], - true, 1); + result = + wsi->WaitForFences(device, 1, &swapchain->fences[image_index], + true, ~0ull); + if (result != VK_SUCCESS) + goto fail_present; - wsi->ResetFences(device, 1, &swapchain->fences[image_index]); + result = + wsi->ResetFences(device, 1, &swapchain->fences[image_index]); + if (result != VK_SUCCESS) + goto fail_present; } struct wsi_image *image = -- 2.7.4