Bug#519729: Patch to fix redraw issue on Nvidia cards
This patch was made from this commit to compiz. Patch is for package compiz-fusion-plugins-main 0.7.6-1 (from Sid).
Comments from commit:
Add workaround to force X-to-GLX synchronization, which should help for
the race condition in the XDamage protocol Nvidia users are suffering
from.
This is my first patch, so maybe something is wrong..
diff -ruN a/metadata/workarounds.xml.in b/metadata/workarounds.xml.in
--- a/metadata/workarounds.xml.in 2008-06-03 05:51:24.000000000 +0700
+++ b/metadata/workarounds.xml.in 2009-03-16 14:19:52.000000000 +0600
@@ -48,6 +48,11 @@
<_long>Fix for broken GLX_MESA_copy_sub_buffer on XGL in fglrx.</_long>
<default>false</default>
</option>
+ <option type="bool" name="force_glx_sync">
+ <_short>Force synchronization between X and GLX</_short>
+ <_long>Force synchronization between X and GLX, which may help for window parts not redrawing correctly when using Nvidia drivers, but also may decrease performance.</_long>
+ <default>false</default>
+ </option>
<subgroup>
<_short>Window stickyness</_short>
<option type="bool" name="sticky_alldesktops">
diff -ruN a/src/workarounds/workarounds.c b/src/workarounds/workarounds.c
--- a/src/workarounds/workarounds.c 2008-06-03 05:51:24.000000000 +0700
+++ b/src/workarounds/workarounds.c 2009-03-16 14:18:46.000000000 +0600
@@ -197,6 +197,9 @@
currentScreen = s;
+ if (workaroundsGetForceGlxSync (s->display))
+ glXWaitX();
+
UNWRAP (ws, s, paintScreen);
(*s->paintScreen) (s, outputs, numOutputs, mask);
WRAP (ws, s, paintScreen, workaroundsPaintScreen);
Reply to: