[Pixman] [PATCH] ARMv5 optimisations

Andre Renaud andre at bluewatersys.com
Wed Sep 26 20:18:47 PDT 2012


Hi,
I've put together an ARMv5 optimised blitter & fill routine (heavily
based on some code from the Android pixelflinger system). It provides
16 & 32-bit fills, over 8888 -> 8888 blitting and over 8888 -> 0565
blitting. I realise that ARMv5 is getting pretty old now, but it's
probably still popular enough that someone else might want this.

I've attached the patch here (please excuse the lack of inline patch -
I'll blame that on a combination of my lack of git knowledge, and
gmails inability to do text emails without line wrapping).

As the code comes from the Android code base, it is Apache licensed -
is this a problem with Pixman?

For performance results, here are the relevant numbers (tested on an
AT91SAM9G45 - ARM926EJS). The first set of the pair is before the
change, the second is after.

reference memcpy speed = 230.1MB/s (57.5MP/s for 32bpp fills)

              src_n_0565 =  L1:  19.33  L2:  19.75  M: 19.74 ( 17.16%)
 HT: 15.77  VT: 15.27  R: 15.25  RT:  7.60 (  46Kops/s)
              src_n_0565 =  L1: 195.58  L2: 126.99  M:128.46 (110.53%)
 HT: 46.37  VT: 45.73  R: 42.87  RT: 11.26 (  50Kops/s)

              src_n_x888 =  L1:  19.32  L2:  19.75  M: 19.78 ( 34.39%)
 HT: 15.79  VT: 15.38  R: 15.31  RT:  7.64 (  48Kops/s)
              src_n_x888 =  L1: 111.67  L2:  66.34  M: 65.85 (113.33%)
 HT: 36.00  VT: 35.79  R: 33.80  RT: 11.09 (  50Kops/s)

              src_n_8888 =  L1:  19.33  L2:  19.75  M: 19.78 ( 34.39%)
 HT: 15.80  VT: 15.39  R: 15.32  RT:  7.64 (  48Kops/s)
              src_n_8888 =  L1: 109.40  L2:  66.36  M: 65.89 (113.39%)
 HT: 36.03  VT: 35.90  R: 33.81  RT: 11.11 (  50Kops/s)

          over_8888_0565 =  L1:   5.08  L2:   4.49  M:  4.48 ( 11.68%)
 HT:  2.80  VT:  2.71  R:  2.69  RT:  2.22 (  23Kops/s)
          over_8888_0565 =  L1:  20.96  L2:  14.48  M: 14.63 ( 37.78%)
 HT:  8.95  VT:  8.60  R:  8.19  RT:  4.48 (  37Kops/s)

          over_8888_8888 =  L1:   3.21  L2:   3.17  M:  4.22 ( 14.68%)
 HT:  6.20  VT:  6.58  R:  6.63  RT:  4.28 (  36Kops/s)
          over_8888_8888 =  L1:  21.84  L2:  12.40  M: 12.88 ( 44.32%)
 HT:  8.77  VT:  8.85  R:  8.84  RT:  4.68 (  38Kops/s)

          over_8888_x888 =  L1:   9.24  L2:   8.25  M:  8.12 ( 28.22%)
 HT:  6.83  VT:  6.77  R:  6.67  RT:  4.29 (  36Kops/s)
          over_8888_x888 =  L1:  21.83  L2:  12.39  M: 12.88 ( 44.32%)
 HT:  8.76  VT:  8.85  R:  8.84  RT:  4.68 (  38Kops/s)


Regards,
Andre
-------------- next part --------------
A non-text attachment was scrubbed...
Name: pixman_armv5.diff
Type: application/octet-stream
Size: 22024 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/pixman/attachments/20120927/473e8d53/attachment-0001.obj>


More information about the Pixman mailing list