Bug 12923 - [965GM] GLX content of window gets disturbed when moving other window above it
Summary: [965GM] GLX content of window gets disturbed when moving other window above it
Status: RESOLVED FIXED
Alias: None
Product: xorg
Classification: Unclassified
Component: Driver/intel (show other bugs)
Version: git
Hardware: x86 (IA32) Linux (All)
: medium normal
Assignee: Jesse Barnes
QA Contact: Xorg Project Team
URL:
Whiteboard:
Keywords:
Depends on:
Blocks: 13493
  Show dependency treegraph
 
Reported: 2007-10-25 05:53 UTC by Jens Stroebel
Modified: 2009-01-19 06:20 UTC (History)
2 users (show)

See Also:
i915 platform:
i915 features:


Attachments
xorg.conf used on Dell D830 (intel 965GM) (3.77 KB, text/plain)
2008-01-07 08:23 UTC, Jens Stroebel
no flags Details
log of xorg which shows disturbance on GLX-content when other window gets moved above (23.13 KB, text/plain)
2008-01-07 08:24 UTC, Jens Stroebel
no flags Details
disturbance on "teapot" display when moving xterm above (477.07 KB, image/png)
2008-02-06 04:20 UTC, Jens Stroebel
no flags Details
disturbance on "glxgears" when moving xterm above (65.01 KB, image/png)
2008-02-06 04:25 UTC, Jens Stroebel
no flags Details

Description Jens Stroebel 2007-10-25 05:53:55 UTC
Starting e.g. glxgears and then moving another window above glxgears' , the contents of glxgears' window get disturbed (showing horizontal, black disturbances) at the height of the upper and lower borders of the window being moved above it.
This effect also occurs with an application with GLX content we are using here for purposes of data-visualization, so cannot be glxgears' fault.

setup info:
Dell latitude D830 w. intel 965GM graphics chip
linux 2.6.22.9
xorg-libs (from git 2007-10-24)
xorg-xserver  (from git 2007-10-24)
xorg-drivers (from git 2007-10-24)
Mesa (from git 2007-10-24)
drm (from git 2007-10-24)
pixman (from git 2007-10-24)
Comment 1 Jens Stroebel 2007-10-25 06:14:28 UTC
Oh yes: using 
Option "AccelMethod" "EXA"
maybe this matters ...
Comment 2 Gordon Jin 2007-12-02 19:26:17 UTC
I'm not seeing this issue with the latest git code. Are you still be able to reproduce it with the latest git code?

