diff options
author | Ben Avison <bavison@riscosopen.org> | 2014-08-04 19:05:24 +0100 |
---|---|---|
committer | Ben Avison <bavison@riscosopen.org> | 2015-10-15 15:04:05 +0100 |
commit | dc61d6bc5c5a83651cedcf15c92b8e3c877f6659 (patch) | |
tree | 4402a86db46effa89dd2581297083e31f4ad5eb4 | |
parent | 2cbd45c9e4ea46c3ba804667dee892ebd996e2c9 (diff) |
armv6: Add fetcher for x8r8g8b8 nearest-neighbour transformed images
This is related to the a8r8g8b8 nearest-scaled-cover fetcher. Below are
benchmarks for add_x888_8888, which uses it.
lowlevel-blt-bench -n :
Before After
Mean StdDev Mean StdDev Confidence Change
L1 12.0 0.0 45.0 0.5 100.0% +275.3%
L2 9.2 0.1 30.4 1.2 100.0% +231.6%
M 8.6 0.0 27.8 0.1 100.0% +224.0%
HT 6.0 0.0 15.4 0.1 100.0% +158.5%
VT 5.9 0.0 14.5 0.1 100.0% +146.2%
R 5.7 0.0 14.1 0.1 100.0% +145.8%
RT 2.9 0.0 5.6 0.1 100.0% +91.4%
affine-bench:
Before After
Mean StdDev Mean StdDev Confidence Change
0.5 12.1 0.0 32.5 0.1 100.0% +169.6%
0.75 11.3 0.0 30.0 0.0 100.0% +165.1%
1.0 10.7 0.0 27.1 0.0 100.0% +153.7%
1.5 9.6 0.0 24.1 0.0 100.0% +151.6%
2.0 8.8 0.0 21.5 0.0 100.0% +145.1%
-rw-r--r-- | pixman/pixman-arm-simd-asm-scaled.S | 8 | ||||
-rw-r--r-- | pixman/pixman-arm-simd.c | 2 |
2 files changed, 10 insertions, 0 deletions
diff --git a/pixman/pixman-arm-simd-asm-scaled.S b/pixman/pixman-arm-simd-asm-scaled.S index 44f565a..f018e76 100644 --- a/pixman/pixman-arm-simd-asm-scaled.S +++ b/pixman/pixman-arm-simd-asm-scaled.S @@ -162,6 +162,14 @@ generate_nearest_scaled_cover_function \ pixman_get_scanline_nearest_scaled_cover_a8r8g8b8_asm_armv6, 32, \ 3, 3 /* prefetch distances */, nop_macro, nop_macro +.macro convert_x888_8888, reg, tmp + orr reg, reg, #0xFF000000 +.endm + +generate_nearest_scaled_cover_function \ + pixman_get_scanline_nearest_scaled_cover_x8r8g8b8_asm_armv6, 32, \ + 2, 3 /* prefetch distances */, nop_macro, convert_x888_8888 + .macro init_ge msr CPSR_s, #0x50000 .endm diff --git a/pixman/pixman-arm-simd.c b/pixman/pixman-arm-simd.c index 60833ec..08aaad5 100644 --- a/pixman/pixman-arm-simd.c +++ b/pixman/pixman-arm-simd.c @@ -140,6 +140,7 @@ pixman_get_scanline_nearest_scaled_cover_##name##_asm_##cputype ( \ width, x, ux, dest, source, mask); PIXMAN_ARM_BIND_GET_SCANLINE_NEAREST_SCALED_COVER (armv6, a8r8g8b8, 8888, uint32_t) +PIXMAN_ARM_BIND_GET_SCANLINE_NEAREST_SCALED_COVER (armv6, x8r8g8b8, x888, uint32_t) PIXMAN_ARM_BIND_GET_SCANLINE_NEAREST_SCALED_COVER (armv6, r5g6b5, 0565, uint16_t) void @@ -374,6 +375,7 @@ static const pixman_iter_info_t arm_simd_iters[] = PIXMAN_ARM_NEAREST_SCALED_COVER_FETCHER (armv6, a8r8g8b8), PIXMAN_ARM_UNTRANSFORMED_COVER_FETCHER (armv6, x8r8g8b8), + PIXMAN_ARM_NEAREST_SCALED_COVER_FETCHER (armv6, x8r8g8b8), PIXMAN_ARM_UNTRANSFORMED_COVER_FETCHER (armv6, r5g6b5), PIXMAN_ARM_NEAREST_SCALED_COVER_FETCHER (armv6, r5g6b5), |