diff options
Diffstat (limited to 'recipes/xorg-lib/pixman-0.17.8/1-composite.patch')
-rw-r--r-- | recipes/xorg-lib/pixman-0.17.8/1-composite.patch | 161 |
1 files changed, 0 insertions, 161 deletions
diff --git a/recipes/xorg-lib/pixman-0.17.8/1-composite.patch b/recipes/xorg-lib/pixman-0.17.8/1-composite.patch deleted file mode 100644 index 31bfa39cc4..0000000000 --- a/recipes/xorg-lib/pixman-0.17.8/1-composite.patch +++ /dev/null @@ -1,161 +0,0 @@ -From 78652135f48c6a304fc2e75bc0e440b8b2034a4d Mon Sep 17 00:00:00 2001 -From: Siarhei Siamashka <siarhei.siamashka@nokia.com> -Date: Tue, 23 Feb 2010 23:44:00 +0000 -Subject: ARM: added 'neon_composite_over_n_8888_8888_ca' fast path - -This fast path function improves performance of 'firefox-talos-gfx' -cairo-perf trace. - -Benchmark from ARM Cortex-A8 @720MHz - -before: - -[ # ] backend test min(s) median(s) stddev. count -[ 0] image firefox-talos-gfx 139.969 141.176 0.35% 6/6 - -after: - -[ # ] backend test min(s) median(s) stddev. count -[ 0] image firefox-talos-gfx 111.810 112.196 0.23% 6/6 ---- -diff --git a/pixman/pixman-arm-neon-asm.S b/pixman/pixman-arm-neon-asm.S -index 2986884..e90d662 100644 ---- a/pixman/pixman-arm-neon-asm.S -+++ b/pixman/pixman-arm-neon-asm.S -@@ -1026,6 +1026,111 @@ generate_composite_function \ - - /******************************************************************************/ - -+.macro pixman_composite_over_n_8888_8888_ca_process_pixblock_head -+ /* -+ * 'combine_mask_ca' replacement -+ * -+ * input: solid src (n) in {d8, d9, d10, d11} -+ * dest in {d4, d5, d6, d7 } -+ * mask in {d24, d25, d26, d27} -+ * output: updated src in {d0, d1, d2, d3 } -+ * updated mask in {d24, d25, d26, d3 } -+ */ -+ vmull.u8 q0, d24, d8 -+ vmull.u8 q1, d25, d9 -+ vmull.u8 q6, d26, d10 -+ vmull.u8 q7, d27, d11 -+ vmull.u8 q9, d11, d25 -+ vmull.u8 q12, d11, d24 -+ vmull.u8 q13, d11, d26 -+ vrshr.u16 q8, q0, #8 -+ vrshr.u16 q10, q1, #8 -+ vrshr.u16 q11, q6, #8 -+ vraddhn.u16 d0, q0, q8 -+ vraddhn.u16 d1, q1, q10 -+ vraddhn.u16 d2, q6, q11 -+ vrshr.u16 q11, q12, #8 -+ vrshr.u16 q8, q9, #8 -+ vrshr.u16 q6, q13, #8 -+ vrshr.u16 q10, q7, #8 -+ vraddhn.u16 d24, q12, q11 -+ vraddhn.u16 d25, q9, q8 -+ vraddhn.u16 d26, q13, q6 -+ vraddhn.u16 d3, q7, q10 -+ /* -+ * 'combine_over_ca' replacement -+ * -+ * output: updated dest in {d28, d29, d30, d31} -+ */ -+ vmvn.8 d24, d24 -+ vmvn.8 d25, d25 -+ vmull.u8 q8, d24, d4 -+ vmull.u8 q9, d25, d5 -+ vmvn.8 d26, d26 -+ vmvn.8 d27, d3 -+ vmull.u8 q10, d26, d6 -+ vmull.u8 q11, d27, d7 -+.endm -+ -+.macro pixman_composite_over_n_8888_8888_ca_process_pixblock_tail -+ /* ... continue 'combine_over_ca' replacement */ -+ vrshr.u16 q14, q8, #8 -+ vrshr.u16 q15, q9, #8 -+ vrshr.u16 q6, q10, #8 -+ vrshr.u16 q7, q11, #8 -+ vraddhn.u16 d28, q14, q8 -+ vraddhn.u16 d29, q15, q9 -+ vraddhn.u16 d30, q6, q10 -+ vraddhn.u16 d31, q7, q11 -+ vqadd.u8 q14, q0, q14 -+ vqadd.u8 q15, q1, q15 -+.endm -+ -+.macro pixman_composite_over_n_8888_8888_ca_process_pixblock_tail_head -+ vrshr.u16 q14, q8, #8 -+ vrshr.u16 q15, q9, #8 -+ vld4.8 {d4, d5, d6, d7}, [DST_R, :128]! -+ vrshr.u16 q6, q10, #8 -+ vrshr.u16 q7, q11, #8 -+ vraddhn.u16 d28, q14, q8 -+ vraddhn.u16 d29, q15, q9 -+ vraddhn.u16 d30, q6, q10 -+ vraddhn.u16 d31, q7, q11 -+ vld4.8 {d24, d25, d26, d27}, [MASK]! -+ vqadd.u8 q14, q0, q14 -+ vqadd.u8 q15, q1, q15 -+ cache_preload 8, 8 -+ pixman_composite_over_n_8888_8888_ca_process_pixblock_head -+ vst4.8 {d28, d29, d30, d31}, [DST_W, :128]! -+.endm -+ -+.macro pixman_composite_over_n_8888_8888_ca_init -+ add DUMMY, sp, #ARGS_STACK_OFFSET -+ vpush {d8-d15} -+ vld1.32 {d11[0]}, [DUMMY] -+ vdup.8 d8, d11[0] -+ vdup.8 d9, d11[1] -+ vdup.8 d10, d11[2] -+ vdup.8 d11, d11[3] -+.endm -+ -+.macro pixman_composite_over_n_8888_8888_ca_cleanup -+ vpop {d8-d15} -+.endm -+ -+generate_composite_function \ -+ pixman_composite_over_n_8888_8888_ca_asm_neon, 0, 32, 32, \ -+ FLAG_DST_READWRITE | FLAG_DEINTERLEAVE_32BPP, \ -+ 8, /* number of pixels, processed in a single block */ \ -+ 5, /* prefetch distance */ \ -+ pixman_composite_over_n_8888_8888_ca_init, \ -+ pixman_composite_over_n_8888_8888_ca_cleanup, \ -+ pixman_composite_over_n_8888_8888_ca_process_pixblock_head, \ -+ pixman_composite_over_n_8888_8888_ca_process_pixblock_tail, \ -+ pixman_composite_over_n_8888_8888_ca_process_pixblock_tail_head -+ -+/******************************************************************************/ -+ - .macro pixman_composite_add_n_8_8_process_pixblock_head - /* expecting source data in {d8, d9, d10, d11} */ - /* d8 - blue, d9 - green, d10 - red, d11 - alpha */ -diff --git a/pixman/pixman-arm-neon.c b/pixman/pixman-arm-neon.c -index 557301e..3f0e18e 100644 ---- a/pixman/pixman-arm-neon.c -+++ b/pixman/pixman-arm-neon.c -@@ -269,6 +269,7 @@ BIND_SRC_NULL_DST(over_8888_8888, uint32_t, 1, uint32_t, 1) - - BIND_N_MASK_DST(over_n_8_0565, uint8_t, 1, uint16_t, 1) - BIND_N_MASK_DST(over_n_8_8888, uint8_t, 1, uint32_t, 1) -+BIND_N_MASK_DST(over_n_8888_8888_ca, uint32_t, 1, uint32_t, 1) - BIND_N_MASK_DST(add_n_8_8, uint8_t, 1, uint8_t, 1) - - BIND_SRC_N_DST(over_8888_n_8888, uint32_t, 1, uint32_t, 1) -@@ -412,6 +413,10 @@ static const pixman_fast_path_t arm_neon_fast_paths[] = - PIXMAN_STD_FAST_PATH (OVER, solid, null, r5g6b5, neon_composite_over_n_0565), - PIXMAN_STD_FAST_PATH (OVER, solid, null, a8r8g8b8, neon_composite_over_n_8888), - PIXMAN_STD_FAST_PATH (OVER, solid, null, x8r8g8b8, neon_composite_over_n_8888), -+ PIXMAN_STD_FAST_PATH_CA (OVER, solid, a8r8g8b8, a8r8g8b8, neon_composite_over_n_8888_8888_ca), -+ PIXMAN_STD_FAST_PATH_CA (OVER, solid, a8r8g8b8, x8r8g8b8, neon_composite_over_n_8888_8888_ca), -+ PIXMAN_STD_FAST_PATH_CA (OVER, solid, a8b8g8r8, a8b8g8r8, neon_composite_over_n_8888_8888_ca), -+ PIXMAN_STD_FAST_PATH_CA (OVER, solid, a8b8g8r8, x8b8g8r8, neon_composite_over_n_8888_8888_ca), - PIXMAN_STD_FAST_PATH (OVER, a8r8g8b8, solid, a8r8g8b8, neon_composite_over_8888_n_8888), - PIXMAN_STD_FAST_PATH (OVER, a8r8g8b8, solid, x8r8g8b8, neon_composite_over_8888_n_8888), - PIXMAN_STD_FAST_PATH (OVER, a8r8g8b8, a8, a8r8g8b8, neon_composite_over_8888_8_8888), --- -cgit v0.8.3-6-g21f6 |