From: Carl Worth Date: Fri, 19 Oct 2007 21:47:06 +0000 (-0700) Subject: Add 'first look at Glucose' entry X-Git-Url: https://git.cworth.org/git?p=cworth.org;a=commitdiff_plain;h=9627548cd8e570faa16b2755bf5a65bb1df86ec0 Add 'first look at Glucose' entry --- diff --git a/src/glucose/i965/first_look.mdwn b/src/glucose/i965/first_look.mdwn new file mode 100644 index 0000000..c1c54ab --- /dev/null +++ b/src/glucose/i965/first_look.mdwn @@ -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 index 0000000..2dd0fe9 --- /dev/null +++ b/src/glucose/i965/first_look/expedite.data @@ -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 index 0000000..1bf83cf Binary files /dev/null and b/src/glucose/i965/first_look/expedite.png differ