[Mesa-dev] [PATCH] egl/wayland: Add a fallback when fourcc query isn't supported
Derek Foreman
derekf at osg.samsung.com
Tue Nov 14 15:43:48 UTC 2017
Please disregard, I misunderstood a comment in the bug tracker and this
has been posted here before.
Sorry for the line noise.
On 2017-11-14 09:39 AM, Derek Foreman wrote:
> When queryImage doesn't support __DRI_IMAGE_ATTRIB_FOURCC wayland clients
> will die with a NULL derefence in wl_proxy_add_listener.
>
> Attempt to provide a simple fallback to keep ancient systems working.
>
> Signed-off-by: Derek Foreman <derekf at osg.samsung.com>
> ---
> src/egl/drivers/dri2/platform_wayland.c | 32 ++++++++++++++++++++++++++++++--
> 1 file changed, 30 insertions(+), 2 deletions(-)
>
> diff --git a/src/egl/drivers/dri2/platform_wayland.c b/src/egl/drivers/dri2/platform_wayland.c
> index b38eb1c335..7010dfdcb2 100644
> --- a/src/egl/drivers/dri2/platform_wayland.c
> +++ b/src/egl/drivers/dri2/platform_wayland.c
> @@ -671,6 +671,35 @@ static const struct wl_callback_listener throttle_listener = {
> .done = wayland_throttle_callback
> };
>
> +static EGLBoolean
> +get_fourcc(struct dri2_egl_display *dri2_dpy,
> + __DRIimage *image, int *fourcc)
> +{
> + EGLBoolean query;
> + uint32_t dri_format;
> +
> + query = dri2_dpy->image->queryImage(image, __DRI_IMAGE_ATTRIB_FOURCC,
> + fourcc);
> + if (query)
> + return true;
> +
> + query = dri2_dpy->image->queryImage(image, __DRI_IMAGE_ATTRIB_FORMAT,
> + &dri_format);
> + if (!query)
> + return false;
> +
> + switch (dri_format) {
> + case __DRI_IMAGE_FORMAT_ARGB8888:
> + *fourcc = __DRI_IMAGE_FOURCC_ARGB8888;
> + return true;
> + case __DRI_IMAGE_FORMAT_XRGB8888:
> + *fourcc = __DRI_IMAGE_FOURCC_XRGB8888;
> + return true;
> + default:
> + return false;
> + }
> +}
> +
> static struct wl_buffer *
> create_wl_buffer(struct dri2_egl_display *dri2_dpy,
> struct dri2_egl_surface *dri2_surf,
> @@ -684,8 +713,7 @@ create_wl_buffer(struct dri2_egl_display *dri2_dpy,
> query = dri2_dpy->image->queryImage(image, __DRI_IMAGE_ATTRIB_WIDTH, &width);
> query &= dri2_dpy->image->queryImage(image, __DRI_IMAGE_ATTRIB_HEIGHT,
> &height);
> - query &= dri2_dpy->image->queryImage(image, __DRI_IMAGE_ATTRIB_FOURCC,
> - &fourcc);
> + query &= get_fourcc(dri2_dpy, image, &fourcc);
> if (!query)
> return NULL;
>
>
More information about the mesa-dev
mailing list