diff options
Diffstat (limited to 'recipes/xorg-lib/pixman-0.19.4/0007-ARM-added-neon_composite_add_0565_8_0565-fast-path.patch')
-rw-r--r-- | recipes/xorg-lib/pixman-0.19.4/0007-ARM-added-neon_composite_add_0565_8_0565-fast-path.patch | 96 |
1 files changed, 0 insertions, 96 deletions
diff --git a/recipes/xorg-lib/pixman-0.19.4/0007-ARM-added-neon_composite_add_0565_8_0565-fast-path.patch b/recipes/xorg-lib/pixman-0.19.4/0007-ARM-added-neon_composite_add_0565_8_0565-fast-path.patch deleted file mode 100644 index d62f12dd5c..0000000000 --- a/recipes/xorg-lib/pixman-0.19.4/0007-ARM-added-neon_composite_add_0565_8_0565-fast-path.patch +++ /dev/null @@ -1,96 +0,0 @@ -From c3f1715c4698e90396d02f7b5acc314d99780941 Mon Sep 17 00:00:00 2001 -From: Siarhei Siamashka <siarhei.siamashka@nokia.com> -Date: Thu, 23 Sep 2010 22:28:55 +0300 -Subject: [PATCH 7/9] ARM: added 'neon_composite_add_0565_8_0565' fast path - -TODO: That's an initial variant, needs performance tuning ---- - pixman/pixman-arm-neon-asm.S | 52 ++++++++++++++++++++++++++++++++++++++++++ - pixman/pixman-arm-neon.c | 4 +++ - 2 files changed, 56 insertions(+), 0 deletions(-) - -diff --git a/pixman/pixman-arm-neon-asm.S b/pixman/pixman-arm-neon-asm.S -index e1a697e..23ddae9 100644 ---- a/pixman/pixman-arm-neon-asm.S -+++ b/pixman/pixman-arm-neon-asm.S -@@ -1890,3 +1890,55 @@ generate_composite_function \ - 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 -+ convert_0565_to_x888 q5, d6, d5, d4 -+ /* source pixel data is in {d0, d1, d2, XX} */ -+ /* destination pixel data is in {d4, d5, d6, XX} */ -+ vmull.u8 q6, d15, d2 -+ vmull.u8 q5, d15, d1 -+ vmull.u8 q4, d15, d0 -+ vrshr.u16 q12, q6, #8 -+ vrshr.u16 q11, q5, #8 -+ vrshr.u16 q10, q4, #8 -+ vraddhn.u16 d2, q6, q12 -+ vraddhn.u16 d1, q5, q11 -+ vraddhn.u16 d0, q4, q10 -+.endm -+ -+.macro pixman_composite_add_0565_8_0565_process_pixblock_tail -+ vqadd.u8 q0, q0, q2 -+ vqadd.u8 q1, q1, q3 -+ /* 32bpp result is in {d0, d1, d2, XX} */ -+ convert_8888_to_0565 d2, d1, d0, q14, q15, q3 -+.endm -+ -+/* TODO: expand macros and do better instructions scheduling */ -+.macro pixman_composite_add_0565_8_0565_process_pixblock_tail_head -+ vld1.8 {d15}, [MASK]! -+ pixman_composite_add_0565_8_0565_process_pixblock_tail -+ vld1.16 {d8, d9}, [SRC]! -+ vld1.16 {d10, d11}, [DST_R, :128]! -+ cache_preload 8, 8 -+ pixman_composite_add_0565_8_0565_process_pixblock_head -+ vst1.16 {d28, d29}, [DST_W, :128]! -+.endm -+ -+generate_composite_function \ -+ pixman_composite_add_0565_8_0565_asm_neon, 16, 8, 16, \ -+ FLAG_DST_READWRITE, \ -+ 8, /* number of pixels, processed in a single block */ \ -+ 5, /* prefetch distance */ \ -+ default_init_need_all_regs, \ -+ default_cleanup_need_all_regs, \ -+ pixman_composite_add_0565_8_0565_process_pixblock_head, \ -+ pixman_composite_add_0565_8_0565_process_pixblock_tail, \ -+ pixman_composite_add_0565_8_0565_process_pixblock_tail_head, \ -+ 28, /* dst_w_basereg */ \ -+ 10, /* dst_r_basereg */ \ -+ 8, /* src_basereg */ \ -+ 15 /* mask_basereg */ -diff --git a/pixman/pixman-arm-neon.c b/pixman/pixman-arm-neon.c -index db1c2df..a8be7e4 100644 ---- a/pixman/pixman-arm-neon.c -+++ b/pixman/pixman-arm-neon.c -@@ -82,6 +82,8 @@ PIXMAN_ARM_BIND_FAST_PATH_SRC_N_DST (neon, over_8888_n_8888, - - PIXMAN_ARM_BIND_FAST_PATH_SRC_MASK_DST (neon, add_8_8_8, - uint8_t, 1, uint8_t, 1, uint8_t, 1) -+PIXMAN_ARM_BIND_FAST_PATH_SRC_MASK_DST (neon, add_0565_8_0565, -+ uint16_t, 1, uint8_t, 1, uint16_t, 1) - PIXMAN_ARM_BIND_FAST_PATH_SRC_MASK_DST (neon, add_8888_8888_8888, - uint32_t, 1, uint32_t, 1, uint32_t, 1) - PIXMAN_ARM_BIND_FAST_PATH_SRC_MASK_DST (neon, over_8888_8_8888, -@@ -296,6 +298,8 @@ static const pixman_fast_path_t arm_neon_fast_paths[] = - PIXMAN_STD_FAST_PATH (OVER, x8b8g8r8, null, a8b8g8r8, neon_composite_src_x888_8888), - PIXMAN_STD_FAST_PATH (ADD, solid, a8, a8, neon_composite_add_n_8_8), - PIXMAN_STD_FAST_PATH (ADD, a8, a8, a8, neon_composite_add_8_8_8), -+ PIXMAN_STD_FAST_PATH (ADD, r5g6b5, a8, r5g6b5, neon_composite_add_0565_8_0565), -+ PIXMAN_STD_FAST_PATH (ADD, b5g6r5, a8, b5g6r5, neon_composite_add_0565_8_0565), - PIXMAN_STD_FAST_PATH (ADD, a8r8g8b8, a8r8g8b8, a8r8g8b8, neon_composite_add_8888_8888_8888), - PIXMAN_STD_FAST_PATH (ADD, a8, null, a8, neon_composite_add_8000_8000), - PIXMAN_STD_FAST_PATH (ADD, a8r8g8b8, null, a8r8g8b8, neon_composite_add_8888_8888), --- -1.6.6.1 - |