diff options
author | Daniel Stone <[email protected]> | 2015-03-02 13:52:59 +0000 |
---|---|---|
committer | Tom Stellard <[email protected]> | 2015-03-04 15:48:18 +0000 |
commit | 65c8965d033cf9ade5e6f3c88bda6d247d46af9d (patch) | |
tree | 13488aacda45091b04027da8f549fc7b78386d3a /src/egl | |
parent | b709adf7cca24412a6c1bb813856ca701e534ffd (diff) |
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" <[email protected]>
Reviewed-by: Alex Deucher <[email protected]>
Reviewed-by: Chad Versace <[email protected]>
Diffstat (limited to 'src/egl')
-rw-r--r-- | src/egl/drivers/dri2/platform_drm.c | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/src/egl/drivers/dri2/platform_drm.c b/src/egl/drivers/dri2/platform_drm.c index 02e87f7771b..bf205bef47a 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; |