aboutsummaryrefslogtreecommitdiffstats
path: root/recipes/xorg-lib/pixman-0.21.2/0010-ARM-added-neon_composite_over_0565_n_0565-fast-path.patch
diff options
context:
space:
mode:
Diffstat (limited to 'recipes/xorg-lib/pixman-0.21.2/0010-ARM-added-neon_composite_over_0565_n_0565-fast-path.patch')
-rw-r--r--recipes/xorg-lib/pixman-0.21.2/0010-ARM-added-neon_composite_over_0565_n_0565-fast-path.patch74
1 files changed, 74 insertions, 0 deletions
diff --git a/recipes/xorg-lib/pixman-0.21.2/0010-ARM-added-neon_composite_over_0565_n_0565-fast-path.patch b/recipes/xorg-lib/pixman-0.21.2/0010-ARM-added-neon_composite_over_0565_n_0565-fast-path.patch
new file mode 100644
index 0000000000..376631a50b
--- /dev/null
+++ b/recipes/xorg-lib/pixman-0.21.2/0010-ARM-added-neon_composite_over_0565_n_0565-fast-path.patch
@@ -0,0 +1,74 @@
+From 6d2f7f981b52b41f4321071c325babcf792bd666 Mon Sep 17 00:00:00 2001
+From: Siarhei Siamashka <siarhei.siamashka@nokia.com>
+Date: Sat, 27 Nov 2010 15:53:54 +0200
+Subject: [PATCH 10/24] ARM: added 'neon_composite_over_0565_n_0565' fast path
+
+---
+ pixman/pixman-arm-neon-asm.S | 28 ++++++++++++++++++++++++++++
+ pixman/pixman-arm-neon.c | 4 ++++
+ 2 files changed, 32 insertions(+), 0 deletions(-)
+
+diff --git a/pixman/pixman-arm-neon-asm.S b/pixman/pixman-arm-neon-asm.S
+index 4175144..81c0a34 100644
+--- a/pixman/pixman-arm-neon-asm.S
++++ b/pixman/pixman-arm-neon-asm.S
+@@ -1994,6 +1994,34 @@ generate_composite_function \
+
+ /******************************************************************************/
+
++.macro pixman_composite_over_0565_n_0565_init
++ add DUMMY, sp, #(ARGS_STACK_OFFSET + 8)
++ vpush {d8-d15}
++ vld1.32 {d15[0]}, [DUMMY]
++ vdup.8 d15, d15[3]
++.endm
++
++.macro pixman_composite_over_0565_n_0565_cleanup
++ vpop {d8-d15}
++.endm
++
++generate_composite_function \
++ pixman_composite_over_0565_n_0565_asm_neon, 16, 0, 16, \
++ FLAG_DST_READWRITE, \
++ 8, /* number of pixels, processed in a single block */ \
++ 5, /* prefetch distance */ \
++ pixman_composite_over_0565_n_0565_init, \
++ pixman_composite_over_0565_n_0565_cleanup, \
++ pixman_composite_over_0565_8_0565_process_pixblock_head, \
++ pixman_composite_over_0565_8_0565_process_pixblock_tail, \
++ pixman_composite_over_0565_8_0565_process_pixblock_tail_head, \
++ 28, /* dst_w_basereg */ \
++ 10, /* dst_r_basereg */ \
++ 8, /* src_basereg */ \
++ 15 /* mask_basereg */
++
++/******************************************************************************/
++
+ .macro pixman_composite_add_0565_8_0565_process_pixblock_head
+ /* mask is in d15 */
+ convert_0565_to_x888 q4, d2, d1, d0
+diff --git a/pixman/pixman-arm-neon.c b/pixman/pixman-arm-neon.c
+index 8156bbb..b01c3e0 100644
+--- a/pixman/pixman-arm-neon.c
++++ b/pixman/pixman-arm-neon.c
+@@ -85,6 +85,8 @@ PIXMAN_ARM_BIND_FAST_PATH_SRC_N_DST (neon, over_8888_n_8888,
+ uint32_t, 1, uint32_t, 1)
+ PIXMAN_ARM_BIND_FAST_PATH_SRC_N_DST (neon, over_8888_n_0565,
+ uint32_t, 1, uint16_t, 1)
++PIXMAN_ARM_BIND_FAST_PATH_SRC_N_DST (neon, over_0565_n_0565,
++ uint16_t, 1, uint16_t, 1)
+
+ PIXMAN_ARM_BIND_FAST_PATH_SRC_MASK_DST (neon, add_8_8_8,
+ uint8_t, 1, uint8_t, 1, uint8_t, 1)
+@@ -257,6 +259,8 @@ static const pixman_fast_path_t arm_neon_fast_paths[] =
+ PIXMAN_STD_FAST_PATH (OVER, a8r8g8b8, solid, x8r8g8b8, neon_composite_over_8888_n_8888),
+ PIXMAN_STD_FAST_PATH (OVER, a8r8g8b8, solid, r5g6b5, neon_composite_over_8888_n_0565),
+ PIXMAN_STD_FAST_PATH (OVER, a8b8g8r8, solid, b5g6r5, neon_composite_over_8888_n_0565),
++ PIXMAN_STD_FAST_PATH (OVER, r5g6b5, solid, r5g6b5, neon_composite_over_0565_n_0565),
++ PIXMAN_STD_FAST_PATH (OVER, b5g6r5, solid, b5g6r5, neon_composite_over_0565_n_0565),
+ PIXMAN_STD_FAST_PATH (OVER, a8r8g8b8, a8, a8r8g8b8, neon_composite_over_8888_8_8888),
+ PIXMAN_STD_FAST_PATH (OVER, a8r8g8b8, a8, x8r8g8b8, neon_composite_over_8888_8_8888),
+ PIXMAN_STD_FAST_PATH (OVER, a8b8g8r8, a8, a8b8g8r8, neon_composite_over_8888_8_8888),
+--
+1.6.6.1
+