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
I made a performance improvement for trapezoids that made it into 188.8.131.521, (see below). Could you test this and let me know if the performance improvement is sufficient for you?
Author: Carl Worth <firstname.lastname@example.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