]> git.cworth.org Git - cworth.org/commitdiff
Add render_bench post
authorCarl Worth <cworth@cworth.org>
Thu, 27 Sep 2007 19:44:43 +0000 (12:44 -0700)
committerCarl Worth <cworth@cworth.org>
Thu, 27 Sep 2007 19:44:43 +0000 (12:44 -0700)
src/exa/i965/render_bench.mdwn [new file with mode: 0644]
src/exa/i965/render_bench/render_bench-exa.log [new file with mode: 0644]
src/exa/i965/render_bench/render_bench-offscreen.png [new file with mode: 0644]
src/exa/i965/render_bench/render_bench-xaa.log [new file with mode: 0644]
src/exa/i965/render_bench/render_bench.png [new file with mode: 0644]

diff --git a/src/exa/i965/render_bench.mdwn b/src/exa/i965/render_bench.mdwn
new file mode 100644 (file)
index 0000000..00736c9
--- /dev/null
@@ -0,0 +1,90 @@
+[[meta title="Running render_bench against EXA/i965"]]
+
+[[tag exa performance xorg i965]]
+
+Earlier this month I attended the X Developers' Summit in Cambridge,
+UK (not the Cambridge near Boston, USA). We stayed at Clare College
+which, like all of the University of Cambridge colleges that I saw, is
+immaculately well-kept and quite beautiful. Just look at the
+[gardens](http://www.clare.cam.ac.uk/about/gardens.html) I walked past
+every day to get from my room to the conference room in the
+library. Kudos to the X.Org foundation for arranging such a beautiful
+site, (I think Daniel Stone and Matthew Garrett deserve particular
+thanks), and for providing travel expenses so I could attend.
+
+Adam "ajax" Jackson was kind enough to write up some [notes on my
+talk](http://www.x.org/wiki/Events/XDS2007/Notes#head-d045b0de9e63cb633cdac00d4c3e9140cfb2e7eb)
+and the other talks as well. I haven't posted slides from the talk,
+but it really wasn't much more than a condensed version of exa-related
+blog entries I've made, (and which are linked to in Adam's writeup).
+
+One of the things I asked for in the talk is more benchmarks for 2D
+rendering---in particular real-world applications with benchmarking
+modes and micro-benchmarks distilled from real-world
+applications. Vincent Torri recently reminded me that Carsten
+"rasterman" Haitzler wrote
+[render_bench](http://www.rasterman.com/files/render_bench.tar.gz) a
+long time ago precisely to measure the performance of XRender, (and to compare it to his imlib2 software).
+
+I hadn't run `render_bench` since I started playing with EXA and the
+i965 chip, so it was definitely a worthwhile thing to do. Here are the
+results I got (comparing XAA and EXA both against imlib2):
+
+[[img render_bench-offscreen.png]]
+
+All of the numbers are from the same 2.13GHz dual-core Intel
+machine. But the absolute numbers aren't interesting anyway. The
+interesting part is the huge improvement in X Render performance going
+from XAA to EXA for the i965 device. It goes from 2-8 times slower
+than imlib2 to 1.3-12.9 times faster. Anyone interested in the raw
+times can view the [EXA
+log](http://cworth.org/exa/i965/render_bench/render_bench-exa.log) and
+[XAA
+log](http://cworth.org/exa/i965/render_bench/render_bench-exa.log)
+files.
+
+One thing that would be useful is for someone to augment the framework
+to also test the same drawing operations through cairo. It would be
+good to verify that none of the cairo software layers get in the way
+of this performance, (I can imagine cairo doing something like setting
+up and tearing down XRender Picture objects rather than reusing them,
+but hopefully it will perform just as well).
+
+And I should point out that this improvement is not due to anything
+I've done. This is basically just an upstream xserver tree, (it might
+have my glyph-pixmaps change but they are not relevant here). So kudos
+to the EXA hackers I mentioned in my talk, (Keith Packard, Zack Rusin,
+Eric Anholt, and Michel Dänzer). I definitely need to amend my [what
+EXA gets right](http://cworth.org/exa/what_exa_gets_right/) post to
+add image-scaling to window-copying and solid-fills.
+
+This also isn't with any special hacks to the xf86-driver-intel
+source, (I'm using upstream commit 286f5df0b from Sep. 6). This
+benchmark clearly isn't hitting the same compositing slowness I'm
+seeing with [glyph
+rendering](http://cworth.org/exa/i965/eliminating_glyph_fallbacks/)
+and that might be because it's using larger images than the generally
+tiny images that are used for glyphs, (but I'm just guessing---I
+haven't looked closely).
+
+Meanwhile, I am rewriting the driver to eliminate all the syncs and
+flushes when compositing to fix the glyph performance. I hope to have
+something worth sharing soon.
+
+Finally, I also compared the results of `evas_xrender_x11_test with
+evas_software_x11_test`. This is similar to the original `render_bench`,
+but with a more real-world framework in place, (the evas canvas), as
+opposed to just a micro benchmark. Here XRender/EXA did not fare as
+well, scoring an evas benchmark score of 4.994 compared to the 10.418
+of the software version. (Meanwhile XAA scored 4.840 but with some
+noticeably incorrect results---the large scaled image came out just
+black). The weaker performance here might very well be because the
+evas tests do include text which `render_bench` does not, (but again I'm
+just guessing and haven't looked closely).
+
+Oh, and the evas snapshot I used for this test is
+[evas-0.9.9.023](http://enlightenment.freedesktop.org/fetch.php?file=evas-0.9.9.023.tar.gz). I
+tried to also test a newer snapshot such as
+[evas-0.9.9.041](http://download.enlightenment.org/snapshots/2007-08-26/evas-0.9.9.041.tar.gz),
+but it seems to not build the `evas_*_test` programs anymore. Perhaps
+they're now available separately?
diff --git a/src/exa/i965/render_bench/render_bench-exa.log b/src/exa/i965/render_bench/render_bench-exa.log
new file mode 100644 (file)
index 0000000..042e39a
--- /dev/null
@@ -0,0 +1,68 @@
+Available XRENDER filters:
+nearest
+bilinear
+convolution
+fast
+good
+best
+Setup...
+*** ROUND 1 ***
+---------------------------------------------------------------
+Test: Test Xrender doing non-scaled Over blends
+Time: 0.193 sec.
+---------------------------------------------------------------
+Test: Test Xrender (offscreen) doing non-scaled Over blends
+Time: 0.229 sec.
+---------------------------------------------------------------
+Test: Test Imlib2 doing non-scaled Over blends
+Time: 0.297 sec.
+*** ROUND 2 ***
+---------------------------------------------------------------
+Test: Test Xrender doing 1/2 scaled Over blends
+Time: 0.083 sec.
+---------------------------------------------------------------
+Test: Test Xrender (offscreen) doing 1/2 scaled Over blends
+Time: 0.094 sec.
+---------------------------------------------------------------
+Test: Test Imlib2 doing 1/2 scaled Over blends
+Time: 0.104 sec.
+*** ROUND 3 ***
+---------------------------------------------------------------
+Test: Test Xrender doing 2* smooth scaled Over blends
+Time: 0.624 sec.
+---------------------------------------------------------------
+Test: Test Xrender (offscreen) doing 2* smooth scaled Over blends
+Time: 0.761 sec.
+---------------------------------------------------------------
+Test: Test Imlib2 doing 2* smooth scaled Over blends
+Time: 4.602 sec.
+*** ROUND 4 ***
+---------------------------------------------------------------
+Test: Test Xrender doing 2* nearest scaled Over blends
+Time: 0.624 sec.
+---------------------------------------------------------------
+Test: Test Xrender (offscreen) doing 2* nearest scaled Over blends
+Time: 0.761 sec.
+---------------------------------------------------------------
+Test: Test Imlib2 doing 2* nearest scaled Over blends
+Time: 1.322 sec.
+*** ROUND 6 ***
+---------------------------------------------------------------
+Test: Test Xrender doing general nearest scaled Over blends
+Time: 1.246 sec.
+---------------------------------------------------------------
+Test: Test Xrender (offscreen) doing general nearest scaled Over blends
+Time: 1.599 sec.
+---------------------------------------------------------------
+Test: Test Imlib2 doing general nearest scaled Over blends
+Time: 2.280 sec.
+*** ROUND 7 ***
+---------------------------------------------------------------
+Test: Test Xrender doing general smooth scaled Over blends
+Time: 1.246 sec.
+---------------------------------------------------------------
+Test: Test Xrender (offscreen) doing general smooth scaled Over blends
+Time: 1.599 sec.
+---------------------------------------------------------------
+Test: Test Imlib2 doing general smooth scaled Over blends
+Time: 16.104 sec.
diff --git a/src/exa/i965/render_bench/render_bench-offscreen.png b/src/exa/i965/render_bench/render_bench-offscreen.png
new file mode 100644 (file)
index 0000000..ea9b200
Binary files /dev/null and b/src/exa/i965/render_bench/render_bench-offscreen.png differ
diff --git a/src/exa/i965/render_bench/render_bench-xaa.log b/src/exa/i965/render_bench/render_bench-xaa.log
new file mode 100644 (file)
index 0000000..a3d7137
--- /dev/null
@@ -0,0 +1,68 @@
+Available XRENDER filters:
+nearest
+bilinear
+convolution
+fast
+good
+best
+Setup...
+*** ROUND 1 ***
+---------------------------------------------------------------
+Test: Test Xrender doing non-scaled Over blends
+Time: 2.017 sec.
+---------------------------------------------------------------
+Test: Test Xrender (offscreen) doing non-scaled Over blends
+Time: 2.015 sec.
+---------------------------------------------------------------
+Test: Test Imlib2 doing non-scaled Over blends
+Time: 0.297 sec.
+*** ROUND 2 ***
+---------------------------------------------------------------
+Test: Test Xrender doing 1/2 scaled Over blends
+Time: 0.761 sec.
+---------------------------------------------------------------
+Test: Test Xrender (offscreen) doing 1/2 scaled Over blends
+Time: 0.760 sec.
+---------------------------------------------------------------
+Test: Test Imlib2 doing 1/2 scaled Over blends
+Time: 0.104 sec.
+*** ROUND 3 ***
+---------------------------------------------------------------
+Test: Test Xrender doing 2* smooth scaled Over blends
+Time: 19.575 sec.
+---------------------------------------------------------------
+Test: Test Xrender (offscreen) doing 2* smooth scaled Over blends
+Time: 19.571 sec.
+---------------------------------------------------------------
+Test: Test Imlib2 doing 2* smooth scaled Over blends
+Time: 4.591 sec.
+*** ROUND 4 ***
+---------------------------------------------------------------
+Test: Test Xrender doing 2* nearest scaled Over blends
+Time: 10.873 sec.
+---------------------------------------------------------------
+Test: Test Xrender (offscreen) doing 2* nearest scaled Over blends
+Time: 10.878 sec.
+---------------------------------------------------------------
+Test: Test Imlib2 doing 2* nearest scaled Over blends
+Time: 1.322 sec.
+*** ROUND 6 ***
+---------------------------------------------------------------
+Test: Test Xrender doing general nearest scaled Over blends
+Time: 17.499 sec.
+---------------------------------------------------------------
+Test: Test Xrender (offscreen) doing general nearest scaled Over blends
+Time: 17.495 sec.
+---------------------------------------------------------------
+Test: Test Imlib2 doing general nearest scaled Over blends
+Time: 2.290 sec.
+*** ROUND 7 ***
+---------------------------------------------------------------
+Test: Test Xrender doing general smooth scaled Over blends
+Time: 36.446 sec.
+---------------------------------------------------------------
+Test: Test Xrender (offscreen) doing general smooth scaled Over blends
+Time: 36.473 sec.
+---------------------------------------------------------------
+Test: Test Imlib2 doing general smooth scaled Over blends
+Time: 16.114 sec.
diff --git a/src/exa/i965/render_bench/render_bench.png b/src/exa/i965/render_bench/render_bench.png
new file mode 100644 (file)
index 0000000..ebfd25c
Binary files /dev/null and b/src/exa/i965/render_bench/render_bench.png differ