From: Carl Worth Date: Thu, 27 Sep 2007 19:44:43 +0000 (-0700) Subject: Add render_bench post X-Git-Url: https://git.cworth.org/git?p=cworth.org;a=commitdiff_plain;h=c476c4b570c580f947f18ec8c277d604e91bc6a1 Add render_bench post --- diff --git a/src/exa/i965/render_bench.mdwn b/src/exa/i965/render_bench.mdwn new file mode 100644 index 0000000..00736c9 --- /dev/null +++ b/src/exa/i965/render_bench.mdwn @@ -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 index 0000000..042e39a --- /dev/null +++ b/src/exa/i965/render_bench/render_bench-exa.log @@ -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 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 index 0000000..a3d7137 --- /dev/null +++ b/src/exa/i965/render_bench/render_bench-xaa.log @@ -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 index 0000000..ebfd25c Binary files /dev/null and b/src/exa/i965/render_bench/render_bench.png differ