egl: Only expose 565 pbuffer configs if X can export them as DRI3 images
authorKenneth Graunke <kenneth@whitecape.org>
Thu, 18 Jul 2019 00:03:17 +0000 (17:03 -0700)
committerKenneth Graunke <kenneth@whitecape.org>
Mon, 22 Jul 2019 23:58:09 +0000 (16:58 -0700)
commit82607f8a900796871470ac4f1a04e154392e4898
treec9caf08b254f7b1712068fd31fca189e3ae81e5a
parent6ad31c4ff33d92f6359b196a94ace99682272111
egl: Only expose 565 pbuffer configs if X can export them as DRI3 images

Glamor in xorg-server 1.20 cannot expose 16bpp pixmaps when running in
the usual 24bpp mode.  This meant our 565 pbuffer configs would
ultimately fail to create a backing pixmap, leading to crashes.

To hack around this, make a 16bpp pixmap and try and export it.
If it works, expose the configs.  Otherwise, just skip them.

This also disables them on DRI2.  These configs were only added to pass
conformance requirements, and I doubt anybody cares about testing out
565 pbuffer visuals on DRI2-only drivers.

v2: Don't leak the fds (caught by Eric Anholt)
v3: Don't free(fds), it's not malloc'd

Fixes: dacb11a585f ("egl: Add a 565 pbuffer-only EGL config under X11.")
Reviewed-by: Eric Anholt <eric@anholt.net>
src/egl/drivers/dri2/platform_x11.c