Bug 21376 - [UXA] Trapezoid performance regression
Summary: [UXA] Trapezoid performance regression
Status: RESOLVED FIXED
Alias: None
Product: xorg
Classification: Unclassified
Component: Driver/intel (show other bugs)
Version: unspecified
Hardware: Other All
: medium normal
Assignee: Carl Worth
QA Contact: Xorg Project Team
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2009-04-24 04:54 UTC by Clemens Eisserer
Modified: 2009-06-22 11:17 UTC (History)
1 user (show)

See Also:
i915 platform:
i915 features:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Clemens Eisserer 2009-04-24 04:54:55 UTC
Applications using trapezoids a lot show a significant performance degradation on my system.

E.g. QGears archives 80fps on EXA (with intel-2.2.1 / xorg-1.3), however with UXA I only get ~7-10fps.
FireFox-3.1-beta3 renders the SVG (zoomed to fit in the window) in 50ms on XAA, however it takes 500ms on UXA: http://upload.wikimedia.org/wikipedia/commons/6/63/Periodic_table_%28german%29_4.svg

Oprofile shows that most time is spent inside pixman_rasterize_edge, however that code hasn't changed. I suspect some kind of suboptimal cache-setting to be the root of the slowdown.

My system is:
- Fedora Rawhide
- intel-2.7
- kernel-2.6.29.1
- xorg-1.6.1
- intel-945gm
Comment 1 Carl Worth 2009-06-22 11:17:15 UTC
Hi Clemens,

I made a performance improvement for trapezoids that made it into 2.7.99.901, (see below). Could you test this and let me know if the performance improvement is sufficient for you?

Thanks,

-Carl

commit accdbd23676d812d2345f86d8e3ee62f108841ff
Author: Carl Worth <cworth@cworth.org>
Date:   Fri May 29 15:34:20 2009 -0700

    UXA: Rasterize trapezoids to system memory, not a pixmap
    
    Since we're only doing software rasterization right now, anyway, it
    makes more sense to just rasterize to system memory and then upload
    to a pixmap once complete. This avoids expensive read-modify-write
    cycles.
    
    This results in a 2.4x speedup for a real-world test case that's
    heavy on trapezoids, which is swfdec running on the following file:
    
    http://michalevy.com/wp-content/uploads/Giant%20Steps%202007.swf
    
    Many thanks to Chris Wilson for his cairo-traces repository and
    cairo-perf-trace tool which makes it so easy to measure things
    like this.


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.