Created attachment 71171 [details] /var/log/Xorg.0.log System environment: -- chipset: G45 -- system architecture: x86_64 -- xf86-video-intel: 2.20.15 -- xserver: 1.13.0 -- mesa: 9.0.1 -- libdrm: 2.4.40 -- kernel: 3.5.7-gentoo-gnu -- Linux distribution: Gentoo -- Machine or mobo model: Asus P5Q-EM -- Display connector: DVI Reproduce steps: Start X with SNA enabled, run warzone2100 and start a single player game in fullscreen mode. Everything except the ground is flickering. Additional info: With UXA, there is no flickering.
Created attachment 71172 [details] dmesg > dmesg
Created attachment 71173 [details] /etc/X11/xorg.conf
Created attachment 71174 [details] xrandr --verbose > "xrandr --verbose"
Created attachment 71175 [details] intel_reg_dumper > intel_reg_dumper executed while in fullscreen mode, running warzone2100
Created attachment 71176 [details] cat /sys/devices/pci0000:00/0000:00:02.0/rom > vbios.dump
Are you using a compositor with an unredirected fullscreen GL game? Sounds like you're hitting the dri2 bugs...
If it is the bug I'm thinking of: diff --git a/src/sna/sna_dri.c b/src/sna/sna_dri.c index 6976143..fb2840f 100644 --- a/src/sna/sna_dri.c +++ b/src/sna/sna_dri.c @@ -1160,6 +1160,8 @@ can_exchange(struct sna * sna, WindowPtr win = (WindowPtr)draw; PixmapPtr pixmap; + return false; + if (front->format != back->format) { DBG(("%s: no, format mismatch, front = %d, back = %d\n", __FUNCTION__, front->format, back->format)); should hide it.
(In reply to comment #6) > Are you using a compositor with an unredirected fullscreen GL game? Sounds > like you're hitting the dri2 bugs... Yes, I am using KDE/KWin with desktop effects mode. With effects turned off, everything is fine. (In reply to comment #7) > diff --git a/src/sna/sna_dri.c b/src/sna/sna_dri.c Yes, when applying this patch, and turning desktop effects on again, the flickering is also gone. So, where should this be fixed? Is this the right place to complain about this bug?
The root cause is a race condition between the compositor and client sharing the DRI2 buffers. Ultimately, we need to fix the protocol to close the race.
As no one has reviewed my xorg patches to reduce the race, time to hack the ddx: commit 162e9a2bfc693db186aa481551cf76b3dc5ee55c Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Dec 10 23:11:48 2012 +0000 sna/dri: Disable name exchanges for SwapBuffers The DRI2 protocol is inherently racy. Fortuituously, this can be swept under the carpet by forcing the serialisation between the DRI2 clients by using a blit for the SwapBuffers. References: https://bugs.freedesktop.org/show_bug.cgi?id=58005 Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Thank you for fixing. It works fine that way. I suppose you want to have this fixed in a clean way. So I leave this bug report open.
Ok, cannot be fixed inside the DRI2 protocol. Hopefully we will get this right for DRI3. commit b0c83b77d0226cbaf6115eed5d0e2cc8a40ac51d Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Thu Feb 21 19:37:51 2013 +0000 sna/dri: Eradicate the DRI2 name exchange mechanism Thinking about the compositor <-> server <-> client inter-exchange demonstrates that we cannot prevent the client rendering into the source texture being show by the compositor. That is a subject for DRI3. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.