Bug 27425

Summary: 7c50d29f7ced3d60e52ee0146d982b49ea421de2 causes display update errors (i965)
Product: Mesa Reporter: Harald Judt <h.judt>
Component: Drivers/DRI/i965Assignee: Kristian Høgsberg <krh>
Status: RESOLVED DUPLICATE QA Contact:
Severity: normal    
Priority: high CC: anssi, brian, bugs, kshitij_kulshres, rb6
Version: git   
Hardware: x86-64 (AMD64)   
OS: Linux (All)   
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=7c50d29f7ced3d60e52ee0146d982b49ea421de2
Whiteboard:
i915 platform: i915 features:

Description Harald Judt 2010-04-02 08:41:52 UTC
Changes introduced some time ago cause some parts of the
display not to update anymore.

  Example: In file manager, icons do not appear, or icons
    from previous folder stay on the screen until mouse
    over etc.
  Example: When terminal blinks (visual alarm), terminal
    stays white instead of going back to black until user
    action.
  Example: In terminal, cursor is visible on every
    character it moved over, that is, going over text
    with left or right keys will leave bits of the cursor
    on the screen.

I cannot capture this using screenshots, the problem will not be visible there.


Linux localhost 2.6.33-tuxonice-r1 #1 SMP PREEMPT Mon Mar 22 16:47:33 CET 2010 x86_64 Intel(R) Core(TM)2 Duo CPU T9300 @ 2.50GHz GenuineIntel GNU/Linux

00:02.1 Display controller: Intel Corporation Mobile GM965/GL960 Integrated Graphics Controller (rev 0c)
        Subsystem: Lenovo T61
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
        Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
        Latency: 0
        Region 0: Memory at f8200000 (64-bit, non-prefetchable) [size=1M]
        Capabilities: [d0] Power Management version 3
                Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
                Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
                Bridge: PM- B3+


I've done a git bisect and nailed down the problem to the following commit:

commit 7c50d29f7ced3d60e52ee0146d982b49ea421de2
Author: Kristian Høgsberg <krh@bitplanet.net>
Date:   Fri Jan 8 12:35:47 2010 -0500

    intel/DRI2: add DRI2flushExtension support with invalidate hook

    Needed to support the SwapBuffers code properly.

    Signed-off-by: Kristian Høgsberg <krh@bitplanet.net>
Comment 1 Harald Judt 2010-04-03 06:12:44 UTC
Sorry, I should also have mentioned that I'm using compiz when this happens.
Comment 2 Brian Rogers 2010-04-04 23:59:20 UTC
This might be a framebuffer compression issue. Does putting the following in your device section in xorg.conf help?

Option "FramebufferCompression" "false"
Comment 3 Harald Judt 2010-04-06 02:52:59 UTC
(In reply to comment #2)
> This might be a framebuffer compression issue. Does putting the following in
> your device section in xorg.conf help?
> 
> Option "FramebufferCompression" "false"

No, it does not. Here are the other xorg.conf settings:

Section "Device"
    Identifier  "Intel"
    Driver  "intel"

    # Features
    Option "XvMC" "true"
    Option "XvMCSurfaces" "6"

    # Tweaks
    Option "AccelMethod" "UXA"
    Option "PageFlip" "true"
    Option "TripleBuffer" "true"
    Option "XAANoOffscreenPixmaps" "true"
    Option "BackingStore" "true"
    #Option "FrameBufferCompression" "true"
    Option "MigrationHeuristic" "greedy"
    #Option "Tiling" "false"
    #Option "ExaNoComposite" "false"
EndSection
Comment 4 Harald Judt 2010-04-06 03:00:28 UTC
If I revert the following (or the equivalent in later revisions),
everything works fine again:

diff --git a/src/mesa/drivers/dri/intel/intel_tex_image.c b/src/mesa/drivers/dri/intel/intel_tex_image.c
index 66d61f9..a8f7e6c 100644
--- a/src/mesa/drivers/dri/intel/intel_tex_image.c
+++ b/src/mesa/drivers/dri/intel/intel_tex_image.c
@@ -749,7 +749,8 @@ intelSetTexBuffer2(__DRIcontext *pDRICtx, GLint target,
if (!intelObj)
return;
- intel_update_renderbuffers(pDRICtx, dPriv);
+ if (!dPriv->validBuffers)
+ intel_update_renderbuffers(pDRICtx, dPriv);
rb = intel_fb->color_rb[0];
/* If the region isn't set, then intel_update_renderbuffers was unable
Comment 5 Kristian Høgsberg 2010-05-10 05:52:27 UTC

*** This bug has been marked as a duplicate of bug 27420 ***

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.