summaryrefslogtreecommitdiff
path: root/recipes/xorg-lib/pixman-0.17.8/2-composite.patch
diff options
context:
space:
mode:
authorKoen Kooi <koen@openembedded.org>2010-02-25 10:17:18 +0100
committerKoen Kooi <koen@openembedded.org>2010-02-25 10:20:22 +0100
commitc0ae6dec3f2a8fae5df99f668b99674991c26e9d (patch)
tree5b471f18b324b27c150e62750f89bfe126a7bbb7 /recipes/xorg-lib/pixman-0.17.8/2-composite.patch
parent3747445e8a4f909d0f785404d7b57d04cdefbea9 (diff)
pixman 0.17.8: add and make default for angstrom
Diffstat (limited to 'recipes/xorg-lib/pixman-0.17.8/2-composite.patch')
-rw-r--r--recipes/xorg-lib/pixman-0.17.8/2-composite.patch100
1 files changed, 100 insertions, 0 deletions
diff --git a/recipes/xorg-lib/pixman-0.17.8/2-composite.patch b/recipes/xorg-lib/pixman-0.17.8/2-composite.patch
new file mode 100644
index 0000000000..96c87e2ac6
--- /dev/null
+++ b/recipes/xorg-lib/pixman-0.17.8/2-composite.patch
@@ -0,0 +1,100 @@
+From fa7f7b05fbb08b23678cf0d8928f1511e5a20ecc Mon Sep 17 00:00:00 2001
+From: Siarhei Siamashka <siarhei.siamashka@nokia.com>
+Date: Wed, 24 Feb 2010 00:26:57 +0000
+Subject: ARM: added 'neon_composite_src_x888_8888' fast path
+
+This fast path function improves performance of 'gnome-system-monitor'
+cairo-perf trace.
+
+Benchmark from ARM Cortex-A8 @720MHz
+
+before:
+
+[ # ] backend test min(s) median(s) stddev. count
+[ 0] image gnome-system-monitor 68.838 68.899 0.05% 5/6
+
+after:
+
+[ # ] backend test min(s) median(s) stddev. count
+[ 0] image gnome-system-monitor 53.336 53.384 0.09% 6/6
+---
+diff --git a/pixman/pixman-arm-neon-asm.S b/pixman/pixman-arm-neon-asm.S
+index 2db4da8..42ac1cb 100644
+--- a/pixman/pixman-arm-neon-asm.S
++++ b/pixman/pixman-arm-neon-asm.S
+@@ -947,6 +947,44 @@ generate_composite_function \
+
+ /******************************************************************************/
+
++.macro pixman_composite_src_x888_8888_process_pixblock_head
++ vorr q0, q0, q2
++ vorr q1, q1, q2
++.endm
++
++.macro pixman_composite_src_x888_8888_process_pixblock_tail
++.endm
++
++.macro pixman_composite_src_x888_8888_process_pixblock_tail_head
++ vst1.32 {d0, d1, d2, d3}, [DST_W, :128]!
++ vld1.32 {d0, d1, d2, d3}, [SRC]!
++ vorr q0, q0, q2
++ vorr q1, q1, q2
++ cache_preload 8, 8
++.endm
++
++.macro pixman_composite_src_x888_8888_init
++ vmov.u8 q2, #0xFF
++ vshl.u32 q2, q2, #24
++.endm
++
++generate_composite_function \
++ pixman_composite_src_x888_8888_asm_neon, 32, 0, 32, \
++ FLAG_DST_WRITEONLY, \
++ 8, /* number of pixels, processed in a single block */ \
++ 10, /* prefetch distance */ \
++ pixman_composite_src_x888_8888_init, \
++ default_cleanup, \
++ pixman_composite_src_x888_8888_process_pixblock_head, \
++ pixman_composite_src_x888_8888_process_pixblock_tail, \
++ pixman_composite_src_x888_8888_process_pixblock_tail_head, \
++ 0, /* dst_w_basereg */ \
++ 0, /* dst_r_basereg */ \
++ 0, /* src_basereg */ \
++ 0 /* mask_basereg */
++
++/******************************************************************************/
++
+ .macro pixman_composite_over_n_8_8888_process_pixblock_head
+ /* expecting deinterleaved 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 00b5c35..12d92a2 100644
+--- a/pixman/pixman-arm-neon.c
++++ b/pixman/pixman-arm-neon.c
+@@ -251,6 +251,7 @@ neon_composite_##name (pixman_implementation_t *imp, \
+
+
+ BIND_SRC_NULL_DST(src_8888_8888, uint32_t, 1, uint32_t, 1)
++BIND_SRC_NULL_DST(src_x888_8888, uint32_t, 1, uint32_t, 1)
+ BIND_SRC_NULL_DST(src_0565_0565, uint16_t, 1, uint16_t, 1)
+ BIND_SRC_NULL_DST(src_0888_0888, uint8_t, 3, uint8_t, 3)
+ BIND_SRC_NULL_DST(src_8888_0565, uint32_t, 1, uint16_t, 1)
+@@ -400,6 +401,8 @@ static const pixman_fast_path_t arm_neon_fast_paths[] =
+ PIXMAN_STD_FAST_PATH (SRC, x8r8g8b8, null, x8r8g8b8, neon_composite_src_8888_8888),
+ PIXMAN_STD_FAST_PATH (SRC, a8b8g8r8, null, x8b8g8r8, neon_composite_src_8888_8888),
+ PIXMAN_STD_FAST_PATH (SRC, x8b8g8r8, null, x8b8g8r8, neon_composite_src_8888_8888),
++ PIXMAN_STD_FAST_PATH (SRC, a8r8g8b8, null, a8r8g8b8, neon_composite_src_8888_8888),
++ PIXMAN_STD_FAST_PATH (SRC, x8r8g8b8, null, a8r8g8b8, neon_composite_src_x888_8888),
+ PIXMAN_STD_FAST_PATH (SRC, r8g8b8, null, r8g8b8, neon_composite_src_0888_0888),
+ PIXMAN_STD_FAST_PATH (SRC, b8g8r8, null, x8r8g8b8, neon_composite_src_0888_8888_rev),
+ PIXMAN_STD_FAST_PATH (SRC, b8g8r8, null, r5g6b5, neon_composite_src_0888_0565_rev),
+@@ -428,6 +431,7 @@ static const pixman_fast_path_t arm_neon_fast_paths[] =
+ PIXMAN_STD_FAST_PATH (OVER, a8r8g8b8, null, x8r8g8b8, neon_composite_over_8888_8888),
+ PIXMAN_STD_FAST_PATH (OVER, a8b8g8r8, null, a8b8g8r8, neon_composite_over_8888_8888),
+ PIXMAN_STD_FAST_PATH (OVER, a8b8g8r8, null, x8b8g8r8, neon_composite_over_8888_8888),
++ PIXMAN_STD_FAST_PATH (OVER, x8r8g8b8, null, a8r8g8b8, 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, a8r8g8b8, a8r8g8b8, a8r8g8b8, neon_composite_add_8888_8888_8888),
+--
+cgit v0.8.3-6-g21f6