[Pixman] [PATCH 0/5] ARMv6: New fast path implementations that utilise prefetch

Ben Avison bavison at riscosopen.org
Sat Jan 19 08:16:48 PST 2013


This is a presentation of the changes I first presented on
2012-12-21, with the improvements from my 2013-01-14 patch series
merged in, and with further adjustments to the prefetch distance for
src_8888_8888 and src_0565_0565 which improve the L2
lowlevel-blt-bench results (without adversely affecting the other
tests) to the extent that there are no longer any statistically
significant performance regressions in any lowlevel-blt-bench tests.

The diffs have been broken up in a way that no longer represents the
development process, but which will hopefully be easier to inspect
by looking at the patches in isolation.

I am no longer presenting benchmarks with the old L2 cache
configuration (allocate-on-write) because the default has now changed:
https://github.com/raspberrypi/firmware/commit/17a9a12ef4540d586e2b10632c84e18a0feedfb7

The results for lowlevel-blt-bench tests are presented alongside the
patch that changes the respective composite operation. The analysis
of these results have changed slightly from my earlier posts: now
outlying results have been discarded (the threshold chosed being
those falling outside 5 times the median absolute deviation). This
certainly reduces the standard deviations, particularly on the
faster tests like the L1 ones, and should hopefully give a more
accurate illustration of the typical speed improvement.

Due to the time it takes to run the cairo-perf-trace benchmark, I
present below only a before and after snapshot across the patch
series as a whole, rather than on a patch-by-patch basis:

Before:

