[Mesa-dev] [PATCH] egl: Report correct GBM formats

Ilia Mirkin imirkin at alum.mit.edu
Mon Mar 2 07:56:45 PST 2015


On Mon, Mar 2, 2015 at 9:23 AM, Tom Stellard <thomas.stellard at amd.com> wrote:
> From: Daniel Stone <daniels at collabora.com>
>
> This fixes almost all piglit regressions when running with
> PIGLIT_PLATFORM=gbm
>
> Tom Stellard:
>   - Fix ARGB2101010 format
>
> Cc: "10.4 10.5" <mesa-stable at lists.freedesktop.org>
> ---
>
> I'm not sure if the commit message makes sense, I'm open to suggestions.

Yeah.... how about

"""
Take alpha bits into account when selecting GBM formats.
"""

Although maybe mentioning that it unbreaks piglit with gbm wouldn't be
so bad as well.

>
> src/egl/drivers/dri2/platform_drm.c | 16 +++++++++++-----
>  1 file changed, 11 insertions(+), 5 deletions(-)
>
> diff --git a/src/egl/drivers/dri2/platform_drm.c b/src/egl/drivers/dri2/platform_drm.c
> index 02e87f7..bf205be 100644
> --- a/src/egl/drivers/dri2/platform_drm.c
> +++ b/src/egl/drivers/dri2/platform_drm.c
> @@ -668,15 +668,21 @@ dri2_initialize_drm(_EGLDriver *drv, _EGLDisplay *disp)
>
>     for (i = 0; dri2_dpy->driver_configs[i]; i++) {
>        EGLint format, attr_list[3];
> -      unsigned int mask;
> +      unsigned int red, alpha;
>
>        dri2_dpy->core->getConfigAttrib(dri2_dpy->driver_configs[i],
> -                                       __DRI_ATTRIB_RED_MASK, &mask);
> -      if (mask == 0x3ff00000)
> +                                       __DRI_ATTRIB_RED_MASK, &red);
> +      dri2_dpy->core->getConfigAttrib(dri2_dpy->driver_configs[i],
> +                                       __DRI_ATTRIB_ALPHA_MASK, &alpha);
> +      if (red == 0x3ff00000 && alpha == 0x00000000)
>           format = GBM_FORMAT_XRGB2101010;
> -      else if (mask == 0x00ff0000)
> +      else if (red == 0x3ff00000 && alpha == 0xc0000000)
> +         format = GBM_FORMAT_ARGB2101010;
> +      else if (red == 0x00ff0000 && alpha == 0x00000000)
>           format = GBM_FORMAT_XRGB8888;
> -      else if (mask == 0xf800)
> +      else if (red == 0x00ff0000 && alpha == 0xff000000)
> +         format = GBM_FORMAT_ARGB8888;
> +      else if (red == 0xf800)
>           format = GBM_FORMAT_RGB565;
>        else
>           continue;
> --
> 2.0.4
>


More information about the mesa-dev mailing list