[Mesa-dev] [PATCH] vulkan/wsi/wayland: Respect non-blocking AcquireNextImage
Jason Ekstrand
jason at jlekstrand.net
Tue Oct 30 14:45:19 UTC 2018
Acked-by: Jason Ekstrand <jason at jlekstrand.net>
On Tue, Oct 30, 2018 at 7:56 AM Daniel Stone <daniels at collabora.com> wrote:
> 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 <daniels at collabora.com>
> Cc: mesa-stable at lists.freedesktop.org
> Cc: Chad Versace <chadversary at chromium.org>
> Cc: Jason Ekstrand <jason at 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
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20181030/ba258d4e/attachment.html>
More information about the mesa-dev
mailing list