[ # ]  backend                  test   min(s) median(s) stddev. count
[ # ]  image: pixman 0.29.1
[  0]  image    t-swfdec-giant-steps   20.257   20.291   0.10%    6/6
[  1]  image     t-firefox-asteroids   13.982   14.006   0.07%    6/6
[  2]  image      t-firefox-fishbowl   26.032   26.075   0.07%    6/6
[  3]  image    t-firefox-chalkboard   35.755   35.758   0.02%    5/6
[  4]  image         t-midori-zoomed    7.449    7.457   0.10%    5/6
[  5]  image     t-firefox-scrolling   30.675   30.812   0.24%    6/6
[  6]  image               t-poppler   11.504   11.545   0.23%    6/6
[  7]  image         t-chromium-tabs    4.762    4.779   0.18%    6/6
[  8]  image        t-grads-heat-map    3.707    3.723   0.43%    6/6
[  9]  image  t-firefox-canvas-alpha   19.978   20.279   0.86%    6/6
[ 10]  image     t-firefox-talos-gfx   29.465   29.535   0.27%    5/6
[ 11]  image    t-gnome-terminal-vim   20.308   20.354   0.17%    6/6
[ 12]  image      t-firefox-fishtank   21.396   21.420   0.09%    5/6
[ 13]  image             t-evolution   12.800   12.898   0.34%    6/6
[ 14]  image        t-poppler-reseau   21.339   21.853   0.88%    6/6
[ 15]  image     t-firefox-talos-svg   19.322   19.342   0.07%    6/6
[ 16]  image  t-firefox-planet-gnome   11.909   11.978   0.27%    6/6
[ 17]  image     t-firefox-particles   25.155   25.160   0.02%    5/6
[ 18]  image  t-gnome-system-monitor   26.247   26.259   0.04%    6/6
[ 19]  image        t-firefox-canvas   17.597   17.645   0.16%    6/6
[ 20]  image        t-swfdec-youtube    9.870    9.877   0.04%    5/6
[ 21]  image                  t-gvim   18.557   18.629   0.28%    6/6
[ 22]  image     t-firefox-paintball   24.541   24.556   0.02%    5/6
[ 23]  image     t-xfce4-terminal-a1   24.496   24.720   0.46%    6/6

After:

[ # ]  backend                  test   min(s) median(s) stddev. count
[ # ]  image: pixman 0.29.1
[  0]  image    t-swfdec-giant-steps   13.617   13.638   0.12%    6/6
[  1]  image     t-firefox-asteroids   10.405   10.434   0.16%    5/6
[  2]  image      t-firefox-fishbowl   22.539   22.542   0.02%    5/6
[  3]  image    t-firefox-chalkboard   35.226   35.254   0.19%    6/6
[  4]  image         t-midori-zoomed    6.323    6.341   0.15%    5/6
[  5]  image     t-firefox-scrolling   24.338   24.422   0.17%    6/6
[  6]  image               t-poppler   11.529   11.549   0.44%    6/6
[  7]  image         t-chromium-tabs    4.198    4.239   0.68%    6/6
[  8]  image        t-grads-heat-map    3.800    3.834   0.57%    6/6
[  9]  image  t-firefox-canvas-alpha   18.708   18.802   0.49%    6/6
[ 10]  image     t-firefox-talos-gfx   28.117   28.197   0.25%    6/6
[ 11]  image    t-gnome-terminal-vim   19.547   19.611   0.23%    5/6
[ 12]  image      t-firefox-fishtank   19.124   19.147   0.09%    5/6
[ 13]  image             t-evolution   11.456   11.484   0.25%    6/6
[ 14]  image        t-poppler-reseau   21.905   21.975   0.18%    5/6
[ 15]  image     t-firefox-talos-svg   18.880   18.893   0.05%    5/6
[ 16]  image  t-firefox-planet-gnome   10.637   10.640   0.94%    6/6
[ 17]  image     t-firefox-particles   23.769   23.799   0.08%    5/6
[ 18]  image  t-gnome-system-monitor   13.573   13.600   0.10%    5/6
[ 19]  image        t-firefox-canvas   16.489   16.555   0.25%    6/6
[ 20]  image        t-swfdec-youtube    9.767    9.773   0.15%    5/6
[ 21]  image                  t-gvim   18.528   18.609   0.27%    6/6
[ 22]  image     t-firefox-paintball   18.917   19.070   0.51%    6/6
[ 23]  image     t-xfce4-terminal-a1   22.211   22.403   0.43%    6/6

Percentage improvement in median results:

  t-swfdec-giant-steps  48.783
   t-firefox-asteroids  34.234
    t-firefox-fishbowl  15.673
  t-firefox-chalkboard   1.430
       t-midori-zoomed  17.600
   t-firefox-scrolling  26.165
             t-poppler  -0.035
       t-chromium-tabs  12.739
      t-grads-heat-map  -2.895
t-firefox-canvas-alpha   7.856
   t-firefox-talos-gfx   4.745
  t-gnome-terminal-vim   3.789
    t-firefox-fishtank  11.871
           t-evolution  12.313
      t-poppler-reseau  -0.555
   t-firefox-talos-svg   2.377
t-firefox-planet-gnome  12.575
   t-firefox-particles   5.719
t-gnome-system-monitor  93.081
      t-firefox-canvas   6.584
      t-swfdec-youtube   1.064
                t-gvim   0.107
   t-firefox-paintball  28.768
   t-xfce4-terminal-a1  10.342

Ben Avison (5):
  ARMv6: Lay the groundwork for later patches in the series
  ARMv6: New fill routines
  ARMv6: New blit routines
  ARMv6: New conversion routines
  ARMv6: Replacement add_8_8, over_8888_8888, over_8888_n_8888
    and over_n_8_8888 routines

 pixman/Makefile.am                  |    4 +-
 pixman/pixman-arm-simd-asm-scaled.S |  165 ++++++
 pixman/pixman-arm-simd-asm.S        |  981 ++++++++++++++++++++---------------
 pixman/pixman-arm-simd-asm.h        |  868 +++++++++++++++++++++++++++++++
 pixman/pixman-arm-simd.c            |  505 ++++++------------
 5 files changed, 1774 insertions(+), 749 deletions(-)
 create mode 100644 pixman/pixman-arm-simd-asm-scaled.S
 create mode 100644 pixman/pixman-arm-simd-asm.h

-- 
1.7.5.4



More information about the Pixman mailing list