]> git.cworth.org Git - cworth.org/commitdiff
Add 'first look at Glucose' entry
authorCarl Worth <cworth@cworth.org>
Fri, 19 Oct 2007 21:47:06 +0000 (14:47 -0700)
committerCarl Worth <cworth@cworth.org>
Fri, 19 Oct 2007 21:47:06 +0000 (14:47 -0700)
src/glucose/i965/first_look.mdwn [new file with mode: 0644]
src/glucose/i965/first_look/expedite.data [new file with mode: 0644]
src/glucose/i965/first_look/expedite.png [new file with mode: 0644]

diff --git a/src/glucose/i965/first_look.mdwn b/src/glucose/i965/first_look.mdwn
new file mode 100644 (file)
index 0000000..c1c54ab
--- /dev/null
@@ -0,0 +1,94 @@
+[[meta title="A first look at Glucose on the i965"]]
+
+[[tag xorg exa performance i965]]
+
+As readers of my blog know, I've been working on improving the Intel
+965 driver within the [EXA](http://cworth.org/tag/exa/) acceleration
+architecture of the X server. Meanwhile, there's an alternate
+acceleration architecture originally
+[announced](http://lists.freedesktop.org/archives/xorg/2006-August/017527.html)
+by Zack Rusin in August 2006 called Glucose. The idea with Glucose is
+to accelerate X rendering operations by using OpenGL.
+
+Recently there's been a fair amount of activity in the various Glucose
+branches, so I thought I'd take a look to see how well it's
+working. This was quite convenient for me as the current Glucose work
+is focused only on Intel cards. Since Glucose isn't quite ready for
+prime-time yet, it does require fetching various non-master branches
+of several git repositories. It's not always obvious which branches to
+take, so José Fonseca was kind enough to writeup some [Glucose build
+instructions](http://www.freedesktop.org/wiki/Software/Glucose).
+
+I've followed those instructions and run a benchmark comparing Glucose
+and EXA. The benchmark I chose is the expedite application that comes
+with evas, (thanks to the people that kindly pointed out this newer
+benchmark to me after m recent
+[explorations](http://cworth.org/exa/i965/render_bench/) with the
+older render_bench). To get expedite you'll need the e17/libs/evas and
+e17/apps/expedite modules from [enlightenment
+CVS](http://enlightenment.org/p.php?p=download/cvs&l=en).
+
+Expedite is a nice benchmark in that it separates things like image
+blending and text rendering into separate tests, (unlike
+render_bench). It's also nice that evas includes many backends which
+can be interesting for comparison, (though I won't be looking at
+anything but its XRender-based backends here---and it looks like evas'
+cairo and OpenGL backends are not currently functional).
+
+So here are the results I got for three acceleration architectures:
+
+  1. XAA with the XAANoOffscreenPixmaps option, (this is an
+     all-software implementation for reference).
+
+  2. Glucose---the new thing we're looking at here.
+
+  3. EXA, (as available in the various glucose branches---so without
+     things like my recent glyph-pixmaps work).
+
+The results are all normalized to the performance of our baseline,
+XAA. And larger numbers are better.
+
+[[img expedite.png]]
+
+The [raw
+data](http://cworth.org/glucose/i965/first_look/expedite.data) is also
+available for anyone with particular interest, (it has non-normalized
+values as well as results from evas' software backends using both SDL
+and X11 for image transport).
+
+The quick conclusion is that, so far, I'm not getting any benefit from
+running Glucose as compared to just running an all-software
+implementation, (see how all Glucose and XAA bars are basically
+identical). I might still not have everything compiled or running
+correctly yet, but I'm quite sure that at least _some_ Glucose code
+was active during my Glucose run. That's because a glucose module
+failed to find a required symbol and crashed during the "Polygon
+Blend" test, (which is why it doesn't have a bar in the chart, nor is
+there a number for the overall "EVAS SPEED" result for Glucose).
+
+Meanwhile, it's also clear that EXA is going far too slow for text
+operations. This isn't any surprise since I've documented problems
+with slow text rendering on the i965 several times before. However,
+I've never before measured text rendering that's _quite_ this
+slow. I'm seeing speeds of only about 30k glyphs/sec. with EXA on
+these branches, while my previous testing always showed about 100k
+glyphs/sec. I suspect that there's been some regression somewhere in
+the X server or the Intel driver, (and likely unrelated to anything
+about Glucose---Keith has reported similar slowness with builds from
+the master branches).
+
+Another interesting thing to look at is the difference caused by the
+"few" variants of the "Rect Blend" and "Rect Solid" tests. When going
+from the non-few to the "few" variants, both Glucose and EXA slow down
+significantly. I'm quite happy to see these tests in this benchmark
+since it is often the setup overhead that kills you when trying to
+accelerate a small number of operations, (and applications have a
+tendency to want to do that very often). Many synthetic benchmarks are
+extremely non-useful in hiding this overhead by doing huge batches of
+operations.
+
+Meanwhile, I'm still working on fixing the horribly slow compositing
+problems in the i965 driver that are keeping text so slow. Keith
+Packard and Eric Anholt are helping me debug my code, and hopefully
+we'll soon have something to show which runs at a reasonable speed.
+
diff --git a/src/glucose/i965/first_look/expedite.data b/src/glucose/i965/first_look/expedite.data
new file mode 100644 (file)
index 0000000..2dd0fe9
--- /dev/null
@@ -0,0 +1,12 @@
+Title: Expedite comparison of Glucose and EXA
+Test   Image Blend Unscaled    Image Blend Solid Unscaled      Image Blend Nearest Scaled      Image Blend Nearest Solid Scaled        Image Blend Smooth Scaled       Image Blend Smooth Solid Scaled Image Blend Border      Image Blend Solid Border        Image Blend Border Recolor      Image Quality Scale     Image Data ARGB Image Data ARGB Alpha   Image Data YCbCr        Image Data YCbCr        Image Crossfade Text Basic      Text Styles     Text Styles Different Strings   Text Change     Textblock Basic Textblock Intl  Rect Blend      Rect Solid      Rect Blend Few  Rect Solid Few  Image Blend Occlude     Image Blend Occlude     Image Blend Occlude     Image Blend Occlude     Image Blend Occlude     Image Blend Occlude     Image Blend Occlude     Image Blend Occlude     Image Blend Occlude     Image Blend Occlude     Image Blend Occlude     Image Blend Occlude     Polygon Blend   EVAS SPEED
+#sdl   737.22  741.24  353.55  353.71  354.33  354.04  354.41  353.58  353.86  356.63  183.21  108.61  178.67  144.78  108.99  212.73  22.55   15.32   109.22  132.22  290.25  102.42  229.57  2316.83 2621.25 1283.12 1190.04 2199.01 766.30  745.26  754.79  682.39  678.74  677.66  417.25  406.86  410.40  112.06  563.50
+#x11-exa       622.51  630.31  308.25  309.40  309.45  309.62  309.13  309.39  309.42  356.18  164.19  104.43  158.99  147.68  177.48  194.27  20.49   13.68   98.10   138.86  229.72  140.33  206.49  1756.61 1892.02 1057.33 986.92  1835.71 647.75  636.06  641.94  587.21  583.45  582.27  373.42  363.99  367.70  138.68  474.20
+#x11-xaa-nop   366.64  368.87  178.93  178.94  178.82  178.96  179.01  178.74  178.99  201.84  99.72   74.15   97.35   93.40   99.54   152.16  19.86   13.05   73.09   104.47  158.20  105.57  140.10  1411.99 1554.83 636.21  594.30  1118.18 385.12  373.41  374.36  352.03  350.95  352.18  262.07  257.03  257.26  106.96  310.72
+#xr-xaa-nop    736.82  750.40  321.51  321.17  322.33  322.59  322.22  322.60  320.61  388.44  113.24  69.71   102.19  38.08   191.82  89.78   7.29    5.23    55.74   83.32   164.42  64.22   212.08  1732.53 2090.96 1295.55 1205.59 2191.94 769.36  756.66  763.89  685.08  682.32  679.61  410.31  398.08  400.17  33.96   511.10
+#xr-glucose    694.44  734.65  321.95  322.41  322.63  322.05  322.23  321.98  322.80  380.38  110.71  68.77   101.49  37.76   184.96  86.18   6.68    4.81    52.06   74.99   154.85  60.68   182.31  745.99  805.64  1272.17 1202.24 1898.08 817.16  813.42  812.72  723.15  717.82  723.23  407.87  396.75  399.45  0.0     0.0
+#xr-exa        2270.80 2321.21 722.87  723.29  723.43  723.12  723.16  723.31  723.10  980.81  192.29  108.97  162.06  197.13  445.80  15.81   1.10    0.83    11.94   13.09   40.64   43.63   344.36  1065.92 2107.49 3816.84 3583.06 5887.72 2329.64 2334.40 2338.51 2102.37 2074.81 2094.23 727.41  703.36  708.28  65.87   1161.91
+# Last 3 rows of the above, but normalized to XAA times
+xaa    1       1       1       1       1       1       1       1       1       1       1       1       1       1       1       1       1       1       1       1       1       1       1       1       1       1       1       1       1       1       1       1       1       1       1       1       1       1       1
+glucose        0.942483        0.979011        1.00137 1.00386 1.00093 0.998326        1.00003 0.998078        1.00683 0.97925 0.977658        0.986516        0.99315 0.991597        0.964237        0.959902        0.916324        0.919694        0.933979        0.900024        0.941795        0.944877        0.859628        0.430578        0.385297        0.981954        0.997221        0.865936        1.06213 1.07501 1.06392 1.05557 1.05203 1.06418 0.994053        0.996659        0.998201        0.0     0.0
+exa    3.08189 3.0933  2.24836 2.25205 2.24438 2.24161 2.24431 2.24213 2.25539 2.525   1.69807 1.56319 1.58587 5.17673 2.32405 0.176097        0.150892        0.1587  0.214209        0.157105        0.247172        0.679383        1.62373 0.615239        1.00791 2.94612 2.97204 2.68608 3.02802 3.08514 3.06132 3.06879 3.04082 3.08152 1.77283 1.76688 1.76995 1.93963 2.27335
diff --git a/src/glucose/i965/first_look/expedite.png b/src/glucose/i965/first_look/expedite.png
new file mode 100644 (file)
index 0000000..1bf83cf
Binary files /dev/null and b/src/glucose/i965/first_look/expedite.png differ