[Mesa-dev] [PATCH] egl: Report correct GBM formats
Tom Stellard
thomas.stellard at amd.com
Mon Mar 2 06:23:17 PST 2015
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.
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