Faster fetch for the C variant of r5g6b5 src/dest iterator
authorSiarhei Siamashka <siarhei.siamashka@gmail.com>
Mon, 3 Dec 2012 15:42:21 +0000 (17:42 +0200)
committerSiarhei Siamashka <siarhei.siamashka@gmail.com>
Sun, 27 Jan 2013 18:48:31 +0000 (20:48 +0200)
commita47ed2c31180e6c3b332747a1721731e0649b10f
treedf7a10d3b9ad9e0facb0e2efb5d5200a79e23adc
parente66fd5ccb6b69dfa1acde36220dc3c3c44026890
Faster fetch for the C variant of r5g6b5 src/dest iterator

Processing two pixels at once is used to reduce the number of
arithmetic operations.

The speedup relative to the generic fetch_scanline_r5g6b5() from
"pixman-access.c" (pixman was compiled with gcc 4.7.2):

    MIPS 74K        480MHz  :  20.32 MPix/s ->  26.47 MPix/s
    ARM11           700MHz  :  34.95 MPix/s ->  38.22 MPix/s
    ARM Cortex-A8  1000MHz  :  87.44 MPix/s -> 100.92 MPix/s
    ARM Cortex-A9  1700MHz  : 150.95 MPix/s -> 158.13 MPix/s
    ARM Cortex-A15 1700MHz  : 148.91 MPix/s -> 155.42 MPix/s
    IBM Cell PPU   3200MHz  :  75.29 MPix/s ->  98.33 MPix/s
    Intel Core i7  2800MHz  : 257.02 MPix/s -> 376.93 MPix/s

That's the performance for C code (SIMD and assembly optimizations
are disabled via PIXMAN_DISABLE environment variable).
pixman/pixman-fast-path.c