File U_glamor-properly-handle-mask-formats-without-alpha.patch of Package xorg-x11-server.5207

Git-commit: 453f813bb4afd39eb5b6b3c4a822894e04b6b11b
Path-Mainline: Upstream
Author: Eric Anholt <eric@anholt.net>
Subject: glamor: Properly handle mask formats without alpha.
References: bnc#1047154
Signed-off-by: Michal Srb <msrb@suse.com>

Even if the pixmap's storage has alpha, it may have been uploaded with
garbage in the alpha channel, so we need to force the shader to set
alpha to 1.  This was broken way back in
355334fcd99e4dce62e2be1e27290c9a74ea944f.

Fixes rendercheck -t composite -f x8r8g8b8.

Signed-off-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>

diff --git a/glamor/glamor_render.c b/glamor/glamor_render.c
index d4d69a695..f5651eb87 100644
--- a/glamor/glamor_render.c
+++ b/glamor/glamor_render.c
@@ -868,7 +868,10 @@ glamor_composite_choose_shader(CARD8 op,
                 goto fail;
         }
         else {
-            key.mask = SHADER_MASK_TEXTURE_ALPHA;
+            if (PICT_FORMAT_A(mask->format))
+                key.mask = SHADER_MASK_TEXTURE_ALPHA;
+            else
+                key.mask = SHADER_MASK_TEXTURE;
         }
 
         if (!mask->componentAlpha) {
openSUSE Build Service is sponsored by