File U_glamor-Disable-logic-ops-when-doing-compositing-v4.patch of Package xorg-x11-server.5207

From 743b6f231e999d8b2909228412266dc13cc433c5 Mon Sep 17 00:00:00 2001
From: Keith Packard <keithp@keithp.com>
Date: Fri, 13 May 2016 04:25:43 -0700
Subject: [PATCH xserver] glamor: Disable logic ops when doing compositing [v4]
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

If the logic op gets left enabled, it overrides the blending
operation, causing incorrect contents on the display.

v2: Disable only on non-ES2, but disable even for PictOpSrc

v3: Found another place this is needed in
    glamor_composite_set_shader_blend

v4: Remove change dependent on new glamor_set_composite_texture
    API. This belongs in a different patch.
    Found by Emil Velikov <emil.l.velikov@gmail.com>

Signed-off-by: Keith Packard <keithp@keithp.com>
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
---
 glamor/glamor_program.c | 4 ++++
 glamor/glamor_render.c  | 3 +++
 2 files changed, 7 insertions(+)

Index: xorg-server-1.18.3/glamor/glamor_program.c
===================================================================
--- xorg-server-1.18.3.orig/glamor/glamor_program.c
+++ xorg-server-1.18.3/glamor/glamor_program.c
@@ -445,6 +445,7 @@ static struct blendinfo composite_op_inf
 static void
 glamor_set_blend(CARD8 op, glamor_program_alpha alpha, PicturePtr dst)
 {
+    glamor_screen_private *glamor_priv = glamor_get_screen_private(dst->pDrawable->pScreen);
     GLenum src_blend, dst_blend;
     struct blendinfo *op_info;
 
@@ -459,6 +460,9 @@ glamor_set_blend(CARD8 op, glamor_progra
         break;
     }
 
+    if (glamor_priv->gl_flavor != GLAMOR_GL_ES2)
+        glDisable(GL_COLOR_LOGIC_OP);
+
     if (op == PictOpSrc)
         return;
 
Index: xorg-server-1.18.3/glamor/glamor_render.c
===================================================================
--- xorg-server-1.18.3.orig/glamor/glamor_render.c
+++ xorg-server-1.18.3/glamor/glamor_render.c
@@ -1084,6 +1084,9 @@ glamor_composite_set_shader_blend(glamor
         }
     }
 
+    if (glamor_priv->gl_flavor != GLAMOR_GL_ES2)
+        glDisable(GL_COLOR_LOGIC_OP);
+
     if (op_info->source_blend == GL_ONE && op_info->dest_blend == GL_ZERO) {
         glDisable(GL_BLEND);
     }
openSUSE Build Service is sponsored by