egl: Take alpha bits into account when selecting GBM formats

This fixes piglit when using PIGLIT_PLATFORM=gbm

Tom Stellard:
  - Fix ARGB2101010 format

Cc: "10.4 10.5" <mesa-stable@lists.freedesktop.org>

Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Reviewed-by: Chad Versace <chad.versace@intel.com>
This commit is contained in:
Daniel Stone 2015-03-02 13:52:59 +00:00 committed by Tom Stellard
parent b709adf7cc
commit 65c8965d03

View file

@ -668,15 +668,21 @@ dri2_initialize_drm(_EGLDriver *drv, _EGLDisplay *disp)
for (i = 0; dri2_dpy->driver_configs[i]; i++) { for (i = 0; dri2_dpy->driver_configs[i]; i++) {
EGLint format, attr_list[3]; EGLint format, attr_list[3];
unsigned int mask; unsigned int red, alpha;
dri2_dpy->core->getConfigAttrib(dri2_dpy->driver_configs[i], dri2_dpy->core->getConfigAttrib(dri2_dpy->driver_configs[i],
__DRI_ATTRIB_RED_MASK, &mask); __DRI_ATTRIB_RED_MASK, &red);
if (mask == 0x3ff00000) dri2_dpy->core->getConfigAttrib(dri2_dpy->driver_configs[i],
__DRI_ATTRIB_ALPHA_MASK, &alpha);
if (red == 0x3ff00000 && alpha == 0x00000000)
format = GBM_FORMAT_XRGB2101010; 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; 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; format = GBM_FORMAT_RGB565;
else else
continue; continue;