diff options
author | Taekyun Kim <tkq.kim@samsung.com> | 2011-08-29 18:10:18 +0900 |
---|---|---|
committer | Taekyun Kim <tkq.kim@samsung.com> | 2011-08-29 18:10:18 +0900 |
commit | 511798debef735a5e19426bbeefa17291c17b4b5 (patch) | |
tree | 1d295f8562a763cf6d3d56af1358240e8bb02074 | |
parent | bb29d79ceb35136ed54aea9b0efe844b35425be2 (diff) |
ARM: NEON: Bind simple repeat fast path functions and enable them
Using newly introduced simple repeat macro, we can easily add fast
paths for PIXMAN_REPEAT_NORMAL by reusing existing composite
functions.
-rw-r--r-- | pixman/pixman-arm-neon.c | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/pixman/pixman-arm-neon.c b/pixman/pixman-arm-neon.c index effb50b..5d5c754 100644 --- a/pixman/pixman-arm-neon.c +++ b/pixman/pixman-arm-neon.c @@ -262,6 +262,31 @@ pixman_blt_neon (uint32_t *src_bits, } } +/* Simple repeat fast path functions. */ +FAST_COMPOSITE_SIMPLE_REPEAT (uint16_t, neon_composite_src_0565_0565) +FAST_COMPOSITE_SIMPLE_REPEAT (uint32_t, neon_composite_src_8888_0565) +FAST_COMPOSITE_SIMPLE_REPEAT (uint16_t, neon_composite_src_0565_8888) +FAST_COMPOSITE_SIMPLE_REPEAT (uint32_t, neon_composite_src_8888_8888) +FAST_COMPOSITE_SIMPLE_REPEAT (uint32_t, neon_composite_src_x888_8888) +FAST_COMPOSITE_SIMPLE_REPEAT (uint32_t, neon_composite_over_8888_n_8888) +FAST_COMPOSITE_SIMPLE_REPEAT (uint32_t, neon_composite_over_8888_n_0565) +FAST_COMPOSITE_SIMPLE_REPEAT (uint16_t, neon_composite_over_0565_n_0565) +FAST_COMPOSITE_SIMPLE_REPEAT (uint32_t, neon_composite_over_8888_8_8888) +FAST_COMPOSITE_SIMPLE_REPEAT (uint32_t, neon_composite_over_8888_8_0565) +FAST_COMPOSITE_SIMPLE_REPEAT (uint16_t, neon_composite_over_0565_8_0565) +FAST_COMPOSITE_SIMPLE_REPEAT (uint32_t, neon_composite_over_8888_8888_8888) +FAST_COMPOSITE_SIMPLE_REPEAT (uint32_t, neon_composite_over_8888_0565) +FAST_COMPOSITE_SIMPLE_REPEAT (uint32_t, neon_composite_over_8888_8888) +FAST_COMPOSITE_SIMPLE_REPEAT (uint8_t, neon_composite_add_8_8_8) +FAST_COMPOSITE_SIMPLE_REPEAT (uint16_t, neon_composite_add_0565_8_0565) +FAST_COMPOSITE_SIMPLE_REPEAT (uint32_t, neon_composite_add_8888_8_8888) +FAST_COMPOSITE_SIMPLE_REPEAT (uint32_t, neon_composite_add_8888_8888_8888) +FAST_COMPOSITE_SIMPLE_REPEAT (uint32_t, neon_composite_add_8888_n_8888) +FAST_COMPOSITE_SIMPLE_REPEAT (uint8_t, neon_composite_add_8_8) +FAST_COMPOSITE_SIMPLE_REPEAT (uint32_t, neon_composite_add_8888_8888) +FAST_COMPOSITE_SIMPLE_REPEAT (uint8_t, neon_composite_out_reverse_8_0565) +FAST_COMPOSITE_SIMPLE_REPEAT (uint8_t, neon_composite_out_reverse_8_8888) + static const pixman_fast_path_t arm_neon_fast_paths[] = { PIXMAN_STD_FAST_PATH (SRC, r5g6b5, null, r5g6b5, neon_composite_src_0565_0565), @@ -350,6 +375,64 @@ static const pixman_fast_path_t arm_neon_fast_paths[] = PIXMAN_STD_FAST_PATH (OUT_REVERSE, a8, null, a8r8g8b8, neon_composite_out_reverse_8_8888), PIXMAN_STD_FAST_PATH (OUT_REVERSE, a8, null, a8b8g8r8, neon_composite_out_reverse_8_8888), + /* Simple repeat fast paths. */ + SIMPLE_REPEAT_FAST_PATH (SRC, r5g6b5, null, r5g6b5, neon_composite_src_0565_0565), + SIMPLE_REPEAT_FAST_PATH (SRC, b5g6r5, null, b5g6r5, neon_composite_src_0565_0565), + SIMPLE_REPEAT_FAST_PATH (SRC, a8r8g8b8, null, r5g6b5, neon_composite_src_8888_0565), + SIMPLE_REPEAT_FAST_PATH (SRC, x8r8g8b8, null, r5g6b5, neon_composite_src_8888_0565), + SIMPLE_REPEAT_FAST_PATH (SRC, a8b8g8r8, null, b5g6r5, neon_composite_src_8888_0565), + SIMPLE_REPEAT_FAST_PATH (SRC, x8b8g8r8, null, b5g6r5, neon_composite_src_8888_0565), + SIMPLE_REPEAT_FAST_PATH (SRC, r5g6b5, null, a8r8g8b8, neon_composite_src_0565_8888), + SIMPLE_REPEAT_FAST_PATH (SRC, r5g6b5, null, x8r8g8b8, neon_composite_src_0565_8888), + SIMPLE_REPEAT_FAST_PATH (SRC, b5g6r5, null, a8b8g8r8, neon_composite_src_0565_8888), + SIMPLE_REPEAT_FAST_PATH (SRC, b5g6r5, null, x8b8g8r8, neon_composite_src_0565_8888), + SIMPLE_REPEAT_FAST_PATH (SRC, a8r8g8b8, null, x8r8g8b8, neon_composite_src_8888_8888), + SIMPLE_REPEAT_FAST_PATH (SRC, x8r8g8b8, null, x8r8g8b8, neon_composite_src_8888_8888), + SIMPLE_REPEAT_FAST_PATH (SRC, a8b8g8r8, null, x8b8g8r8, neon_composite_src_8888_8888), + SIMPLE_REPEAT_FAST_PATH (SRC, x8b8g8r8, null, x8b8g8r8, neon_composite_src_8888_8888), + SIMPLE_REPEAT_FAST_PATH (SRC, a8r8g8b8, null, a8r8g8b8, neon_composite_src_8888_8888), + SIMPLE_REPEAT_FAST_PATH (SRC, a8b8g8r8, null, a8b8g8r8, neon_composite_src_8888_8888), + SIMPLE_REPEAT_FAST_PATH (SRC, x8r8g8b8, null, a8r8g8b8, neon_composite_src_x888_8888), + SIMPLE_REPEAT_FAST_PATH (SRC, x8b8g8r8, null, a8b8g8r8, neon_composite_src_x888_8888), + SIMPLE_REPEAT_FAST_PATH (OVER, a8r8g8b8, solid, a8r8g8b8, neon_composite_over_8888_n_8888), + SIMPLE_REPEAT_FAST_PATH (OVER, a8r8g8b8, solid, x8r8g8b8, neon_composite_over_8888_n_8888), + SIMPLE_REPEAT_FAST_PATH (OVER, a8r8g8b8, solid, r5g6b5, neon_composite_over_8888_n_0565), + SIMPLE_REPEAT_FAST_PATH (OVER, a8b8g8r8, solid, b5g6r5, neon_composite_over_8888_n_0565), + SIMPLE_REPEAT_FAST_PATH (OVER, r5g6b5, solid, r5g6b5, neon_composite_over_0565_n_0565), + SIMPLE_REPEAT_FAST_PATH (OVER, b5g6r5, solid, b5g6r5, neon_composite_over_0565_n_0565), + SIMPLE_REPEAT_FAST_PATH (OVER, a8r8g8b8, a8, a8r8g8b8, neon_composite_over_8888_8_8888), + SIMPLE_REPEAT_FAST_PATH (OVER, a8r8g8b8, a8, x8r8g8b8, neon_composite_over_8888_8_8888), + SIMPLE_REPEAT_FAST_PATH (OVER, a8b8g8r8, a8, a8b8g8r8, neon_composite_over_8888_8_8888), + SIMPLE_REPEAT_FAST_PATH (OVER, a8b8g8r8, a8, x8b8g8r8, neon_composite_over_8888_8_8888), + SIMPLE_REPEAT_FAST_PATH (OVER, a8r8g8b8, a8, r5g6b5, neon_composite_over_8888_8_0565), + SIMPLE_REPEAT_FAST_PATH (OVER, a8b8g8r8, a8, b5g6r5, neon_composite_over_8888_8_0565), + SIMPLE_REPEAT_FAST_PATH (OVER, r5g6b5, a8, r5g6b5, neon_composite_over_0565_8_0565), + SIMPLE_REPEAT_FAST_PATH (OVER, b5g6r5, a8, b5g6r5, neon_composite_over_0565_8_0565), + SIMPLE_REPEAT_FAST_PATH (OVER, a8r8g8b8, a8r8g8b8, a8r8g8b8, neon_composite_over_8888_8888_8888), + SIMPLE_REPEAT_FAST_PATH (OVER, a8r8g8b8, null, r5g6b5, neon_composite_over_8888_0565), + SIMPLE_REPEAT_FAST_PATH (OVER, a8b8g8r8, null, b5g6r5, neon_composite_over_8888_0565), + SIMPLE_REPEAT_FAST_PATH (OVER, a8r8g8b8, null, a8r8g8b8, neon_composite_over_8888_8888), + SIMPLE_REPEAT_FAST_PATH (OVER, a8r8g8b8, null, x8r8g8b8, neon_composite_over_8888_8888), + SIMPLE_REPEAT_FAST_PATH (OVER, a8b8g8r8, null, a8b8g8r8, neon_composite_over_8888_8888), + SIMPLE_REPEAT_FAST_PATH (OVER, a8b8g8r8, null, x8b8g8r8, neon_composite_over_8888_8888), + SIMPLE_REPEAT_FAST_PATH (OVER, x8r8g8b8, null, a8r8g8b8, neon_composite_src_x888_8888), + SIMPLE_REPEAT_FAST_PATH (OVER, x8b8g8r8, null, a8b8g8r8, neon_composite_src_x888_8888), + SIMPLE_REPEAT_FAST_PATH (ADD, a8, a8, a8, neon_composite_add_8_8_8), + SIMPLE_REPEAT_FAST_PATH (ADD, r5g6b5, a8, r5g6b5, neon_composite_add_0565_8_0565), + SIMPLE_REPEAT_FAST_PATH (ADD, b5g6r5, a8, b5g6r5, neon_composite_add_0565_8_0565), + SIMPLE_REPEAT_FAST_PATH (ADD, a8r8g8b8, a8, a8r8g8b8, neon_composite_add_8888_8_8888), + SIMPLE_REPEAT_FAST_PATH (ADD, a8b8g8r8, a8, a8b8g8r8, neon_composite_add_8888_8_8888), + SIMPLE_REPEAT_FAST_PATH (ADD, a8r8g8b8, a8r8g8b8, a8r8g8b8, neon_composite_add_8888_8888_8888), + SIMPLE_REPEAT_FAST_PATH (ADD, a8r8g8b8, solid, a8r8g8b8, neon_composite_add_8888_n_8888), + SIMPLE_REPEAT_FAST_PATH (ADD, a8b8g8r8, solid, a8b8g8r8, neon_composite_add_8888_n_8888), + SIMPLE_REPEAT_FAST_PATH (ADD, a8, null, a8, neon_composite_add_8_8), + SIMPLE_REPEAT_FAST_PATH (ADD, a8r8g8b8, null, a8r8g8b8, neon_composite_add_8888_8888), + SIMPLE_REPEAT_FAST_PATH (ADD, a8b8g8r8, null, a8b8g8r8, neon_composite_add_8888_8888), + SIMPLE_REPEAT_FAST_PATH (OUT_REVERSE, a8, null, r5g6b5, neon_composite_out_reverse_8_0565), + SIMPLE_REPEAT_FAST_PATH (OUT_REVERSE, a8, null, b5g6r5, neon_composite_out_reverse_8_0565), + SIMPLE_REPEAT_FAST_PATH (OUT_REVERSE, a8, null, a8r8g8b8, neon_composite_out_reverse_8_8888), + SIMPLE_REPEAT_FAST_PATH (OUT_REVERSE, a8, null, a8b8g8r8, neon_composite_out_reverse_8_8888), + PIXMAN_ARM_SIMPLE_NEAREST_FAST_PATH (OVER, a8r8g8b8, a8r8g8b8, neon_8888_8888), PIXMAN_ARM_SIMPLE_NEAREST_FAST_PATH (OVER, a8b8g8r8, a8b8g8r8, neon_8888_8888), PIXMAN_ARM_SIMPLE_NEAREST_FAST_PATH (OVER, a8r8g8b8, x8r8g8b8, neon_8888_8888), |