[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