If the client has requested that AcquireNextImage not block at all, with a timeout of 0, then don't make any non-blocking calls.
This will still potentially block infinitely given a non-infinte timeout, but the fix for that is much more involved. Signed-off-by: Daniel Stone <dani...@collabora.com> Cc: mesa-sta...@lists.freedesktop.org Cc: Chad Versace <chadvers...@chromium.org> Cc: Jason Ekstrand <ja...@jlekstrand.net> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=108540 --- src/vulkan/wsi/wsi_common_wayland.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/vulkan/wsi/wsi_common_wayland.c b/src/vulkan/wsi/wsi_common_wayland.c index e9cc22ec603..981243d8b14 100644 --- a/src/vulkan/wsi/wsi_common_wayland.c +++ b/src/vulkan/wsi/wsi_common_wayland.c @@ -699,9 +699,14 @@ wsi_wl_swapchain_acquire_next_image(struct wsi_swapchain *wsi_chain, } } - /* This time we do a blocking dispatch because we can't go - * anywhere until we get an event. + /* We now have to do a blocking dispatch, because all our images + * are in use and we cannot return one until the server does. However, + * if the client has requested non-blocking ANI, then we tell it up front + * that we have nothing to return. */ + if (info->timeout == 0) + return VK_NOT_READY; + int ret = wl_display_roundtrip_queue(chain->display->wl_display, chain->display->queue); if (ret < 0) -- 2.19.1 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev