egl: Puts RGBA visuals in the second config selection group.
authorHal Gentz <zegentzy@protonmail.com>
Fri, 11 Oct 2019 00:35:50 +0000 (18:35 -0600)
committerAdam Jackson <ajax@nwnk.net>
Fri, 11 Oct 2019 21:57:21 +0000 (21:57 +0000)
That way applications don't get windows that are compositor alpha-blended
accidentally.

In the ideal world, this would be done by the xserver, as it does for
GLX, however, an appropriate place could not be found, so it's being
placed here instead.

Fixes: 049f343e8ac "egl: Allow 24-bit visuals for 32-bit RGBA8888 configs"
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=67676
Cc: mesa-stable@lists.freedesktop.org
Reviewed-by: Adam Jackson <ajax@redhat.com>
Signed-off-by: Hal Gentz <zegentzy@protonmail.com>
src/egl/drivers/dri2/platform_x11.c

index 414d5f74c5db0759ca77872699714d982565d5b1..b3ed7b943da14c5cca1607db6aee09014e31ef89 100644 (file)
@@ -831,9 +831,17 @@ dri2_x11_add_configs_for_visuals(struct dri2_egl_display *dri2_dpy,
             dri2_conf = dri2_add_config(disp, config, config_count + 1,
                                         surface_type, config_attrs,
                                         rgba_shifts, rgba_sizes);
-            if (dri2_conf)
+            if (dri2_conf) {
                if (dri2_conf->base.ConfigID == config_count + 1)
                   config_count++;
+
+               /* Put RGBA visuals in the second ConfigSelectGroup so that they
+                * have lower priority. Applications probably don't want the
+                * compositor to alpha-blend their windows.
+                */
+               if (d.data->depth != 24 && d.data->depth != 30)
+                  ++dri2_conf->base.ConfigSelectGroup;
+            }
          }
       }