summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKoen Kooi <koen@openembedded.org>2009-02-06 09:38:25 +0100
committerKoen Kooi <koen@openembedded.org>2009-02-06 09:38:25 +0100
commitdd7c96e51a1953f389d47b3a1128ae1761bf627c (patch)
treed08e85cde173f82cf2b4f413f38568fa9dca8b16
parent57ac9ea14439d273363b6f28a7409d7a136fe1b8 (diff)
pixman: update NEON patch to fix alpha issues with 32bpp framebuffers
-rw-r--r--packages/xorg-lib/pixman/pixman-0.13.2-neon1.patch54
-rw-r--r--packages/xorg-lib/pixman_0.13.2.bb2
2 files changed, 23 insertions, 33 deletions
diff --git a/packages/xorg-lib/pixman/pixman-0.13.2-neon1.patch b/packages/xorg-lib/pixman/pixman-0.13.2-neon1.patch
index 5c89721d8f..b3bb762415 100644
--- a/packages/xorg-lib/pixman/pixman-0.13.2-neon1.patch
+++ b/packages/xorg-lib/pixman/pixman-0.13.2-neon1.patch
@@ -110,10 +110,10 @@ index c4612ea..4c1ec6b 100644
diff --git a/pixman/pixman-arm-neon.c b/pixman/pixman-arm-neon.c
new file mode 100644
-index 0000000..f8a41a8
+index 0000000..10050e4
--- /dev/null
+++ b/pixman/pixman-arm-neon.c
-@@ -0,0 +1,1397 @@
+@@ -0,0 +1,1387 @@
+/*
+ * Copyright © 2009 Mozilla Corporation
+ *
@@ -319,12 +319,10 @@ index 0000000..f8a41a8
+ "b 9f\n\t"
+// LOOP
+ "2:\n\t"
-+ "vld1.8 {d0}, [%[src]]\n\t"
-+ "vld1.8 {d4}, [%[dst]]\n\t"
++ "vld1.8 {d0}, [%[src]]!\n\t"
++ "vld1.8 {d4}, [%[dst]]!\n\t"
+ "vst1.8 {d20}, [%[keep_dst]]\n\t"
-+ "mov %[keep_dst], %[dst]\n\t"
-+ "add %[src], %[src], #8\n\t"
-+ "add %[dst], %[dst], #8\n\t"
++ "sub %[keep_dst], %[dst], #8\n\t"
+ "subs %[w], %[w], #8\n\t"
+ "9:\n\t"
+ "vqadd.u8 d20, d0, d4\n\t"
@@ -468,12 +466,10 @@ index 0000000..f8a41a8
+ "b 9f\n\t"
+// LOOP
+ "2:\n\t"
-+ "vld4.8 {d0-d3}, [%[src]]\n\t"
-+ "vld4.8 {d4-d7}, [%[dst]]\n\t"
++ "vld4.8 {d0-d3}, [%[src]]!\n\t"
++ "vld4.8 {d4-d7}, [%[dst]]!\n\t"
+ "vst4.8 {d20-d23}, [%[keep_dst]]\n\t"
-+ "mov %[keep_dst], %[dst]\n\t"
-+ "add %[src], %[src], #8*4\n\t"
-+ "add %[dst], %[dst], #8*4\n\t"
++ "sub %[keep_dst], %[dst], #8*4\n\t"
+ "subs %[w], %[w], #8\n\t"
+ "9:\n\t"
+ "vmvn.8 d31, d3\n\t"
@@ -746,12 +742,10 @@ index 0000000..f8a41a8
+ "b 9f\n\t"
+// LOOP
+ "2:\n\t"
-+ "vld4.8 {d0-d3}, [%[src]]\n\t"
-+ "vld4.8 {d4-d7}, [%[dst]]\n\t"
++ "vld4.8 {d0-d3}, [%[src]]!\n\t"
++ "vld4.8 {d4-d7}, [%[dst]]!\n\t"
+ "vst4.8 {d20-d23}, [%[keep_dst]]\n\t"
-+ "mov %[keep_dst], %[dst]\n\t"
-+ "add %[src], %[src], #8*4\n\t"
-+ "add %[dst], %[dst], #8*4\n\t"
++ "sub %[keep_dst], %[dst], #8*4\n\t"
+ "subs %[w], %[w], #8\n\t"
+
+ "9:\n\t"
@@ -957,12 +951,10 @@ index 0000000..f8a41a8
+// LOOP
+ "2:\n\t"
+
-+ "vld1.16 {q12}, [%[dst]]\n\t"
-+ "vld1.8 {d31}, [%[mask]]\n\t"
++ "vld1.16 {q12}, [%[dst]]!\n\t"
++ "vld1.8 {d31}, [%[mask]]!\n\t"
+ "vst1.16 {q10}, [%[keep_dst]]\n\t"
-+ "mov %[keep_dst], %[dst]\n\t"
-+ "add %[mask], %[mask], #8\n\t"
-+ "add %[dst], %[dst], #8*2\n\t"
++ "sub %[keep_dst], %[dst], #8*2\n\t"
+ "subs %[w], %[w], #8\n\t"
+ "9:\n\t"
+// expand 0565 q12 to 8888 {d4-d7}
@@ -1294,12 +1286,10 @@ index 0000000..f8a41a8
+ "b 9f\n\t"
+// LOOP
+ "2:\n\t"
-+ "vld4.8 {d4-d7}, [%[dst]]\n\t"
-+ "vld1.8 {d31}, [%[mask]]\n\t"
++ "vld4.8 {d4-d7}, [%[dst]]!\n\t"
++ "vld1.8 {d31}, [%[mask]]!\n\t"
+ "vst4.8 {d20-d23}, [%[keep_dst]]\n\t"
-+ "mov %[keep_dst], %[dst]\n\t"
-+ "add %[mask], %[mask], #8\n\t"
-+ "add %[dst], %[dst], #8*4\n\t"
++ "sub %[keep_dst], %[dst], #8*4\n\t"
+ "subs %[w], %[w], #8\n\t"
+ "9:\n\t"
+
@@ -1371,7 +1361,7 @@ index 0000000..f8a41a8
+ dval = vld1_u8((void*)dst);
+
+ temp = neon2mul(sval2,alpha);
-+ res = vqadd_u8(temp,neon2mul(dval,vtbl1_u8(vmvn_u8(sval2), alpha_selector)));
++ res = vqadd_u8(temp,neon2mul(dval,vtbl1_u8(vmvn_u8(temp), alpha_selector)));
+
+ vst1_u8((void*)dst,res);
+
@@ -1387,7 +1377,7 @@ index 0000000..f8a41a8
+ dval = vreinterpret_u8_u32(vld1_dup_u32((void*)dst));
+
+ temp = neon2mul(sval2,alpha);
-+ res = vqadd_u8(temp,neon2mul(dval,vtbl1_u8(vmvn_u8(sval2), alpha_selector)));
++ res = vqadd_u8(temp,neon2mul(dval,vtbl1_u8(vmvn_u8(temp), alpha_selector)));
+
+ vst1_lane_u32((void*)dst,vreinterpret_u32_u8(res),0);
+ }
@@ -1513,12 +1503,12 @@ index 0000000..f8a41a8
+
diff --git a/pixman/pixman-arm-neon.h b/pixman/pixman-arm-neon.h
new file mode 100644
-index 0000000..a473841
+index 0000000..bab4dee
--- /dev/null
+++ b/pixman/pixman-arm-neon.h
@@ -0,0 +1,137 @@
+/*
-+ * Copyright © 2008 Mozilla Corporation
++ * Copyright © 2009 Mozilla Corporation
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
@@ -1539,7 +1529,7 @@ index 0000000..a473841
+ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+ * SOFTWARE.
+ *
-+ * Author: Jeff Muizelaar (jeff@infidigm.net)
++ * Author: Ian Rickards (ian.rickards@arm.com)
+ *
+ */
+
diff --git a/packages/xorg-lib/pixman_0.13.2.bb b/packages/xorg-lib/pixman_0.13.2.bb
index 5b304de104..4b489f89a6 100644
--- a/packages/xorg-lib/pixman_0.13.2.bb
+++ b/packages/xorg-lib/pixman_0.13.2.bb
@@ -3,7 +3,7 @@ PRIORITY = "optional"
DESCRIPTION = "Low-level pixel manipulation library."
LICENSE = "X11"
-PR = "r1"
+PR = "r2"
DEFAULT_PREFERENCE = "-1"