Does it work fine with XAA or NoAccel?
Comment 3 Jens Stroebel 2007-12-10 06:02:28 UTC
(In reply to comment #2)
> I'm not seeing this issue with the latest git code. Are you still be able to
> reproduce it with the latest git code?
> 
> Does it work fine with XAA or NoAccel?
> 

Yes; I am absolutely able to reproduce the described effect with current, git-checked out versions.
It may be easier to see if you maximize the glxgears window before moving another window in front of it, preferrably with it's upper or lower edge at a height at which the red wheel is displayed too. 

As bug #12922 is still present for me here, too, it is impossible for me to say if a disturbance takes place using XAA - I simply cannot see it.

With 
Option "NoAccel" "True"
the performance is unusably slow; it seems as if the disturbance does not occur. While glxgears displays about 70FPS at it's textual output, the visual impression suggests it's rather 2FPS or the like.

slightly changed setup info:
Dell latitude D830 w. intel 965GM graphics chip
linux 2.6.23.9
xorg-libs (from git 2007-12-10)
xorg-xserver  (from git 2007-12-10)
xorg-drivers (from git 2007-12-10)
Mesa (from git 2007-12-10)
drm (from git 2007-12-10)
pixman (from git 2007-12-10)
Comment 4 Jens Stroebel 2007-12-13 07:12:04 UTC
(In reply to comment #2)
> I'm not seeing this issue with the latest git code. Are you still be able to
> reproduce it with the latest git code?
> 
> Does it work fine with XAA or NoAccel?

Now that XAA is usable again here, I tried it with XAA. The effect is equally present as with EXA.
Comment 5 Michael Fu 2008-01-03 21:42:51 UTC
Jens, would you please post your x log file and xorg.conf file for reference here? 
Comment 6 Jens Stroebel 2008-01-07 08:23:18 UTC
Created attachment 13572 [details]
xorg.conf used on Dell D830 (intel 965GM)
Comment 7 Jens Stroebel 2008-01-07 08:24:20 UTC
Created attachment 13573 [details]
log of xorg which shows disturbance on GLX-content when other window gets moved above
Comment 8 Jens Stroebel 2008-01-23 04:52:42 UTC
For additional/updated information:

setup:

xorg libs from git (2008-01-07)
libdrm from git (2008-01-07)
pixman from git (2008-01-07)

xorg server 1.4-branch (2008-01-22)
video-intel 2.2-branch (2008-01-22)

Mesa-7.0.2
drm kernel modules from linux-2.6.23.14
linux kernel 2.6.23.14

The described "stripes" still happen when another window is moved above the one with GLX content.
Comment 9 Gordon Jin 2008-01-23 17:12:48 UTC
So this happens on both git drivers and stable drivers (Jens performed 2.2.1 release testing).
Comment 10 Jesse Barnes 2008-02-05 16:40:59 UTC
Jens, would it be possible to get a screenshot or photo of the corruption you're seeing?
Comment 11 Jens Stroebel 2008-02-06 04:20:03 UTC
Created attachment 14173 [details]
disturbance on "teapot" display when moving xterm above

snapshot of the Mesa-example-application teapot when moving an xterm above it. The disturbances occur at the upper/lower boundaries of the xterm window to the left & the right of it. As the snapshot delays a little, this cannot exactly be seen on the picture.
Comment 12 Jens Stroebel 2008-02-06 04:25:20 UTC
Created attachment 14174 [details]
disturbance on "glxgears" when moving xterm above

Disturbance on an enlarged glxgears window. The effect is not as clearly visible as in the teapot example as too much of the window is black.
Comment 13 Jens Stroebel 2008-02-06 08:26:12 UTC
(In reply to comment #9)
> So this happens on both git drivers and stable drivers (Jens performed 2.2.1
> release testing).
> 

Just a tiny info bit:

The effect still persists with Mesa from git (mesa_7_0_branch for Mesa-7.0.3-rc1).
Comment 14 Jesse Barnes 2008-02-12 15:30:24 UTC
I may be seeing the same thing, though in my case the damaged portions of the glxgears display are restored when the next frame is displayed, so they're really transient.  Is that what you're seeing or is the damage permanent?

Also, do you see the problem if you force indirect rendering?  E.g. LIBGL_ALWAYS_INDIRECT=true glxgears?
Comment 15 Jens Stroebel 2008-02-13 07:48:38 UTC
(In reply to comment #14)
> I may be seeing the same thing, though in my case the damaged portions of the
> glxgears display are restored when the next frame is displayed, so they're
> really transient.  Is that what you're seeing or is the damage permanent?

No, that is the effect I am seeing too.
I was told to report this, however, as it was speculated if this effect would point to an underlying problem of greater importance (corruption somewhere).

> Also, do you see the problem if you force indirect rendering?  E.g.
> LIBGL_ALWAYS_INDIRECT=true glxgears?

Yes, I see this with LIBGL_ALWAYS_INDIRECT=true also. It's easier to see with the teapot example, though. There, too, it happens regardsless of LIBGL_ALWAYS_INDIRECT=true.

Comment 16 Eric Anholt 2008-02-13 10:53:55 UTC
Thanks for providing a screenshot so I knew what to look for.

I've tried to reproduce this on my GM965 with mesa master and a gnome desktop (empathy window) dragged over a maximized glxgears or teapot, and can't see the pictured corruption.
Comment 17 martin 2008-02-19 13:35:17 UTC
I had no problem reproducing this using the 2.2.1 RC drop downloaded from:
http://xorg.freedesktop.org/archive/individual/driver/xf86-video-intel-2.2.0.90.tar.gz

Using 965GM and Ubuntu Gutsy. Maximized glxgears and then dragged a gnome calculator window around over it.

Here is two more screenshots:
http://files.minimum.se/bug_attachments/xorg_intel/bug12923/Screenshot-4.png
http://files.minimum.se/bug_attachments/xorg_intel/bug12923/moving_calculator_disturbs_glxgears.png

When running under NoAccel I could not trigger the bug though I got like 1 FPS.
Comment 18 Jesse Barnes 2008-02-19 14:46:48 UTC
Jens, can you try upgrading your Mesa to master along with your DRM modules?  From Eric's report, it sounds like this may be fixed in git...
Comment 19 Jens Stroebel 2008-02-20 04:54:59 UTC
(In reply to comment #18)
> Jens, can you try upgrading your Mesa to master along with your DRM modules? 
> From Eric's report, it sounds like this may be fixed in git...

Unfortunately, it's not.

Starting teapot (Mesa example app), dragging xterm up and down in front of it: stripes. It is not visible for the glxgears case, it seems. Doesn't make it easier...

This is with:

linux kernel 2.6.23.16

all parts of xorg (xserver, libs, drivers) from git HEAD of today (2008-02-20)
drm kernel modules from git HEAD of today (2008-02-20)
mesa from git HEAD of today (2008-02-20)
Comment 20 Jesse Barnes 2008-03-18 18:21:23 UTC
Ok, thanks Jens.  I'll have to dig into how we communicate damage around and how 3D window contents are preserved, I'm not very familiar with it...
Comment 21 Wang Zhenyu 2008-03-25 23:11:05 UTC
I can produce this on mesa_7_0_branch with xserver-1.4, but can't produce with mesa master with xserver master. 

This should be a mesa problem. 
Comment 22 Jens Stroebel 2008-03-27 06:46:43 UTC
(In reply to comment #21)
> I can produce this on mesa_7_0_branch with xserver-1.4, but can't produce with
> mesa master with xserver master. 

I can reproduce it either way ... but

> This should be a mesa problem. 

you are probably right there, as it's in a GLX area after all...

Comment 23 Jesse Barnes 2008-03-28 08:11:25 UTC
I talked with Eric about this a little, and there are some potential issues:
  - apps dealing with expose events correctly?
    glxgears doesn't, so any lost bits will have to be re-rendered and
    displayed in the next frame
  - cliprect update races
    the X server will always draw with updated cliprects, but the frame
    displayed by a DRI app may have been rendered with a stale cliprect list
    since the sequence of events is:
    0) cliprects set to X
    1) DRI app acquires lock
    2) DRI app renders
    3) DRI app drops lock
    4) X server acquires lock
    5) X server sets cliprects to Y
    6) X server draws to screen
    7) X server drops lock
    so between 3 and when X renders, the cliprects may have changed, causing
    some artifacts like what you see

