diff options
author | Ben Avison <bavison@riscosopen.org> | 2014-06-18 21:25:23 +0100 |
---|---|---|
committer | Ben Avison <bavison@riscosopen.org> | 2015-10-15 13:52:05 +0100 |
commit | 350100bc41692946b9af828ed302a26ebac3865d (patch) | |
tree | 0fd046339c4cc9de088f976510173de8234ace5e | |
parent | cb9bf2cb2c89fb5655cdcb0b1b2d2c61e0bc555b (diff) |
armv6: Add src_1555_8888 fast path
lowlevel-blt-bench results, compared to using the armv6 1555 fetcher:
Before After
Mean StdDev Mean StdDev Confidence Change
L1 57.0 1.1 70.1 0.6 100.0% +23.1%
L2 41.4 1.0 44.1 1.4 100.0% +6.3%
M 49.8 0.1 59.0 0.2 100.0% +18.5%
HT 21.4 0.3 32.3 0.3 100.0% +50.9%
VT 21.0 0.3 30.2 0.3 100.0% +43.8%
R 19.7 0.2 27.0 0.2 100.0% +37.4%
RT 7.0 0.2 10.9 0.3 100.0% +56.6%
-rw-r--r-- | pixman/pixman-arm-simd-asm.S | 10 | ||||
-rw-r--r-- | pixman/pixman-arm-simd.c | 9 |
2 files changed, 19 insertions, 0 deletions
diff --git a/pixman/pixman-arm-simd-asm.S b/pixman/pixman-arm-simd-asm.S index fcfdb60..208f0de 100644 --- a/pixman/pixman-arm-simd-asm.S +++ b/pixman/pixman-arm-simd-asm.S @@ -2301,6 +2301,16 @@ generate_composite_function_single_scanline \ .endif .endm +generate_composite_function \ + pixman_composite_src_1555_8888_asm_armv6, 16, 0, 32, \ + FLAG_DST_WRITEONLY | FLAG_BRANCH_OVER, \ + 3, /* prefetch distance */ \ + src_1555_8888_init, \ + nop_macro, /* newline */ \ + nop_macro, /* cleanup */ \ + src_1555_8888_process_head, \ + src_1555_8888_process_tail + generate_composite_function_single_scanline \ pixman_get_scanline_a1r5g5b5_asm_armv6, 16, 0, 32, \ FLAG_DST_WRITEONLY | FLAG_BRANCH_OVER, \ diff --git a/pixman/pixman-arm-simd.c b/pixman/pixman-arm-simd.c index ab3bb3c..c252d83 100644 --- a/pixman/pixman-arm-simd.c +++ b/pixman/pixman-arm-simd.c @@ -43,6 +43,8 @@ PIXMAN_ARM_BIND_FAST_PATH_SRC_DST (armv6, src_0565_8888, uint16_t, 1, uint32_t, 1) PIXMAN_ARM_BIND_FAST_PATH_SRC_DST (armv6, src_x888_0565, uint32_t, 1, uint16_t, 1) +PIXMAN_ARM_BIND_FAST_PATH_SRC_DST (armv6, src_1555_8888, + uint16_t, 1, uint32_t, 1) PIXMAN_ARM_BIND_FAST_PATH_SRC_DST (armv6, add_8_8, uint8_t, 1, uint8_t, 1) @@ -274,6 +276,13 @@ static const pixman_fast_path_t arm_simd_fast_paths[] = PIXMAN_STD_FAST_PATH (SRC, a8b8g8r8, null, b5g6r5, armv6_composite_src_x888_0565), PIXMAN_STD_FAST_PATH (SRC, x8b8g8r8, null, b5g6r5, armv6_composite_src_x888_0565), + PIXMAN_STD_FAST_PATH (SRC, x1r5g5b5, null, x8r8g8b8, armv6_composite_src_1555_8888), + PIXMAN_STD_FAST_PATH (SRC, a1r5g5b5, null, x8r8g8b8, armv6_composite_src_1555_8888), + PIXMAN_STD_FAST_PATH (SRC, x1b5g5r5, null, x8b8g8r8, armv6_composite_src_1555_8888), + PIXMAN_STD_FAST_PATH (SRC, a1b5g5r5, null, x8b8g8r8, armv6_composite_src_1555_8888), + PIXMAN_STD_FAST_PATH (SRC, a1r5g5b5, null, a8r8g8b8, armv6_composite_src_1555_8888), + PIXMAN_STD_FAST_PATH (SRC, a1b5g5r5, null, a8b8g8r8, armv6_composite_src_1555_8888), + PIXMAN_STD_FAST_PATH (OVER, a8r8g8b8, null, a8r8g8b8, armv6_composite_over_8888_8888), PIXMAN_STD_FAST_PATH (OVER, a8r8g8b8, null, x8r8g8b8, armv6_composite_over_8888_8888), PIXMAN_STD_FAST_PATH (OVER, a8b8g8r8, null, a8b8g8r8, armv6_composite_over_8888_8888), |