Skip to content
Snippets Groups Projects
Commit c64bd21d authored by Adam Jackson's avatar Adam Jackson :headphones:
Browse files

glx: Move Composite's synthetic visuals to a different select group


Should you find yourself using a 16bpp display while also using a
compositor, you poor soul, you may find that your GLX applications
behave strangely; in particular, glxgears will be transparent. This is
because it clears to (0,0,0,0) which is transparent if you honor alpha,
and it will choose the synthetic visual because it has the most
available r/g/b bits.

To avoid this, bump synthetic visuals to a higher (less-preferred)
select group. Unless the client explicitly asks for non-zero alpha bits,
this will prefer any rgb565 visual ahead of the argb8888 visual.

Reviewed-by: default avatarEric Anholt <eric@anholt.net>
Signed-off-by: Adam Jackson's avatarAdam Jackson <ajax@redhat.com>
(cherry picked from commit ea483af9)
parent 4c64b20a
No related branches found
No related tags found
No related merge requests found
......@@ -43,6 +43,7 @@
#include "glxutil.h"
#include "glxext.h"
#include "protocol-versions.h"
#include "compositeext.h"
static DevPrivateKeyRec glxScreenPrivateKeyRec;
......@@ -336,6 +337,10 @@ __glXScreenInit(__GLXscreen * pGlxScreen, ScreenPtr pScreen)
if (config) {
pGlxScreen->visuals[pGlxScreen->numVisuals++] = config;
config->visualID = visual->vid;
#ifdef COMPOSITE
if (compIsAlternateVisual(pScreen, visual->vid))
config->visualSelectGroup++;
#endif
}
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment