aboutsummaryrefslogtreecommitdiffstats
path: root/packages/xorg-lib
diff options
context:
space:
mode:
authorKoen Kooi <koen@openembedded.org>2008-09-25 18:24:08 +0000
committerKoen Kooi <koen@openembedded.org>2008-09-25 18:24:08 +0000
commite0d92cfafe7953af046f7688f458a4afb064c9a3 (patch)
tree783945884c546f721c197b513096821ea95e4669 /packages/xorg-lib
parent56d8cdad92ed512b707bcdc7b4a0bff77f7c2773 (diff)
downloadopenembedded-e0d92cfafe7953af046f7688f458a4afb064c9a3.tar.gz
pixman: add 0.12.0
Diffstat (limited to 'packages/xorg-lib')
-rw-r--r--packages/xorg-lib/pixman/pixman-arm.patch143
-rw-r--r--packages/xorg-lib/pixman/pixman-x888-565.patch16
-rw-r--r--packages/xorg-lib/pixman_0.12.0.bb17
3 files changed, 82 insertions, 94 deletions
diff --git a/packages/xorg-lib/pixman/pixman-arm.patch b/packages/xorg-lib/pixman/pixman-arm.patch
index b9280edf10..91dda03b7c 100644
--- a/packages/xorg-lib/pixman/pixman-arm.patch
+++ b/packages/xorg-lib/pixman/pixman-arm.patch
@@ -1,8 +1,14 @@
-diff --git a/configure.ac b/configure.ac
-index 702bed0..59e0d99 100644
+From: Jeff Muizelaar <jmuizelaar@mozilla.com>
+Date: Wed, 17 Sep 2008 19:53:20 +0000 (-0400)
+Subject: Add support for ARMv6 SIMD fastpaths.
+X-Git-Url: http://gitweb.freedesktop.org/?p=pixman.git;a=commitdiff;h=d0b181f347ef4720d130beee3f03196afbd28aba
+
+Add support for ARMv6 SIMD fastpaths.
+---
+
--- a/configure.ac
+++ b/configure.ac
-@@ -301,6 +301,44 @@ AC_SUBST(VMX_CFLAGS)
+@@ -277,6 +277,44 @@ AC_SUBST(VMX_CFLAGS)
AM_CONDITIONAL(USE_VMX, test $have_vmx_intrinsics = yes)
@@ -47,12 +53,10 @@ index 702bed0..59e0d99 100644
AC_ARG_ENABLE(gtk,
[AC_HELP_STRING([--enable-gtk],
[enable tests using GTK+ [default=auto]])],
-diff --git a/pixman/Makefile.am b/pixman/Makefile.am
-index 4f046f1..2cad71a 100644
--- a/pixman/Makefile.am
+++ b/pixman/Makefile.am
-@@ -77,3 +77,16 @@ libpixman_sse_la_LIBADD = $(DEP_LIBS)
- libpixman_1_la_LIBADD += libpixman-sse.la
+@@ -79,3 +79,15 @@ libpixman_sse2_la_LIBADD = $(DEP_LIBS)
+ libpixman_1_la_LIBADD += libpixman-sse2.la
endif
+# arm code
@@ -60,22 +64,18 @@ index 4f046f1..2cad71a 100644
+noinst_LTLIBRARIES += libpixman-arm.la
+libpixman_arm_la_SOURCES = \
+ pixman-arm.c \
-+ pixman-arm.h \
-+ pixman-combine32.h
++ pixman-arm.h
+libpixman_arm_la_CFLAGS = $(DEP_CFLAGS) $(ARM_CFLAGS)
+libpixman_arm_la_LIBADD = $(DEP_LIBS)
+libpixman_1_la_LIBADD += libpixman-arm.la
+endif
+
+
-diff --git a/pixman/pixman-arm.c b/pixman/pixman-arm.c
-new file mode 100644
-index 0000000..5ea65cb
--- /dev/null
+++ b/pixman/pixman-arm.c
-@@ -0,0 +1,433 @@
+@@ -0,0 +1,409 @@
+/*
-+ * Copyright © 2008 Mozilla Corporation
++ * Copyright © 2008 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
@@ -104,7 +104,6 @@ index 0000000..5ea65cb
+#endif
+
+#include "pixman-arm.h"
-+#include "pixman-combine32.h"
+
+void
+fbCompositeSrcAdd_8000x8000arm (pixman_op_t op,
@@ -125,7 +124,6 @@ index 0000000..5ea65cb
+ int dstStride, srcStride;
+ uint16_t w;
+ uint8_t s, d;
-+ uint16_t t;
+
+ fbComposeGetStart (pSrc, xSrc, ySrc, uint8_t, srcStride, srcLine, 1);
+ fbComposeGetStart (pDst, xDst, yDst, uint8_t, dstStride, dstLine, 1);
@@ -142,10 +140,8 @@ index 0000000..5ea65cb
+ {
+ s = *src;
+ d = *dst;
-+ t = d + s;
-+ /* s = t | (0 - (t >> 8)); */
-+ asm("usat %0, #8, %1" : "=r"(s) : "r"(t));
-+ *dst = s;
++ asm("uqadd8 %0, %1, %2" : "+r"(d) : "r"(s));
++ *dst = d;
+
+ dst++;
+ src++;
@@ -164,10 +160,8 @@ index 0000000..5ea65cb
+ {
+ s = *src;
+ d = *dst;
-+ t = d + s;
-+ /* s = t | (0 - (t >> 8)); */
-+ asm("usat %0, #8, %1" : "=r"(s) : "r"(t));
-+ *dst = s;
++ asm("uqadd8 %0, %1, %2" : "+r"(d) : "r"(s));
++ *dst = d;
+
+ dst++;
+ src++;
@@ -195,8 +189,8 @@ index 0000000..5ea65cb
+ uint32_t *srcLine, *src;
+ int dstStride, srcStride;
+ uint16_t w;
-+ uint32_t component_mask = 0xff00ff;
+ uint32_t component_half = 0x800080;
++ uint32_t upper_component_mask = 0xff00ff00;
+ uint32_t alpha_mask = 0xff;
+
+ fbComposeGetStart (pDst, xDst, yDst, uint32_t, dstStride, dstLine, 1);
@@ -235,24 +229,19 @@ index 0000000..5ea65cb
+ /* = 255 - alpha */
+ "sub r8, %[alpha_mask], r5, lsr #24\n\t"
+#endif
-+ "and r6, %[component_mask], r4\n\t"
-+ "and r7, %[component_mask], r4, lsr #8\n\t"
++ "uxtb16 r6, r4\n\t"
++ "uxtb16 r7, r4, ror #8\n\t"
+
+ /* multiply by 257 and divide by 65536 */
+ "mla r6, r6, r8, %[component_half]\n\t"
+ "mla r7, r7, r8, %[component_half]\n\t"
+
-+ "and r8, %[component_mask], r6, lsr #8\n\t"
-+ "and r9, %[component_mask], r7, lsr #8\n\t"
-+
-+ "add r6, r6, r8\n\t"
-+ "add r7, r7, r9\n\t"
++ "uxtab16 r6, r6, r6, ror #8\n\t"
++ "uxtab16 r7, r7, r7, ror #8\n\t"
+
-+ "and r6, %[component_mask], r6, lsr #8\n\t"
-+ "and r7, %[component_mask], r7, lsr #8\n\t"
-+
-+ /* recombine */
-+ "orr r6, r6, r7, lsl #8\n\t"
++ /* recombine the 0xff00ff00 bytes of r6 and r7 */
++ "and r7, %[upper_component_mask]\n\t"
++ "uxtab16 r6, r7, r6, ror #8\n\t"
+
+ "uqadd8 r5, r6, r5\n\t"
+
@@ -266,9 +255,9 @@ index 0000000..5ea65cb
+ "bne 1b\n\t"
+ "2:\n\t"
+ : [w] "+r" (w), [dest] "+r" (dst), [src] "+r" (src)
-+ : [component_half] "r" (component_half), [component_mask] "r" (component_mask),
++ : [component_half] "r" (component_half), [upper_component_mask] "r" (upper_component_mask),
+ [alpha_mask] "r" (alpha_mask)
-+ : "r4", "r5", "r6", "r7", "r8", "r9", "cc", "memory"
++ : "r4", "r5", "r6", "r7", "r8", "cc", "memory"
+ );
+ }
+}
@@ -292,7 +281,6 @@ index 0000000..5ea65cb
+ uint32_t mask;
+ int dstStride, srcStride;
+ uint16_t w;
-+ uint32_t component_mask = 0xff00ff;
+ uint32_t component_half = 0x800080;
+ uint32_t alpha_mask = 0xff;
+
@@ -327,27 +315,24 @@ index 0000000..5ea65cb
+#endif
+ "ldr r4, [%[dest]] \n\t"
+
-+ "and r6, %[component_mask], r5\n\t"
-+ "and r7, %[component_mask], r5, lsr #8\n\t"
++ "uxtb16 r6, r5\n\t"
++ "uxtb16 r7, r5, ror #8\n\t"
+
+ /* multiply by alpha (r8) then by 257 and divide by 65536 */
+ "mla r6, r6, %[mask_alpha], %[component_half]\n\t"
+ "mla r7, r7, %[mask_alpha], %[component_half]\n\t"
+
-+ "and r8, %[component_mask], r6, lsr #8\n\t"
-+ "and r9, %[component_mask], r7, lsr #8\n\t"
-+
-+ "add r6, r6, r8\n\t"
-+ "add r7, r7, r9\n\t"
++ "uxtab16 r6, r6, r6, ror #8\n\t"
++ "uxtab16 r7, r7, r7, ror #8\n\t"
+
-+ "and r6, %[component_mask], r6, lsr #8\n\t"
-+ "and r7, %[component_mask], r7, lsr #8\n\t"
++ "uxtb16 r6, r6, ror #8\n\t"
++ "uxtb16 r7, r7, ror #8\n\t"
+
+ /* recombine */
+ "orr r5, r6, r7, lsl #8\n\t"
+
-+ "and r6, %[component_mask], r4\n\t"
-+ "and r7, %[component_mask], r4, lsr #8\n\t"
++ "uxtb16 r6, r4\n\t"
++ "uxtb16 r7, r4, ror #8\n\t"
+
+ /* 255 - alpha */
+ "sub r8, %[alpha_mask], r5, lsr #24\n\t"
@@ -356,14 +341,11 @@ index 0000000..5ea65cb
+ "mla r6, r6, r8, %[component_half]\n\t"
+ "mla r7, r7, r8, %[component_half]\n\t"
+
-+ "and r8, %[component_mask], r6, lsr #8\n\t"
-+ "and r9, %[component_mask], r7, lsr #8\n\t"
++ "uxtab16 r6, r6, r6, ror #8\n\t"
++ "uxtab16 r7, r7, r7, ror #8\n\t"
+
-+ "add r6, r6, r8\n\t"
-+ "add r7, r7, r9\n\t"
-+
-+ "and r6, %[component_mask], r6, lsr #8\n\t"
-+ "and r7, %[component_mask], r7, lsr #8\n\t"
++ "uxtb16 r6, r6, ror #8\n\t"
++ "uxtb16 r7, r7, ror #8\n\t"
+
+ /* recombine */
+ "orr r6, r6, r7, lsl #8\n\t"
@@ -380,7 +362,7 @@ index 0000000..5ea65cb
+ "bne 1b\n\t"
+ "2:\n\t"
+ : [w] "+r" (w), [dest] "+r" (dst), [src] "+r" (src)
-+ : [component_half] "r" (component_half), [component_mask] "r" (component_mask), [mask_alpha] "r" (mask),
++ : [component_half] "r" (component_half), [mask_alpha] "r" (mask),
+ [alpha_mask] "r" (alpha_mask)
+ : "r4", "r5", "r6", "r7", "r8", "r9", "cc", "memory"
+ );
@@ -453,20 +435,17 @@ index 0000000..5ea65cb
+ "mla r6, %[src_lo], r5, %[component_half]\n\t"
+ "mla r7, %[src_hi], r5, %[component_half]\n\t"
+
-+ "and r8, %[component_mask], r6, lsr #8\n\t"
-+ "and r5, %[component_mask], r7, lsr #8\n\t"
-+
-+ "add r6, r6, r8\n\t"
-+ "add r7, r7, r5\n\t"
++ "uxtab16 r6, r6, r6, ror #8\n\t"
++ "uxtab16 r7, r7, r7, ror #8\n\t"
+
-+ "and r6, %[component_mask], r6, lsr #8\n\t"
-+ "and r7, %[component_mask], r7, lsr #8\n\t"
++ "uxtb16 r6, r6, ror #8\n\t"
++ "uxtb16 r7, r7, ror #8\n\t"
+
+ /* recombine */
+ "orr r5, r6, r7, lsl #8\n\t"
+
-+ "and r6, %[component_mask], r4\n\t"
-+ "and r7, %[component_mask], r4, lsr #8\n\t"
++ "uxtb16 r6, r4\n\t"
++ "uxtb16 r7, r4, ror #8\n\t"
+
+ /* we could simplify this to use 'sub' if we were
+ * willing to give up a register for alpha_mask */
@@ -477,14 +456,11 @@ index 0000000..5ea65cb
+ "mla r6, r6, r8, %[component_half]\n\t"
+ "mla r7, r7, r8, %[component_half]\n\t"
+
-+ "and r8, %[component_mask], r6, lsr #8\n\t"
-+ "and r4, %[component_mask], r7, lsr #8\n\t"
++ "uxtab16 r6, r6, r6, ror #8\n\t"
++ "uxtab16 r7, r7, r7, ror #8\n\t"
+
-+ "add r6, r6, r8\n\t"
-+ "add r7, r7, r4\n\t"
-+
-+ "and r6, %[component_mask], r6, lsr #8\n\t"
-+ "and r7, %[component_mask], r7, lsr #8\n\t"
++ "uxtb16 r6, r6, ror #8\n\t"
++ "uxtb16 r7, r7, ror #8\n\t"
+
+ /* recombine */
+ "orr r6, r6, r7, lsl #8\n\t"
@@ -501,20 +477,17 @@ index 0000000..5ea65cb
+ "bne 1b\n\t"
+ "2:\n\t"
+ : [w] "+r" (w), [dest] "+r" (dst), [src] "+r" (src), [mask] "+r" (mask)
-+ : [component_half] "r" (component_half), [component_mask] "r" (component_mask),
++ : [component_half] "r" (component_half),
+ [src_hi] "r" (src_hi), [src_lo] "r" (src_lo)
+ : "r4", "r5", "r6", "r7", "r8", "cc", "memory"
+ );
+ }
+}
-diff --git a/pixman/pixman-arm.h b/pixman/pixman-arm.h
-new file mode 100644
-index 0000000..258054a
--- /dev/null
+++ b/pixman/pixman-arm.h
@@ -0,0 +1,94 @@
+/*
-+ * Copyright © 2008 Mozilla Corporation
++ * Copyright © 2008 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
@@ -607,19 +580,17 @@ index 0000000..258054a
+
+
+#endif /* USE_ARM */
-diff --git a/pixman/pixman-pict.c b/pixman/pixman-pict.c
-index b918219..e59e904 100644
--- a/pixman/pixman-pict.c
+++ b/pixman/pixman-pict.c
@@ -34,6 +34,7 @@
#include "pixman-mmx.h"
#include "pixman-vmx.h"
- #include "pixman-sse.h"
+ #include "pixman-sse2.h"
+#include "pixman-arm.h"
#include "pixman-combine32.h"
#ifdef __GNUC__
-@@ -1479,6 +1480,26 @@ static const FastPathInfo vmx_fast_paths[] =
+@@ -1479,6 +1480,26 @@ static const FastPathInfo vmx_fast_paths
};
#endif
@@ -646,12 +617,12 @@ index b918219..e59e904 100644
static const FastPathInfo c_fast_paths[] =
{
-@@ -1829,6 +1850,12 @@ pixman_image_composite (pixman_op_t op,
+@@ -1829,6 +1850,12 @@ pixman_image_composite (pixman_op_t
if (!info && pixman_have_vmx())
info = get_fast_path (vmx_fast_paths, op, pSrc, pMask, pDst, pixbuf);
#endif
-+#ifdef USE_ARM
+
++#ifdef USE_ARM
+ if (!info && pixman_have_arm())
+ info = get_fast_path (arm_fast_paths, op, pSrc, pMask, pDst, pixbuf);
+#endif
diff --git a/packages/xorg-lib/pixman/pixman-x888-565.patch b/packages/xorg-lib/pixman/pixman-x888-565.patch
index a458e045b8..a3fa331710 100644
--- a/packages/xorg-lib/pixman/pixman-x888-565.patch
+++ b/packages/xorg-lib/pixman/pixman-x888-565.patch
@@ -1,14 +1,14 @@
-commit 8507756d8868b8d8c7a149bd2427a04262638156
-Author: Vladimir Vukicevic <vladimir@slide.(none)>
-Date: Sat Sep 6 17:46:52 2008 -0700
+From: Vladimir Vukicevic <vladimir@slide.(none)>
+Date: Wed, 17 Sep 2008 20:01:31 +0000 (-0400)
+Subject: Add SRC x888x0565 C fast path
+X-Git-Url: http://gitweb.freedesktop.org/?p=pixman.git;a=commitdiff;h=7180230d4d87c55dfef1e17a0cc3b125d45aa3a0
- Add SRC x888x0565 C fast path
+Add SRC x888x0565 C fast path
+---
-diff --git a/pixman/pixman-pict.c b/pixman/pixman-pict.c
-index eeefa33..b5fb0ff 100644
--- a/pixman/pixman-pict.c
+++ b/pixman/pixman-pict.c
-@@ -759,6 +759,46 @@ fbCompositeSrc_8888x0565 (pixman_op_t op,
+@@ -759,6 +759,46 @@ fbCompositeSrc_8888x0565 (pixman_op_t op
}
}
@@ -55,7 +55,7 @@ index eeefa33..b5fb0ff 100644
void
fbCompositeSrcAdd_8000x8000 (pixman_op_t op,
pixman_image_t * pSrc,
-@@ -1568,6 +1608,10 @@ static const FastPathInfo c_fast_paths[] =
+@@ -1568,6 +1608,10 @@ static const FastPathInfo c_fast_paths[]
{ PIXMAN_OP_SRC, PIXMAN_r5g6b5, PIXMAN_null, PIXMAN_r5g6b5, fbCompositeSrcSrc_nxn, 0 },
{ PIXMAN_OP_SRC, PIXMAN_b5g6r5, PIXMAN_null, PIXMAN_b5g6r5, fbCompositeSrcSrc_nxn, 0 },
#endif
diff --git a/packages/xorg-lib/pixman_0.12.0.bb b/packages/xorg-lib/pixman_0.12.0.bb
new file mode 100644
index 0000000000..5d43adba30
--- /dev/null
+++ b/packages/xorg-lib/pixman_0.12.0.bb
@@ -0,0 +1,17 @@
+SECTION = "libs"
+PRIORITY = "optional"
+DESCRIPTION = "Low-level pixel manipulation library."
+LICENSE = "X11"
+
+SRC_URI = "http://cairographics.org/releases/pixman-${PV}.tar.gz \
+ file://pixman-arm.patch;patch=1 \
+ file://pixman-x888-565.patch;patch=1 \
+ "
+
+inherit autotools
+
+AUTOTOOLS_STAGE_PKGCONFIG = "1"
+do_stage () {
+ autotools_stage_all
+}
+