[PATCH] glx: Skip multisampled configs when matching pre-existing X visuals.

Paul Berry stereotype441 at gmail.com
Tue Jul 31 15:15:56 PDT 2012

In __glXScreenInit() we generate the set of GLX visuals in two steps:
first we match each pre-existing X visual with a corresponding
FBConfig, then we generate a new X visual to correspond to all the
remaining FBConfigs.

The first step is used for the two default 24-bit visuals (true color
and direct color) and for the 32-bit visual.  If windowsystem
multisampling is enabled in Mesa, we need to ensure that none of these
three visuals gets matched to a multisampled config.

Fixes a bug with windowsystem multisampling in gnome-shell.  If the X
server happens to match up a multisampled FBConfig to the 32-bit
visual, gnome-shell will try to use it to read pixels from
alpha-blended windows (such as gnome-terminal), resulting in no window
appearing on screen.
 glx/glxscreens.c |    3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/glx/glxscreens.c b/glx/glxscreens.c
index 74b4c42..ff3dcdd 100644
--- a/glx/glxscreens.c
+++ b/glx/glxscreens.c
@@ -288,6 +288,9 @@ pickFBConfig(__GLXscreen * pGlxScreen, VisualPtr visual)
         if (config->visualRating != GLX_NONE)
+        /* Ignore multisampled configs */
+        if (config->sampleBuffers)
+            continue;
         if (glxConvertToXVisualType(config->visualType) != visual->class)
         /* If it's the 32-bit RGBA visual, demand a 32-bit fbconfig. */

More information about the xorg-devel mailing list