diff options
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.patch | 74 |
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 + |