Bug 28768

Summary: [i965+] [2.12 regression] gtkperf->circles rendering speed is low
Product: xorg Reporter: Artem S. Tashkinov <aros>
Component: Driver/intelAssignee: Chris Wilson <chris>
Status: RESOLVED FIXED QA Contact: Xorg Project Team <xorg-team>
Severity: normal    
Priority: medium CC: fdziarmagowski
Version: git   
Hardware: x86 (IA32)   
OS: Linux (All)   
Whiteboard:
i915 platform: i915 features:
Attachments:
Description Flags
i915_error_state triggered by gtkperf
none
Flush the magic CA rectangle
none
i915_error_state triggered by gtkperf with Flush the magic CA rectangle applied
none
Flush the rectangle before the magic CA rectangle none

Description Artem S. Tashkinov 2010-06-26 05:44:59 UTC
Run gtkperf under Intel drivers 2.10 v. 2.12, the circles part of test will be very slow in 2.12.

GtkPerf 0.40 - Starting testing: Sat Jun 26 18:40:58 2010

GtkEntry - time:  0.02
GtkComboBox - time:  0.68
GtkComboBoxEntry - time:  0.33
GtkSpinButton - time:  0.13
GtkProgressBar - time:  0.12
GtkToggleButton - time:  0.09
GtkCheckButton - time:  0.07
GtkRadioButton - time:  0.09
GtkTextView - Add text - time:  0.17
GtkTextView - Scroll - time:  0.15
GtkDrawingArea - Lines - time:  1.08
*** GtkDrawingArea - Circles - time: 10.02 ***
GtkDrawingArea - Text - time:  0.89
GtkDrawingArea - Pixbufs - time:  0.12
 --- 
Total time: 13.97
Comment 1 Chris Wilson 2010-06-26 05:52:26 UTC
It's all part of the greater plan.
Comment 2 Chris Wilson 2010-08-03 12:01:46 UTC
Just in case anybody else reads bug reports, the issue here is that compositing on in i965_render.c is absymally slow. I am trying to rectify that, at which point everything will be faster than before. :)
Comment 3 Artem S. Tashkinov 2010-09-30 01:03:49 UTC
Intel Driver 2.13 RC1:

GtkPerf 0.40 - Starting testing: Thu Sep 30 14:03:10 2010

GtkEntry - time:  0.02
GtkComboBox - time:  0.47
GtkComboBoxEntry - time:  0.36
GtkSpinButton - time:  0.14
GtkProgressBar - time:  0.13
GtkToggleButton - time:  0.12
GtkCheckButton - time:  0.07
GtkRadioButton - time:  0.09
GtkTextView - Add text - time:  0.23
GtkTextView - Scroll - time:  0.12
GtkDrawingArea - Lines - time:  0.97
GtkDrawingArea - Circles - time:  9.77
GtkDrawingArea - Text - time:  0.88
GtkDrawingArea - Pixbufs - time:  0.12
 --- 
Total time: 13.51
Comment 4 Chris Wilson 2010-09-30 01:50:31 UTC
You may have noticed that I've not had much time to do ddx work this Q. :(
Comment 5 Chris Wilson 2010-12-07 04:23:50 UTC
I believe I've made progress for Ironlake+ by removing the gratuitous flushing and fixing the vertex batching, gen4 is fubar however. That will have to wait for the second stage of the grand and glorious plan.
Comment 6 Chris Wilson 2011-06-04 02:21:19 UTC
I've finally landed the first step on my grandiose plan: --enable-sna. This fixes the major performance regression for circles on gen4 and all of the wine rendering errors...
Comment 7 Fryderyk Dziarmagowski 2011-06-04 08:28:40 UTC
Created attachment 47527 [details]
i915_error_state triggered by gtkperf
Comment 8 Fryderyk Dziarmagowski 2011-06-04 08:29:25 UTC
This is great news! Thanks for your hard work.

Unfortunately, running xf86-video-intel master with sna enabled causes lockups on my gen4 GPU. Running gtkperf, 3D applications (like Trine) or even scrolling in a terminal causes a lockup (not a hard one, I can switch to linux tty and dump contents of i915_error_state - see attachment).

Do I need special xorg, Mesa and versions to be able to run git master on my setup?
Comment 9 Chris Wilson 2011-06-04 10:15:48 UTC
Created attachment 47530 [details] [review]
Flush the magic CA rectangle

I missed one. Don't look too closely, or the gen4 backend will make you cry and in your horror you will understand why the RENDER engine is so much slower...
Comment 10 Fryderyk Dziarmagowski 2011-06-04 10:40:51 UTC
I wish, I can say your patch changes something, but it still got same lockup.
Comment 11 Fryderyk Dziarmagowski 2011-06-04 10:41:45 UTC
Created attachment 47532 [details]
i915_error_state triggered by gtkperf with Flush the magic CA rectangle applied
Comment 12 Chris Wilson 2011-06-04 11:05:02 UTC
Created attachment 47533 [details] [review]
Flush the rectangle before the magic CA rectangle

Ah, that's because I flushed too late and ended up with two flushes afterwards and nothing between the two rectangles...

Hopefully this makes things work again.
Comment 13 Fryderyk Dziarmagowski 2011-06-04 11:30:34 UTC
It's working now! And it is pretty fast:

GtkPerf 0.40 - Starting testing: Sat Jun  4 20:27:02 2011

GtkEntry - time:  0,02
GtkComboBox - time:  0,54
GtkComboBoxEntry - time:  0,38
GtkSpinButton - time:  0,07
GtkProgressBar - time:  0,03
GtkToggleButton - time:  0,08
GtkCheckButton - time:  0,08
GtkRadioButton - time:  0,15
GtkTextView - Add text - time:  0,28
GtkTextView - Scroll - time:  0,09
GtkDrawingArea - Lines - time:  0,38
GtkDrawingArea - Circles - time:  1,36
GtkDrawingArea - Text - time:  0,52
GtkDrawingArea - Pixbufs - time:  0,22
 --- 
Total time:  4,22

There are some other issues (I still got urxvt lockup), I will open a new ticket shortly.

Many thanks Chris!
Comment 14 Chris Wilson 2011-06-16 05:42:28 UTC
And the nuisance code in uxa is gone:

commit 855ced5a4eb67e287001ae22cb6489639c548cfa
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date:   Thu Jun 16 13:24:14 2011 +0100

    uxa: Remove the attempt to use the 3D pipeline for core rendering
    
    The attempt was still ridden with bugs, such as
    
    http://bugs.freedesktop.org/show_bug.cgi?id=28768
    http://bugs.freedesktop.org/show_bug.cgi?id=28798
    http://bugs.freedesktop.org/show_bug.cgi?id=28908
    http://bugs.freedesktop.org/show_bug.cgi?id=29401
    
    A fresh approach was taken with SNA, but in the mean time before that
    can be enabled downstream, restore correct behaviour.
    
    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.