Bug 21376 - [UXA] Trapezoid performance regression
Summary: [UXA] Trapezoid performance regression
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
Depends on:
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:


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-
- 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, (see below). Could you test this and let me know if the performance improvement is sufficient for you?



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
    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:
    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.