egl/x11: Allow all RGB visuals to match 32-bit RGBA EGLConfigs

Drop the limitation to 24 or 30 bit configs. It was an abritrary
compromise to usually give apps what they wanted, but now we are about
to get a clean solution for alpha-blending on X11.

Based on a patch by Freya Gentz <zegentzy@protonmail.com>, see
https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/2376

Signed-off-by: Robert Mader <robert.mader@posteo.de>
Signed-off-by: David Heidelberg <david.heidelberg@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9989>
This commit is contained in:
Robert Mader
2021-10-16 17:16:46 +02:00
committed by Marge Bot
parent 9bdab38424
commit 8a02ca1b2e

View File

@@ -843,8 +843,7 @@ dri2_x11_add_configs_for_visuals(struct dri2_egl_display *dri2_dpy,
continue;
}
/* Allow a 24-bit RGB visual to match a 32-bit RGBA EGLConfig.
* Ditto for 30-bit RGB visuals to match a 32-bit RGBA EGLConfig.
/* Allows RGB visuals to match a 32-bit RGBA EGLConfig.
* Otherwise it will only match a 32-bit RGBA visual. On a
* composited window manager on X11, this will make all of the
* EGLConfigs with destination alpha get blended by the
@@ -852,9 +851,6 @@ dri2_x11_add_configs_for_visuals(struct dri2_egl_display *dri2_dpy,
* wants... especially on drivers that only have 32-bit RGBA
* EGLConfigs! */
if (sizes[3] != 0) {
if (d.data->depth != 24 && d.data->depth != 30)
continue;
unsigned int rgba_mask =
~(visuals[i].red_mask | visuals[i].green_mask |
visuals[i].blue_mask);