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
pixman_armv5.diff
Description: Binary data
_______________________________________________ Pixman mailing list Pixman@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/pixman