Bug 69543 - MSEgui failures with acclerated driver paths
MSEgui failures with acclerated driver paths
Status: NEW
Product: xorg
Classification: Unclassified
Component: Server/Acceleration/EXA
unspecified
Other Linux (All)
: medium normal
Assigned To: Xorg Project Team
Xorg Project Team
:
Depends on:
Blocks:
  Show dependency treegraph
 
Reported: 2013-09-18 18:56 UTC by Julio Jiménez
Modified: 2014-09-21 16:44 UTC (History)
1 user (show)

See Also:
i915 platform:
i915 features:


Attachments
Image OK (62.58 KB, image/png)
2013-09-18 19:11 UTC, Julio Jiménez
no flags Details
Image showing the issue (81.82 KB, image/png)
2013-09-18 19:12 UTC, Julio Jiménez
no flags Details
Showing the issue with default MSEide options (61.70 KB, image/png)
2013-09-18 19:13 UTC, Julio Jiménez
no flags Details
Test program screenshot (4.78 KB, image/png)
2013-09-19 11:51 UTC, Martin Schreiber
no flags Details
Test program (1.89 MB, text/plain)
2013-09-19 11:52 UTC, Martin Schreiber
no flags Details
bug confirmation (8.82 KB, image/png)
2014-04-25 08:56 UTC, Alexander
no flags Details
Test OK (2.98 KB, image/png)
2014-09-21 16:34 UTC, Martin Schreiber
no flags Details
Test not OK (3.09 KB, image/png)
2014-09-21 16:35 UTC, Martin Schreiber
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Julio Jiménez 2013-09-18 18:56:53 UTC
There is garbage on screen with some stretched XRender pictures with radeon
driver and enabled EXAPixmaps, see for example MSEide without xorg.conf

http://sourceforge.net/projects/mseide-msegui/

MSEgui uses stretched one pixel width or height pixmaps in order to draw linear
color gradients. 

If you add Option "EXAPixmaps" "off" in Section "Device" of xorg.conf display is OK but performance falls.

Same problem using NOUVEAU driver. I can't figure out how disable EXAPixmaps for nouveau driver.

Reproducible: Always
Comment 1 Julio Jiménez 2013-09-18 19:11:08 UTC
Created attachment 86093 [details]
Image OK
Comment 2 Julio Jiménez 2013-09-18 19:12:11 UTC
Created attachment 86094 [details]
Image showing the issue
Comment 3 Julio Jiménez 2013-09-18 19:13:37 UTC
Created attachment 86095 [details]
Showing the issue with default MSEide options
Comment 4 Julio Jiménez 2013-09-18 19:14:25 UTC
Comment on attachment 86094 [details]
Image showing the issue

Running MSEide with -ns option (No skin)
Comment 5 Julio Jiménez 2013-09-18 19:17:52 UTC
Using Debian stable, testing, sid, Ubuntu 12.04.... Really this happens since KMS was used IIRC. In fact using radeon.modeset=0 fixes it for some ATI cards
Comment 6 Martin Schreiber 2013-09-19 10:05:31 UTC
MSEgui renders dirty regions first on a pixmap which will be copied to screen by xcopyarea() after completed rendering.
It seems the problems with current radeon driver are independent if there are stretched xrender pictures or not.
Comment 7 Martin Schreiber 2013-09-19 11:51:25 UTC
Created attachment 86142 [details]
Test program screenshot
Comment 8 Martin Schreiber 2013-09-19 11:52:50 UTC
Created attachment 86143 [details]
Test program
Comment 9 Martin Schreiber 2013-09-19 12:00:00 UTC
Attached test program. Press Alt+ArrowDown,Esc.
The project is here:
https://gitorious.org/mseuniverse/mseuniverse/source/54e47cd378d8ef208df0dbbf69302e9ef85216ca:testcase/graphics/radeon
Comment 10 Julio Jiménez 2013-09-19 16:50:15 UTC
The same issue using nouveau driver can be solved disabling acceleration.

For example:

Section "Device"
    Identifier "Nouveau"
    Driver "nouveau"
    Option "NoAccel" "on"    
EndSection

Using radeon, only EXAPixmaps off is required.
Comment 11 Michel Dänzer 2013-09-20 08:58:01 UTC
Disabling radeon's EXAPixmaps also mostly disables hardware acceleration.
Comment 12 Julio Jiménez 2013-09-20 09:03:38 UTC
Intel driver is not affected because doesn't use EXA.
IIRC using XAA instead of EXA is working fine too so all is pointing to EXA.
Comment 13 Alexander 2014-04-25 08:56:08 UTC
Created attachment 97945 [details]
bug confirmation
Comment 14 Alexander 2014-04-25 08:57:47 UTC
I have same bug.
Comment 15 Martin Schreiber 2014-09-21 16:34:27 UTC
Created attachment 106606 [details]
Test OK
Comment 16 Martin Schreiber 2014-09-21 16:35:21 UTC
Created attachment 106608 [details]
Test not OK
Comment 17 Martin Schreiber 2014-09-21 16:44:01 UTC
We could simplify the testcase: 
https://gitorious.org/mseuniverse/mseuniverse/source/testcase/graphics/radeon
Running the program in debugger and moving the window shows an image like the attachment "Test not OK".
MSEgui draws the button glyph by a xfillrectangle() with the glyph bitmap as stipple mask. It seems that if there follows an immediate xdrawlines() which touches the xfillrectangle() area the distortion happens. Example:
xdrawlines() with ((x:24;y:25),(x:130;y:25),(x:130;y:50)) -> distorted,
xdrawlines() with ((x:24;y:25),(x:80;y:25),(x:80;y:50)) -> OK.
Also "xflush(); sleep(10ms);" or "xsync()" between xfillrectangle() and 
xdrawlines() prevents the distortion.