Bug 28120

Summary: Tint2's tooltip borders end up at 0,0 and do not disappear
Product: xorg Reporter: Alexander Lam <lambchop468>
Component: Driver/intelAssignee: Chris Wilson <chris>
Status: RESOLVED FIXED QA Contact: Xorg Project Team <xorg-team>
Severity: normal    
Priority: high CC: nbowler
Version: git   
Hardware: x86 (IA32)   
OS: Linux (All)   
Whiteboard:
i915 platform: i915 features:
Attachments:
Description Flags
Screenshot: Notice how tint2 & its tooltip is on the right of the screen, but the border for the tooltip is at 0,0. Ignore the icons in the corner, they are part of the wallpaper.
none
Screenshot 2
none
Composited tooltip none

Description Alexander Lam 2010-05-15 07:57:27 UTC
Created attachment 35673 [details]
Screenshot: Notice how tint2 & its tooltip is on the right of the screen, but the border for the tooltip is at 0,0. Ignore the icons in the corner, they are part of the wallpaper.

I have Tint2's tooltip borders enabled, but they do not draw around the tooltip. They instead end up at the upper left corner of the screen, drawn on top of whatever is there, including windows. To make the stray borders go away I have to force a redraw of the region by eg. moving a window there or making Openbox's root menu pop up there.

tint2's tooltip drawing code: http://code.google.com/p/tint2/source/browse/#svn/trunk/src/tooltip

Software being tested:

Tint2 (http://code.google.com/p/tint2/): Svn r449

xf86-video-intel: 
commit 58b089febceca1e915607bb723ee658aaa9dbed3
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date:   Sat May 15 09:11:46 2010 +0100

    uxa: Avoid using blits when with PictFilterConvolution
    
    References:
    
      Bug 28098 Compiz renders shadows wrong, garbage line of pixels along left
                and top edge of windows
      https://bugs.freedesktop.org/show_bug.cgi?id=28098
    
    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>


I bisected xf86-video-intel down to:
commit cb887cfc670bf63993bd313ff33927afb8198eae
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date:   Fri Mar 26 09:59:51 2010 +0000

    uxa: solid rects
    
    The cost of performing relocations outweigh the advantages of using the
    blitter for solids with lots of rectangles.
    
    References:
    
      Bug 22127 - [UXA] 50% performance regression for XRenderFillRectangles
      https://bugs.freedesktop.org/show_bug.cgi?id=22127
    
    By using the 3D pipeline we improve our performance by around 4x on
    i945, measured by the jxbench microbenchmark, and a factor of 10x by
    short-cutting to the 3D pipeline for blended rectangles.
    [text omitted]
Comment 1 Chris Wilson 2010-05-15 10:39:27 UTC
I've pushed:

commit 524fd2dd0da8f69d4c3f5aebe3a345fe34af609d
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date:   Sat May 15 18:23:21 2010 +0100

    uxa: Apply clip for solid rectangles.
    
    References:
    
      Bug 28120 - Tint2's tooltip borders end up at 0,0 and do not disappear
      https://bugs.freedesktop.org/show_bug.cgi?id=28120

which is the only things that stands as being different between miCompositeRects() calling CompositePicture() and uxa_solid_rects() calling uxa_screen->composite() directly. Please test.
Comment 2 Alexander Lam 2010-05-15 11:23:06 UTC
(In reply to comment #1)
> I've pushed:
> 
> commit 524fd2dd0da8f69d4c3f5aebe3a345fe34af609d
> Author: Chris Wilson <chris@chris-wilson.co.uk>
> Date:   Sat May 15 18:23:21 2010 +0100
> 
>     uxa: Apply clip for solid rectangles.
> 

I tested both up to this commit and the current one (	89f43f69a9c854fb2b82538a8938002675ca19e4)

Results are the same for both:

Good News: The border doesn't get drawn at 0,0 anymore.
Bad News: The whole tooltip is a black box. Also, my terminal (urxvt) now has a few drawing issues (the filled-in cursor doesn't show, and a few other random issues)
Comment 3 Alexander Lam 2010-05-15 11:31:20 UTC
Created attachment 35678 [details]
Screenshot 2
Comment 4 Alexander Lam 2010-05-24 15:50:04 UTC
Created attachment 35838 [details]
Composited tooltip

I retested with today's xf86-video-intel (	9d8ac271404ff219c3d40ae8f829e8b76ac7c359)

Nothing new to report with non-composited desktop.

However, I was in the mood to fire up compiz, and this is what happened (attachment).

urxvt still looks the same.
Comment 5 Chris Wilson 2010-05-25 00:17:37 UTC
*** Bug 28236 has been marked as a duplicate of this bug. ***
Comment 6 Chris Wilson 2010-05-25 01:51:57 UTC
commit b645ec83e0d86f2247b8338ceab60b9502516e70
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date:   Tue May 25 09:49:20 2010 +0100

    uxa: Apply the drawable offset to the solid rects
    
    Fixes:
    
      Bug 28120 - Tint2's tooltip borders end up at 0,0 and do not disappear
      https://bugs.freedesktop.org/show_bug.cgi?id=28120
    
    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Comment 7 Alexander Lam 2010-05-25 14:56:55 UTC
Thank you, the tooltips are working perfectly.
However, urxvt is still not drawing correctly. I still have the same issues with that as before.

Here is a testcase:

urxvt -fn "xft:sans-6" -depth 32

Even though I am using 32 bits, I am not running a compositing window manager (using openbox).
Comment 8 Nick Bowler 2010-05-25 15:11:00 UTC
I can confirm that urxvt corruption persists with -depth 32, but it appears to be working fine without this option.

Furthermore, if I run xcompmgr, then corruption persists regardless of the -depth setting.
Comment 9 Chris Wilson 2010-05-26 02:22:19 UTC
commit 03bbb4c896ef3cd275312b413a2c85d9f499c032
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date:   Wed May 26 10:16:36 2010 +0100

    uxa: Perform manual damage for CompositeRects
    
    [xserver-1.8] The damage layer doesn't wrap CompositeRects, so we need to
    manually append the damaged region ourselves. This works for
    miCompsiteRects since that translates the call into multiple invocations
    of either PolyFillRectangle or Composite, which themselves cause damage.
    
    Fixes:
    
      Bug 28120 - Tint2's tooltip borders end up at 0,0 and do not disappear
      https://bugs.freedesktop.org/show_bug.cgi?id=28120
    
    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.