Eric, did I capture that right?  Re-directed direct rendering should solve this problem, since there won't be any clipping race, but it's odd that you see it with the latest bits while Zhenyu wasn't (I'll try again).
Comment 24 Jens Stroebel 2008-03-31 06:20:59 UTC
(In reply to comment #23)

> [..snipped..] Re-directed direct rendering should solve this
> problem, since there won't be any clipping race, but it's odd that you see it
> with the latest bits while Zhenyu wasn't (I'll try again).

The effect I'm seeing are black stripes across the displayed area, for which glxgears may not be too good an example to see them; especially if the are gone quite instantaneously.
The teapot program from Mesa might be better suited because of the lighter "floor". But it's definitely still there, checked it today with everything from git (2008-03-31).

Additionally, when teapot runs and I move a glxgears window up and down ANYWHERE on the screen, quite intense disturbances get displayed in the teapot area.
Comment 25 Jesse Barnes 2008-12-18 13:03:33 UTC
Marking this one as fixed since it should be with DRI2.
Comment 26 Jens Stroebel 2009-01-19 06:20:56 UTC
(In reply to comment #25)
> Marking this one as fixed since it should be with DRI2.
> 

I can confirm that it is.
It's also fixed with 

kernel 2.6.28
libdrm-2.4.4
xserver master
xorg-libs (all master)
xf86-video-intel-2.6.0

and running EXA, too.


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.