From 5a0a17bc0dafe577ec02ad2205c25bc8acb2c5e6 Mon Sep 17 00:00:00 2001 From: Damian Hobson-Garcia Date: Mon, 25 Oct 2021 18:26:34 +0900 Subject: [PATCH 1/3] waylandws_client: Ensure that supported DMAbuf formats are received Explicitly check that the list of supported dmabuf formats have been received from the server during initialization. At least one pixel format must be supported in order to complete initialization successfully. --- src/waylandws_client.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/waylandws_client.c b/src/waylandws_client.c index e917347..20bfac9 100644 --- a/src/waylandws_client.c +++ b/src/waylandws_client.c @@ -698,6 +698,20 @@ static bool setup_buffer_sharing(WLWSClientDisplay *display) return authenticate_kms_device(display); } +static bool ensure_supported_dmabuf_formats(WLWSClientDisplay *display) +{ + if (!display->zlinux_dmabuf) + return true; + + if (wl_display_roundtrip_queue(display->wl_display, display->wl_queue) < 0 || + !display->enable_formats) { + /* No supported dmabuf pixel formats */ + return false; + } + + return true; +} + /*********************************************************************************** Function Name : WSEGL_InitialiseDisplay Inputs : hNativeDisplay @@ -755,6 +769,12 @@ static WSEGLError WSEGLc_InitialiseDisplay(NativeDisplayType hNativeDisplay, goto fail; } + /* Get the list of supported pixel formats */ + if (!ensure_supported_dmabuf_formats(display)) { + err = WSEGL_BAD_NATIVE_DISPLAY; + goto fail; + } + /* XXX: should we wrap this with wl_kms client code? */ if (kms_create(display->fd, &display->kms)) { err = WSEGL_BAD_NATIVE_DISPLAY; -- 2.25.1