Bug 28097

Summary: Page flipping broken; shows wrong buffer for fullscreen/compiz
Product: xorg Reporter: Brian Rogers <brian>
Component: Driver/intelAssignee: Chris Wilson <chris>
Status: RESOLVED FIXED QA Contact: Xorg Project Team <xorg-team>
Severity: major    
Priority: medium CC: Magnus.Kessler
Version: git   
Hardware: x86-64 (AMD64)   
OS: All   
Whiteboard:
i915 platform: i915 features:

Description Brian Rogers 2010-05-13 22:54:30 UTC
With the latest DDX on my i965 laptop, Compiz and fullscreen games appear to be showing me the back buffer being rendered to, rather than the front buffer. So I see the frontmost objects (those drawn last) flickering in and out of existence.

If I run 'metacity --replace', then all updates cease, though X is still running. If I connect x11vnc to the session, I can see what is supposed to be displayed on the screen and interact will it fine over VNC.

Reverting this commit fixes the problem:

commit 9f54107f866a25cf670f81f7c52b8c108728c6a5
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date:   Tue May 11 14:55:16 2010 +0100

    dri2: Handle reference counting across page flipping
    
    1. Instead of swapping bos, swap the entire private structure.
    
    2. If we update the pixmap bo for the Screen, make sure we update the
    reference inside intel->front_buffer so that xrandr still functions.
    
    Fixes:
    
      Bug 27922 - i965: Rapidly resizing OpenGL window causes GPU to hang.
      https://bugs.freedesktop.org/show_bug.cgi?id=27922
    
    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Comment 1 Chris Wilson 2010-05-14 09:33:12 UTC
commit 030d56279bf14d9ddd42d8fdbeaa66ef3f557b4d
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date:   Fri May 14 16:53:40 2010 +0100

    drm: don't overwrite the old intel->front_buffer
    
    It's now handled in the common ExchangeBuffers() path.

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.