summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTaekyun Kim <tkq.kim@samsung.com>2011-08-29 18:10:18 +0900
committerTaekyun Kim <tkq.kim@samsung.com>2011-08-29 18:10:18 +0900
commit511798debef735a5e19426bbeefa17291c17b4b5 (patch)
tree1d295f8562a763cf6d3d56af1358240e8bb02074
parentbb29d79ceb35136ed54aea9b0efe844b35425be2 (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.c83
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),