[Pixman] [PATCH 28/32] armv6: Add fetcher for x8r8g8b8 nearest-neighbour transformed images
Ben Avison
bavison at riscosopen.org
Thu Aug 7 09:50:24 PDT 2014
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%
---
pixman/pixman-arm-simd-asm-scaled.S | 8 ++++++++
pixman/pixman-arm-simd.c | 9 +++++++++
2 files changed, 17 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 a9d8e7d..23e3ab5 100644
--- a/pixman/pixman-arm-simd.c
+++ b/pixman/pixman-arm-simd.c
@@ -177,6 +177,7 @@ cputype##_get_scanline_nearest_scaled_cover_##name (pixman_iter_t *iter, \
}
BIND_GET_SCANLINE_NEAREST_SCALED_COVER (armv6, a8r8g8b8, uint32_t)
+BIND_GET_SCANLINE_NEAREST_SCALED_COVER (armv6, x8r8g8b8, uint32_t)
BIND_GET_SCANLINE_NEAREST_SCALED_COVER (armv6, r5g6b5, uint16_t)
void
@@ -411,6 +412,14 @@ static const pixman_iter_info_t arm_simd_iters[] =
NULL
},
+ { PIXMAN_x8r8g8b8,
+ PIXMAN_ARM_NEAREST_SCALED_COVER_FLAGS,
+ ITER_NARROW | ITER_SRC,
+ NULL,
+ armv6_get_scanline_nearest_scaled_cover_x8r8g8b8,
+ NULL
+ },
+
{ PIXMAN_r5g6b5,
(FAST_PATH_STANDARD_FLAGS |
FAST_PATH_ID_TRANSFORM |
--
1.7.5.4
More information about the Pixman
mailing list