aboutsummaryrefslogtreecommitdiffstats
path: root/recipes/obsolete/xorg-lib
diff options
context:
space:
mode:
authorMartin Jansa <Martin.Jansa@gmail.com>2011-01-11 09:03:28 +0100
committerMartin Jansa <Martin.Jansa@gmail.com>2011-01-13 08:27:02 +0100
commitec80e3f5192f70d8268658de5adcf08f194be216 (patch)
treefb6c8e8a1f8997bc932be69c3fea61d350ce3d6b /recipes/obsolete/xorg-lib
parent7e94eaa1951452129aa18e704303c2b7b5e182b4 (diff)
downloadopenembedded-ec80e3f5192f70d8268658de5adcf08f194be216.tar.gz
xorg-lib: obsolete old versions
Acked-by: Khem Raj <raj.khem@gmail.com> Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
Diffstat (limited to 'recipes/obsolete/xorg-lib')
-rw-r--r--recipes/obsolete/xorg-lib/libdmx_1.1.0.bb8
-rw-r--r--recipes/obsolete/xorg-lib/libfontenc_1.0.5.bb11
-rw-r--r--recipes/obsolete/xorg-lib/libfs_1.0.2.bb10
-rw-r--r--recipes/obsolete/xorg-lib/libice_1.0.6.bb12
-rw-r--r--recipes/obsolete/xorg-lib/libpciaccess_0.10.9.bb6
-rw-r--r--recipes/obsolete/xorg-lib/libsm_1.1.1.bb12
-rw-r--r--recipes/obsolete/xorg-lib/libx11-1.3.2/configure.ac-nios2.patch33
-rw-r--r--recipes/obsolete/xorg-lib/libx11-1.3.2/dolt-fix.patch21
-rw-r--r--recipes/obsolete/xorg-lib/libx11-1.3.2/keysymdef_include.patch29
-rw-r--r--recipes/obsolete/xorg-lib/libx11-1.3.2/x11_disable_makekeys.patch23
-rw-r--r--recipes/obsolete/xorg-lib/libx11-1.3.6/configure.ac-nios2.patch33
-rw-r--r--recipes/obsolete/xorg-lib/libx11-1.3.6/dolt-fix.patch22
-rw-r--r--recipes/obsolete/xorg-lib/libx11-1.3.6/keysymdef_include.patch19
-rw-r--r--recipes/obsolete/xorg-lib/libx11-1.3.6/x11_disable_makekeys.patch29
-rw-r--r--recipes/obsolete/xorg-lib/libx11_1.3.2.bb11
-rw-r--r--recipes/obsolete/xorg-lib/libx11_1.3.6.bb7
-rw-r--r--recipes/obsolete/xorg-lib/libxau_1.0.5.bb12
-rw-r--r--recipes/obsolete/xorg-lib/libxaw_1.0.7.bb25
-rw-r--r--recipes/obsolete/xorg-lib/libxcomposite_0.4.1.bb11
-rw-r--r--recipes/obsolete/xorg-lib/libxcursor_1.1.10.bb13
-rw-r--r--recipes/obsolete/xorg-lib/libxdamage_1.1.2.bb11
-rw-r--r--recipes/obsolete/xorg-lib/libxdmcp_1.0.3.bb12
-rw-r--r--recipes/obsolete/xorg-lib/libxevie_1.0.2.bb10
-rw-r--r--recipes/obsolete/xorg-lib/libxext_1.1.1.bb12
-rw-r--r--recipes/obsolete/xorg-lib/libxfixes_4.0.4.bb13
-rw-r--r--recipes/obsolete/xorg-lib/libxfont_1.4.1.bb16
-rw-r--r--recipes/obsolete/xorg-lib/libxft-2.1.14/autotools.patch54
-rw-r--r--recipes/obsolete/xorg-lib/libxft_2.1.14.bb22
-rw-r--r--recipes/obsolete/xorg-lib/libxi_1.3.bb10
-rw-r--r--recipes/obsolete/xorg-lib/libxinerama_1.1.bb10
-rw-r--r--recipes/obsolete/xorg-lib/libxkbfile_1.0.6.bb11
-rw-r--r--recipes/obsolete/xorg-lib/libxmu_1.0.5.bb17
-rw-r--r--recipes/obsolete/xorg-lib/libxpm_3.5.8.bb16
-rw-r--r--recipes/obsolete/xorg-lib/libxrandr_1.2.1.bb13
-rw-r--r--recipes/obsolete/xorg-lib/libxrandr_1.3.0.bb13
-rw-r--r--recipes/obsolete/xorg-lib/libxrender_0.9.5.bb13
-rw-r--r--recipes/obsolete/xorg-lib/libxres_1.0.4.bb10
-rw-r--r--recipes/obsolete/xorg-lib/libxscrnsaver_1.2.0.bb13
-rw-r--r--recipes/obsolete/xorg-lib/libxt_1.0.7.bb22
-rw-r--r--recipes/obsolete/xorg-lib/libxtst_1.1.0.bb10
-rw-r--r--recipes/obsolete/xorg-lib/libxv_1.0.5.bb10
-rw-r--r--recipes/obsolete/xorg-lib/libxxf86dga_1.1.1.bb10
-rw-r--r--recipes/obsolete/xorg-lib/libxxf86misc_1.0.2.bb10
-rw-r--r--recipes/obsolete/xorg-lib/libxxf86vm_1.1.0.bb10
-rw-r--r--recipes/obsolete/xorg-lib/pixman-0.12.0/pixman-arm.patch632
-rw-r--r--recipes/obsolete/xorg-lib/pixman-0.12.0/pixman-x888-565.patch68
-rw-r--r--recipes/obsolete/xorg-lib/pixman-0.18.4/0001-Generic-C-implementation-of-pixman_blt-with-overlapp.patch114
-rw-r--r--recipes/obsolete/xorg-lib/pixman-0.18.4/0002-Support-of-overlapping-src-dst-for-pixman_blt_mmx.patch91
-rw-r--r--recipes/obsolete/xorg-lib/pixman-0.18.4/0003-Support-of-overlapping-src-dst-for-pixman_blt_sse2.patch91
-rw-r--r--recipes/obsolete/xorg-lib/pixman-0.18.4/0004-Support-of-overlapping-src-dst-for-pixman_blt_neon.patch94
-rw-r--r--recipes/obsolete/xorg-lib/pixman-0.18.4/0005-ARM-added-NEON-optimizations-for-fetch-store-r5g6b5-.patch169
-rw-r--r--recipes/obsolete/xorg-lib/pixman-0.18.4/0006-A-copy-paste-version-of-16bpp-bilinear-scanline-fetc.patch261
-rw-r--r--recipes/obsolete/xorg-lib/pixman-0.18.4/0007-ARM-added-missing-cache-preload.patch32
-rw-r--r--recipes/obsolete/xorg-lib/pixman-0.18.4/565-over-neon.patch23
-rw-r--r--recipes/obsolete/xorg-lib/pixman-0.18.4/neon-reverse-u.patch175
-rw-r--r--recipes/obsolete/xorg-lib/pixman-0.20.0/0000-Add-pixman_bits_override_accessors.patch77
-rw-r--r--recipes/obsolete/xorg-lib/pixman-0.20.0/0001-Generic-C-implementation-of-pixman_blt-with-overlapp.patch114
-rw-r--r--recipes/obsolete/xorg-lib/pixman-0.20.0/0002-Support-of-overlapping-src-dst-for-pixman_blt_mmx.patch91
-rw-r--r--recipes/obsolete/xorg-lib/pixman-0.20.0/0003-Support-of-overlapping-src-dst-for-pixman_blt_sse2.patch91
-rw-r--r--recipes/obsolete/xorg-lib/pixman-0.20.0/0004-Support-of-overlapping-src-dst-for-pixman_blt_neon.patch94
-rw-r--r--recipes/obsolete/xorg-lib/pixman-0.20.0/0005-ARM-added-NEON-optimizations-for-fetch-store-r5g6b5-.patch109
-rw-r--r--recipes/obsolete/xorg-lib/pixman-0.20.0/0006-ARM-added-NEON-optimizations-for-fetch-store-a8-scan.patch148
-rw-r--r--recipes/obsolete/xorg-lib/pixman-0.20.0/0007-ARM-added-NEON-optimizations-for-fetching-x8r8g8b8-s.patch77
-rw-r--r--recipes/obsolete/xorg-lib/pixman-0.20.0/0008-ARM-optimization-for-scaled-src_0565_0565-operation-.patch172
-rw-r--r--recipes/obsolete/xorg-lib/pixman_0.12.0.bb9
-rw-r--r--recipes/obsolete/xorg-lib/pixman_0.16.2.bb7
-rw-r--r--recipes/obsolete/xorg-lib/pixman_0.18.4.bb21
-rw-r--r--recipes/obsolete/xorg-lib/pixman_0.20.0.bb23
-rw-r--r--recipes/obsolete/xorg-lib/xtrans_1.2.5.bb13
69 files changed, 3491 insertions, 0 deletions
diff --git a/recipes/obsolete/xorg-lib/libdmx_1.1.0.bb b/recipes/obsolete/xorg-lib/libdmx_1.1.0.bb
new file mode 100644
index 0000000000..5a806a442e
--- /dev/null
+++ b/recipes/obsolete/xorg-lib/libdmx_1.1.0.bb
@@ -0,0 +1,8 @@
+require xorg-lib-common.inc
+DESCRIPTION = "X11 Distributed Multihead extension library"
+DEPENDS += "libxext dmxproto"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "a2fcf0382837888d3781b714489a8999"
+SRC_URI[archive.sha256sum] = "1904a8f848cc5d76105cb07707890aca095540a37fb0a63d359f71da51d3e2d5"
diff --git a/recipes/obsolete/xorg-lib/libfontenc_1.0.5.bb b/recipes/obsolete/xorg-lib/libfontenc_1.0.5.bb
new file mode 100644
index 0000000000..6c11158d2c
--- /dev/null
+++ b/recipes/obsolete/xorg-lib/libfontenc_1.0.5.bb
@@ -0,0 +1,11 @@
+require xorg-lib-common.inc
+DESCRIPTION = "X11 font encoding library"
+LICENSE = "BSD-X"
+DEPENDS += "zlib xproto"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "4f0d8191819be9f2bdf9dad49a65e43b"
+SRC_URI[archive.sha256sum] = "7f3cde0331e9ad3da720b1a8255e121673701199df0802b62380436e74222700"
+
+BBCLASSEXTEND = "native"
diff --git a/recipes/obsolete/xorg-lib/libfs_1.0.2.bb b/recipes/obsolete/xorg-lib/libfs_1.0.2.bb
new file mode 100644
index 0000000000..d892132ab3
--- /dev/null
+++ b/recipes/obsolete/xorg-lib/libfs_1.0.2.bb
@@ -0,0 +1,10 @@
+require xorg-lib-common.inc
+DESCRIPTION = "X11 Font Services library"
+DEPENDS += "xproto fontsproto xtrans"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "ecf2d6a27da053500283e803efa2a808"
+SRC_URI[archive.sha256sum] = "af2a5fe5eaa2b026e10bddb4e3f39976dc13deb5dbdc714abe1f016435ce3049"
+
+XORG_PN = "libFS"
diff --git a/recipes/obsolete/xorg-lib/libice_1.0.6.bb b/recipes/obsolete/xorg-lib/libice_1.0.6.bb
new file mode 100644
index 0000000000..1c7f3cb227
--- /dev/null
+++ b/recipes/obsolete/xorg-lib/libice_1.0.6.bb
@@ -0,0 +1,12 @@
+require xorg-lib-common.inc
+DESCRIPTION = "X11 Inter-Client Exchange library"
+DEPENDS += "xproto xtrans"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "2d39bc924af24325dae589e9a849180c"
+SRC_URI[archive.sha256sum] = "a8346859505d2aa27ecc4531f1c86d72801936d96c31c5beaeff4587441b568b"
+
+BBCLASSEXTEND = "native"
+
+XORG_PN = "libICE"
diff --git a/recipes/obsolete/xorg-lib/libpciaccess_0.10.9.bb b/recipes/obsolete/xorg-lib/libpciaccess_0.10.9.bb
new file mode 100644
index 0000000000..d963c3cf04
--- /dev/null
+++ b/recipes/obsolete/xorg-lib/libpciaccess_0.10.9.bb
@@ -0,0 +1,6 @@
+require xorg-lib-common.inc
+DEPENDS += "xproto virtual/libx11"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "685cb20e7a6165bc010972f1183addbd"
+SRC_URI[archive.sha256sum] = "5ccb9683b8be76edfceab4bf006e1cce9018e0d3dea5e54aa72e82798213fead"
diff --git a/recipes/obsolete/xorg-lib/libsm_1.1.1.bb b/recipes/obsolete/xorg-lib/libsm_1.1.1.bb
new file mode 100644
index 0000000000..b87bcdfca6
--- /dev/null
+++ b/recipes/obsolete/xorg-lib/libsm_1.1.1.bb
@@ -0,0 +1,12 @@
+require xorg-lib-common.inc
+DESCRIPTION = "X11 Session management library"
+DEPENDS += "libice xproto xtrans util-linux-ng"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "6889a455496aaaa65b1fa05fc518d179"
+SRC_URI[archive.sha256sum] = "f50d184d8c6a031b3ff4f0d52efcfd4ffa811b0362b166a9ff9ba4c2e9aa7ce0"
+
+BBCLASSEXTEND = "native"
+
+XORG_PN = "libSM"
diff --git a/recipes/obsolete/xorg-lib/libx11-1.3.2/configure.ac-nios2.patch b/recipes/obsolete/xorg-lib/libx11-1.3.2/configure.ac-nios2.patch
new file mode 100644
index 0000000000..2e2d475acb
--- /dev/null
+++ b/recipes/obsolete/xorg-lib/libx11-1.3.2/configure.ac-nios2.patch
@@ -0,0 +1,33 @@
+From affc2488a7f2660a74dc8354fc3e0bff2c4f879c Mon Sep 17 00:00:00 2001
+From: Dan Nicholson <dbn.lists@gmail.com>
+Date: Sat, 06 Nov 2010 21:58:09 +0000
+Subject: config: Fix architecture check for OS/2 to skip nios2 cpu
+
+The OS/2 platform requires some utility functions as well as having a
+non-32 bit wchar_t. Fix the configure check so that it doesn't also
+affect the nios2 cpu, which wouldn't influence these operating system
+issues.
+
+Signed-off-by: Dan Nicholson <dbn.lists@gmail.com>
+Tested-by: Frans Meulenbroeks <fransmeulenbroeks@gmail.com>
+Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+Reviewed-by: Julien Cristau <jcristau@debian.org>
+Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+---
+diff --git a/configure.ac b/configure.ac
+index 1b4a8b7..01f43fb 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -246,8 +246,8 @@ dnl AC_PATH_XTRA
+
+ # arch specific things
+ WCHAR32="1"
+-case $target_alias in
+- *os2*) os2="true" ; WCHAR32="0" ;;
++case $target_os in
++ os2*) os2="true" ; WCHAR32="0" ;;
+ *) ;;
+ esac
+ AC_SUBST(WCHAR32)
+--
+cgit v0.8.3-6-g21f6
diff --git a/recipes/obsolete/xorg-lib/libx11-1.3.2/dolt-fix.patch b/recipes/obsolete/xorg-lib/libx11-1.3.2/dolt-fix.patch
new file mode 100644
index 0000000000..ea1a8bd937
--- /dev/null
+++ b/recipes/obsolete/xorg-lib/libx11-1.3.2/dolt-fix.patch
@@ -0,0 +1,21 @@
+diff -uNr libX11-1.2.99.901.orig/acinclude.m4 libX11-1.2.99.901/acinclude.m4
+--- libX11-1.2.99.901.orig/acinclude.m4 2009-09-05 10:57:11.000000000 +0200
++++ libX11-1.2.99.901/acinclude.m4 2009-09-05 10:59:14.000000000 +0200
+@@ -197,7 +197,7 @@
+ cat <<__DOLTLIBTOOL__EOF__ > doltlibtool
+ #!$DOLT_BASH
+ __DOLTLIBTOOL__EOF__
+- cat <<'__DOLTLIBTOOL__EOF__' >>doltlibtool
++ cat <<'__DOLTLIBTOOL__EOF__' | sed -e "s/@host_alias@/$host_alias/g" >>doltlibtool
+ top_builddir_slash="${0%%doltlibtool}"
+ : ${top_builddir_slash:=./}
+ args=()
+@@ -213,7 +213,7 @@
+ if $modeok && $tagok ; then
+ . ${top_builddir_slash}doltcompile "${args@<:@@@:>@}"
+ else
+- exec ${top_builddir_slash}libtool "$[]@"
++ exec ${top_builddir_slash}@host_alias@-libtool "$[]@"
+ fi
+ __DOLTLIBTOOL__EOF__
+
diff --git a/recipes/obsolete/xorg-lib/libx11-1.3.2/keysymdef_include.patch b/recipes/obsolete/xorg-lib/libx11-1.3.2/keysymdef_include.patch
new file mode 100644
index 0000000000..7e725b2132
--- /dev/null
+++ b/recipes/obsolete/xorg-lib/libx11-1.3.2/keysymdef_include.patch
@@ -0,0 +1,29 @@
+Index: libX11-1.1.5/configure.ac
+===================================================================
+--- libX11-1.1.5.orig/configure.ac 2008-10-28 11:36:49.000000000 +0000
++++ libX11-1.1.5/configure.ac 2008-10-28 11:40:05.000000000 +0000
+@@ -221,13 +221,21 @@
+ # Find keysymdef.h
+ #
+ AC_MSG_CHECKING([keysymdef.h])
+-dir=`pkg-config --variable=includedir xproto`
+-KEYSYMDEF="$dir/X11/keysymdef.h"
++AC_ARG_WITH(keysymdefdir,
++ AC_HELP_STRING([--with-keysymdefdir=DIR], [The location of keysymdef.h]),
++ KEYSYMDEF=$withval/keysymdef.h, KEYSYMDEF="")
++
++if test x$KEYSYMDEF = x; then
++ dir=`pkg-config --variable=includedir xproto`
++ KEYSYMDEF="$dir/X11/keysymdef.h"
++fi
++
+ if test -f "$KEYSYMDEF"; then
+- AC_MSG_RESULT([$KEYSYMDEF])
++ AC_MSG_RESULT([$KEYSYMDEF])
+ else
+ AC_MSG_ERROR([Cannot find keysymdef.h])
+ fi
++
+ AC_SUBST(KEYSYMDEF)
+
+ AM_CONDITIONAL(UDC, test xfalse = xtrue)
diff --git a/recipes/obsolete/xorg-lib/libx11-1.3.2/x11_disable_makekeys.patch b/recipes/obsolete/xorg-lib/libx11-1.3.2/x11_disable_makekeys.patch
new file mode 100644
index 0000000000..5d0a24ca2d
--- /dev/null
+++ b/recipes/obsolete/xorg-lib/libx11-1.3.2/x11_disable_makekeys.patch
@@ -0,0 +1,23 @@
+diff -uNr libX11-1.3.3.orig/src/util/Makefile.am libX11-1.3.3/src/util/Makefile.am
+--- libX11-1.3.3.orig/src/util/Makefile.am 2010-01-15 02:11:36.000000000 +0100
++++ libX11-1.3.3/src/util/Makefile.am 2010-01-18 14:48:27.000000000 +0100
+@@ -1,19 +1 @@
+-
+-noinst_PROGRAMS=makekeys
+-
+-makekeys_CFLAGS=$(X11_CFLAGS)
+-
+-CC = @CC_FOR_BUILD@
+-
+ EXTRA_DIST = mkks.sh
+-
+-if LINT
+-# Check source code with tools like lint & sparse
+-
+-ALL_LINT_FLAGS=$(LINT_FLAGS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+- $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS)
+-
+-lint:
+- $(LINT) $(ALL_LINT_FLAGS) makekeys.c
+-
+-endif LINT
diff --git a/recipes/obsolete/xorg-lib/libx11-1.3.6/configure.ac-nios2.patch b/recipes/obsolete/xorg-lib/libx11-1.3.6/configure.ac-nios2.patch
new file mode 100644
index 0000000000..2e2d475acb
--- /dev/null
+++ b/recipes/obsolete/xorg-lib/libx11-1.3.6/configure.ac-nios2.patch
@@ -0,0 +1,33 @@
+From affc2488a7f2660a74dc8354fc3e0bff2c4f879c Mon Sep 17 00:00:00 2001
+From: Dan Nicholson <dbn.lists@gmail.com>
+Date: Sat, 06 Nov 2010 21:58:09 +0000
+Subject: config: Fix architecture check for OS/2 to skip nios2 cpu
+
+The OS/2 platform requires some utility functions as well as having a
+non-32 bit wchar_t. Fix the configure check so that it doesn't also
+affect the nios2 cpu, which wouldn't influence these operating system
+issues.
+
+Signed-off-by: Dan Nicholson <dbn.lists@gmail.com>
+Tested-by: Frans Meulenbroeks <fransmeulenbroeks@gmail.com>
+Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+Reviewed-by: Julien Cristau <jcristau@debian.org>
+Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+---
+diff --git a/configure.ac b/configure.ac
+index 1b4a8b7..01f43fb 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -246,8 +246,8 @@ dnl AC_PATH_XTRA
+
+ # arch specific things
+ WCHAR32="1"
+-case $target_alias in
+- *os2*) os2="true" ; WCHAR32="0" ;;
++case $target_os in
++ os2*) os2="true" ; WCHAR32="0" ;;
+ *) ;;
+ esac
+ AC_SUBST(WCHAR32)
+--
+cgit v0.8.3-6-g21f6
diff --git a/recipes/obsolete/xorg-lib/libx11-1.3.6/dolt-fix.patch b/recipes/obsolete/xorg-lib/libx11-1.3.6/dolt-fix.patch
new file mode 100644
index 0000000000..7e96075aa3
--- /dev/null
+++ b/recipes/obsolete/xorg-lib/libx11-1.3.6/dolt-fix.patch
@@ -0,0 +1,22 @@
+Index: libX11-1.3.4/m4/dolt.m4
+===================================================================
+--- libX11-1.3.4/m4/dolt.m4
++++ libX11-1.3.4/m4/dolt.m4
+@@ -155,7 +155,7 @@ dnl without '=', because automake does n
+ cat <<__DOLTLIBTOOL__EOF__ > doltlibtool
+ #!$DOLT_BASH
+ __DOLTLIBTOOL__EOF__
+- cat <<'__DOLTLIBTOOL__EOF__' >>doltlibtool
++ cat <<'__DOLTLIBTOOL__EOF__' | sed -e "s/@host_alias@/$host_alias/g" >>doltlibtool
+ top_builddir_slash="${0%%doltlibtool}"
+ : ${top_builddir_slash:=./}
+ args=()
+@@ -171,7 +171,7 @@ done
+ if $modeok && $tagok ; then
+ . ${top_builddir_slash}doltcompile "${args@<:@@@:>@}"
+ else
+- exec ${top_builddir_slash}libtool "$[]@"
++ exec ${top_builddir_slash}@host_alias@-libtool "$[]@"
+ fi
+ __DOLTLIBTOOL__EOF__
+
diff --git a/recipes/obsolete/xorg-lib/libx11-1.3.6/keysymdef_include.patch b/recipes/obsolete/xorg-lib/libx11-1.3.6/keysymdef_include.patch
new file mode 100644
index 0000000000..1a30e345f9
--- /dev/null
+++ b/recipes/obsolete/xorg-lib/libx11-1.3.6/keysymdef_include.patch
@@ -0,0 +1,19 @@
+diff -uNr libX11-1.3.6.orig//configure.ac libX11-1.3.6/configure.ac
+--- libX11-1.3.6.orig//configure.ac 2010-09-20 08:04:16.000000000 +0200
++++ libX11-1.3.6/configure.ac 2010-09-28 16:29:26.000000000 +0200
+@@ -355,7 +355,14 @@
+ # Find keysymdef.h
+ #
+ AC_MSG_CHECKING([keysym definitions])
+-KEYSYMDEFDIR=`$PKG_CONFIG --variable=includedir xproto`/X11
++AC_ARG_WITH(keysymdefdir,
++ AC_HELP_STRING([--with-keysymdefdir=DIR], [The location of keysymdef.h]),
++ KEYSYMDEFDIR=$withval, KEYSYMDEFDIR="")
++
++if test x$KEYSYMDEFDIR = x; then
++ KEYSYMDEFDIR=`$PKG_CONFIG --variable=includedir xproto`/X11
++fi
++
+ FILES="keysymdef.h XF86keysym.h Sunkeysym.h DECkeysym.h HPkeysym.h"
+ for i in $FILES; do
+ if test -f "$KEYSYMDEFDIR/$i"; then
diff --git a/recipes/obsolete/xorg-lib/libx11-1.3.6/x11_disable_makekeys.patch b/recipes/obsolete/xorg-lib/libx11-1.3.6/x11_disable_makekeys.patch
new file mode 100644
index 0000000000..9763313975
--- /dev/null
+++ b/recipes/obsolete/xorg-lib/libx11-1.3.6/x11_disable_makekeys.patch
@@ -0,0 +1,29 @@
+Index: libX11-1.3.4/src/util/Makefile.am
+===================================================================
+--- libX11-1.3.4.orig/src/util/Makefile.am
++++ libX11-1.3.4/src/util/Makefile.am
+@@ -1,24 +1 @@
+-
+-noinst_PROGRAMS=makekeys
+-
+-makekeys_CFLAGS = \
+- $(X11_CFLAGS) \
+- $(CWARNFLAGS)
+-
+-CC = @CC_FOR_BUILD@
+-CPPFLAGS = @CPPFLAGS_FOR_BUILD@
+-CFLAGS = @CFLAGS_FOR_BUILD@
+-LDFLAGS = @LDFLAGS_FOR_BUILD@
+-
+ EXTRA_DIST = mkks.sh
+-
+-if LINT
+-# Check source code with tools like lint & sparse
+-
+-ALL_LINT_FLAGS=$(LINT_FLAGS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+- $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS)
+-
+-lint:
+- $(LINT) $(ALL_LINT_FLAGS) makekeys.c
+-
+-endif LINT
diff --git a/recipes/obsolete/xorg-lib/libx11_1.3.2.bb b/recipes/obsolete/xorg-lib/libx11_1.3.2.bb
new file mode 100644
index 0000000000..189d1ffdfe
--- /dev/null
+++ b/recipes/obsolete/xorg-lib/libx11_1.3.2.bb
@@ -0,0 +1,11 @@
+require libx11.inc
+PR = "${INC_PR}.3"
+# gcc 4.5 ends up ICEing with thumb and -O1 with -fno-omit-framepointer
+# therefore if we are in thumb mode then we use -Os instead of -O1 for
+# DEBUG_OPTIMIZATION
+
+DEBUG_OPTIMIZATION_thumb_append = " -Os"
+SRC_URI += " file://dolt-fix.patch"
+SRC_URI += " file://configure.ac-nios2.patch"
+SRC_URI[archive.md5sum] = "001d780829f936e34851ef7cd37b4dfd"
+SRC_URI[archive.sha256sum] = "4def4d5c9fce85d690f1f29d675154594acdea3d3fe792d0cb513732c7b4bcb2"
diff --git a/recipes/obsolete/xorg-lib/libx11_1.3.6.bb b/recipes/obsolete/xorg-lib/libx11_1.3.6.bb
new file mode 100644
index 0000000000..8d9f343948
--- /dev/null
+++ b/recipes/obsolete/xorg-lib/libx11_1.3.6.bb
@@ -0,0 +1,7 @@
+require libx11.inc
+PR = "${INC_PR}.1"
+
+SRC_URI += " file://dolt-fix.patch"
+SRC_URI += " file://configure.ac-nios2.patch"
+SRC_URI[archive.md5sum] = "8e0a8a466aa78f66e09fe06cb395319f"
+SRC_URI[archive.sha256sum] = "599826765c59a98b1e58b4f6c4ad50dca69eeb0e7bd78aea736ca815f45bea40"
diff --git a/recipes/obsolete/xorg-lib/libxau_1.0.5.bb b/recipes/obsolete/xorg-lib/libxau_1.0.5.bb
new file mode 100644
index 0000000000..3e95f97944
--- /dev/null
+++ b/recipes/obsolete/xorg-lib/libxau_1.0.5.bb
@@ -0,0 +1,12 @@
+require xorg-lib-common.inc
+DESCRIPTION = "A Sample Authorization Protocol for X"
+DEPENDS += " xproto"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "993b3185c629e4b89401fca072dcb663"
+SRC_URI[archive.sha256sum] = "a503b3e88d29fa9c45cce1b2d1af54106c2ce21491348c394e251a071d8108ee"
+
+BBCLASSEXTEND = "native nativesdk"
+
+XORG_PN = "libXau"
diff --git a/recipes/obsolete/xorg-lib/libxaw_1.0.7.bb b/recipes/obsolete/xorg-lib/libxaw_1.0.7.bb
new file mode 100644
index 0000000000..e072411313
--- /dev/null
+++ b/recipes/obsolete/xorg-lib/libxaw_1.0.7.bb
@@ -0,0 +1,25 @@
+require xorg-lib-common.inc
+DESCRIPTION = "X Athena Widget Set"
+DEPENDS += "xproto virtual/libx11 libxext xextproto libxt libxmu libxpm libxp printproto libxau"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "815e74de989ccda684e2baf8d12cf519"
+SRC_URI[archive.sha256sum] = "740aaee9b09586b1c80f80890381c5ee70ea11efa4b6159f707c0f3684c6f328"
+
+# disable docs as groff detection doesn't work on some hosts while cross compilling
+EXTRA_OECONF += " --disable-docs "
+
+do_install_append () {
+ ln -sf libXaw6.so.6 ${D}${libdir}/libXaw.so.6
+ ln -sf libXaw7.so.7 ${D}${libdir}/libXaw.so.7
+ ln -sf libXaw7.so.7 ${D}${libdir}/libXaw.so
+}
+
+PACKAGES =+ "libxaw6 libxaw7 libxaw8"
+
+FILES_libxaw6 = "${libdir}/libXaw*.so.6*"
+FILES_libxaw7 = "${libdir}/libXaw*.so.7*"
+FILES_libxaw8 = "${libdir}/libXaw8.so.8*"
+
+XORG_PN = "libXaw"
diff --git a/recipes/obsolete/xorg-lib/libxcomposite_0.4.1.bb b/recipes/obsolete/xorg-lib/libxcomposite_0.4.1.bb
new file mode 100644
index 0000000000..f9460c3323
--- /dev/null
+++ b/recipes/obsolete/xorg-lib/libxcomposite_0.4.1.bb
@@ -0,0 +1,11 @@
+require xorg-lib-common.inc
+DESCRIPTION = "X Composite extension library."
+LICENSE = "BSD-X"
+DEPENDS += " compositeproto virtual/libx11 libxfixes libxext"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "0f1367f57fdf5df17a8dd71d0fa68248"
+SRC_URI[archive.sha256sum] = "3715a25565222d8eb0468805db1113b514128ee5e9bc6908400f189f680d7a13"
+
+XORG_PN = "libXcomposite"
diff --git a/recipes/obsolete/xorg-lib/libxcursor_1.1.10.bb b/recipes/obsolete/xorg-lib/libxcursor_1.1.10.bb
new file mode 100644
index 0000000000..7f3f0f937f
--- /dev/null
+++ b/recipes/obsolete/xorg-lib/libxcursor_1.1.10.bb
@@ -0,0 +1,13 @@
+require xorg-lib-common.inc
+DESCRIPTION = "X cursor management library"
+LICENSE = "BSD-X"
+DEPENDS += "libxrender libxfixes"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "7dcdad1c10daea872cb3355af414b2ca"
+SRC_URI[archive.sha256sum] = "b9446df62203f2c3204b6bcc0057dc909d0dc792f0dd97bc491581b08be36cbd"
+
+BBCLASSEXTEND = "native"
+
+XORG_PN = "libXcursor"
diff --git a/recipes/obsolete/xorg-lib/libxdamage_1.1.2.bb b/recipes/obsolete/xorg-lib/libxdamage_1.1.2.bb
new file mode 100644
index 0000000000..294e514cba
--- /dev/null
+++ b/recipes/obsolete/xorg-lib/libxdamage_1.1.2.bb
@@ -0,0 +1,11 @@
+require xorg-lib-common.inc
+DESCRIPTION = "X11 damaged region extension library"
+LICENSE = "BSD-X"
+DEPENDS += "damageproto libxfixes"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "b42780bce703ec202a33e5693991c09d"
+SRC_URI[archive.sha256sum] = "a56a10acb34827c4d1a0ee282a338cbb04baa03d7fc7bc69e5690915c8fc7c0a"
+
+XORG_PN = "libXdamage"
diff --git a/recipes/obsolete/xorg-lib/libxdmcp_1.0.3.bb b/recipes/obsolete/xorg-lib/libxdmcp_1.0.3.bb
new file mode 100644
index 0000000000..1e38efa7ac
--- /dev/null
+++ b/recipes/obsolete/xorg-lib/libxdmcp_1.0.3.bb
@@ -0,0 +1,12 @@
+require xorg-lib-common.inc
+DESCRIPTION = "X Display Manager Control Protocol library"
+DEPENDS += "xproto"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "d60941d471800f41a3f19b24bea855a7"
+SRC_URI[archive.sha256sum] = "d8033a2fae20fed6de4f16b73ad69ca1c511e7da31c88e9bc6e75976187378cb"
+
+BBCLASSEXTEND = "native nativesdk"
+
+XORG_PN = "libXdmcp"
diff --git a/recipes/obsolete/xorg-lib/libxevie_1.0.2.bb b/recipes/obsolete/xorg-lib/libxevie_1.0.2.bb
new file mode 100644
index 0000000000..d418768caa
--- /dev/null
+++ b/recipes/obsolete/xorg-lib/libxevie_1.0.2.bb
@@ -0,0 +1,10 @@
+require xorg-lib-common.inc
+DESCRIPTION = "X11 EvIE extension library"
+DEPENDS += "libxext evieext"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "88e9bf535364e7c821ef4014fb1ca2dd"
+SRC_URI[archive.sha256sum] = "ff70b81ad145932db2d206735cefcb698dadad241001df7ba6b97e8081d174da"
+
+XORG_PN = "libXevie"
diff --git a/recipes/obsolete/xorg-lib/libxext_1.1.1.bb b/recipes/obsolete/xorg-lib/libxext_1.1.1.bb
new file mode 100644
index 0000000000..d3d6c66d15
--- /dev/null
+++ b/recipes/obsolete/xorg-lib/libxext_1.1.1.bb
@@ -0,0 +1,12 @@
+require xorg-lib-common.inc
+DESCRIPTION = "X11 miscellaneous extension library"
+DEPENDS += "xproto virtual/libx11 xextproto libxau"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "c417c0e8df39a067f90a2a2e7133637d"
+SRC_URI[archive.sha256sum] = "110ce3bc7fb3a86659556994d0801c74bedcbd8ba8d1f90ee33d4c47a91e9bb3"
+
+BBCLASSEXTEND = "native nativesdk"
+
+XORG_PN = "libXext"
diff --git a/recipes/obsolete/xorg-lib/libxfixes_4.0.4.bb b/recipes/obsolete/xorg-lib/libxfixes_4.0.4.bb
new file mode 100644
index 0000000000..26ccb96196
--- /dev/null
+++ b/recipes/obsolete/xorg-lib/libxfixes_4.0.4.bb
@@ -0,0 +1,13 @@
+require xorg-lib-common.inc
+DESCRIPTION = "X Fixes extension library."
+LICENSE = "BSD-X"
+DEPENDS += "virtual/libx11 xproto fixesproto xextproto"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "7f2c40852eb337b237ad944ca5c30d49"
+SRC_URI[archive.sha256sum] = "ba31d7e5c5c1907c30cba50bfd669aa7fe860555287c29f6e786612e4be33b48"
+
+BBCLASSEXTEND = "native"
+
+XORG_PN = "libXfixes"
diff --git a/recipes/obsolete/xorg-lib/libxfont_1.4.1.bb b/recipes/obsolete/xorg-lib/libxfont_1.4.1.bb
new file mode 100644
index 0000000000..8d046d1b14
--- /dev/null
+++ b/recipes/obsolete/xorg-lib/libxfont_1.4.1.bb
@@ -0,0 +1,16 @@
+require xorg-lib-common.inc
+DESCRIPTION = "X11 font rasterisation library"
+LICENSE = "BSD-X"
+DEPENDS += "freetype fontcacheproto xtrans fontsproto libfontenc"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "4f2bed2a2be82e90a51a24bb3a22cdf0"
+SRC_URI[archive.sha256sum] = "112bfc30820b98deec4c9914536c5aa2f8b5162bd2b0bdb342343168e06f7679"
+
+# disable docs
+EXTRA_OECONF += " --disable-devel-docs "
+
+BBCLASSEXTEND = "native"
+
+XORG_PN = "libXfont"
diff --git a/recipes/obsolete/xorg-lib/libxft-2.1.14/autotools.patch b/recipes/obsolete/xorg-lib/libxft-2.1.14/autotools.patch
new file mode 100644
index 0000000000..62f44428ad
--- /dev/null
+++ b/recipes/obsolete/xorg-lib/libxft-2.1.14/autotools.patch
@@ -0,0 +1,54 @@
+Index: libXft-2.1.14/configure.ac
+===================================================================
+--- libXft-2.1.14.orig/configure.ac 2009-10-10 01:44:49.000000000 +0200
++++ libXft-2.1.14/configure.ac 2009-12-23 20:56:25.759695121 +0100
+@@ -37,26 +37,14 @@
+ # Require xorg-macros: XORG_DEFAULT_OPTIONS
+ m4_ifndef([XORG_MACROS_VERSION], [AC_FATAL([must install xorg-macros 1.3 or later before running autoconf/autogen])])
+ XORG_MACROS_VERSION(1.3)
+-AM_CONFIG_HEADER(config.h)
++AC_CONFIG_HEADERS([config.h])
++AC_CONFIG_HEADERS([include/X11/Xft/Xft.h])
+
+ # checks for progs
+ AC_PROG_CC
+ AC_PROG_LIBTOOL
+ XORG_DEFAULT_OPTIONS
+
+-# Set library version for Xft.h from package version set in AC_INIT
+-# copied from PACKAGE_VERSION_* settings in XORG_VERSION
+-AC_CONFIG_HEADERS([include/X11/Xft/Xft.h])
+-AC_DEFINE_UNQUOTED([XFT_MAJOR],
+- [`echo $PACKAGE_VERSION | cut -d . -f 1`],
+- [Major version of Xft])
+-AC_DEFINE_UNQUOTED([XFT_MINOR],
+- [`echo $PACKAGE_VERSION | cut -d . -f 2 | cut -d - -f 1`],
+- [Minor version of Xft])
+-AC_DEFINE_UNQUOTED([XFT_REVISION],
+- [`echo $PACKAGE_VERSION | cut -d . -f 3 | cut -d - -f 1`],
+- [Micro revision of Xft])
+-
+ #
+ # Check for Xrender
+ #
+Index: libXft-2.1.14/include/X11/Xft/Xft.h.in
+===================================================================
+--- libXft-2.1.14.orig/include/X11/Xft/Xft.h.in 2009-10-06 09:36:40.000000000 +0200
++++ libXft-2.1.14/include/X11/Xft/Xft.h.in 2009-12-23 20:55:52.063859518 +0100
+@@ -27,11 +27,12 @@
+ * Current Xft version number, set from version in the Xft configure.ac file.
+ */
+
+-#undef XFT_MAJOR /* Will be substituted by configure */
+-#undef XFT_MINOR /* Will be substituted by configure */
+-#undef XFT_REVISION /* Will be substituted by configure */
++/* Will be substituted by configure */
++#undef PACKAGE_VERSION_MAJOR
++#undef PACKAGE_VERSION_MINOR
++#undef PACKAGE_VERSION_PATCHLEVEL
+
+-#define XFT_VERSION ((XFT_MAJOR * 10000) + (XFT_MINOR * 100) + (XFT_REVISION))
++#define XFT_VERSION ((PACKAGE_VERSION_MAJOR * 10000) + (PACKAGE_VERSION_MINOR * 100) + (PACKAGE_VERSION_PATCHLEVEL))
+ #define XftVersion XFT_VERSION
+
+ #include <stdarg.h>
diff --git a/recipes/obsolete/xorg-lib/libxft_2.1.14.bb b/recipes/obsolete/xorg-lib/libxft_2.1.14.bb
new file mode 100644
index 0000000000..34fadcd7e7
--- /dev/null
+++ b/recipes/obsolete/xorg-lib/libxft_2.1.14.bb
@@ -0,0 +1,22 @@
+require xorg-lib-common.inc
+DESCRIPTION = "FreeType-based font drawing library for X"
+DEPENDS += "libxrender freetype fontconfig"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI += "file://autotools.patch"
+SRC_URI[archive.md5sum] = "254e62a233491e0e1251636536163e20"
+SRC_URI[archive.sha256sum] = "700e9d594b81cad3dfd5fac4a5cfd0c4cf7780c812507ef04eb40139ebf5175e"
+
+FILES_${PN} = "${libdir}/lib*${SOLIBS}"
+FILES_${PN}-dev = "${includedir} ${libdir}/lib*${SOLIBSDEV} ${libdir}/*.la \
+ ${libdir}/*.a ${libdir}/pkgconfig \
+ ${datadir}/aclocal ${bindir} ${sbindir}"
+
+python do_package() {
+ if bb.data.getVar('DEBIAN_NAMES', d, 1):
+ bb.data.setVar('PKG_${PN}', 'libxft2', d)
+ bb.build.exec_func('package_do_package', d)
+}
+
+XORG_PN = "libXft"
diff --git a/recipes/obsolete/xorg-lib/libxi_1.3.bb b/recipes/obsolete/xorg-lib/libxi_1.3.bb
new file mode 100644
index 0000000000..22ef799737
--- /dev/null
+++ b/recipes/obsolete/xorg-lib/libxi_1.3.bb
@@ -0,0 +1,10 @@
+require xorg-lib-common.inc
+DESCRIPTION = "X11 Input extension library"
+DEPENDS += "libxext inputproto"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "8df4ece9bd1efb02c28acb2b6f485e09"
+SRC_URI[archive.sha256sum] = "362b8c0c60386841063bd7e01afa72e37eb87ada6e64e539d960f88c780a944b"
+
+XORG_PN = "libXi"
diff --git a/recipes/obsolete/xorg-lib/libxinerama_1.1.bb b/recipes/obsolete/xorg-lib/libxinerama_1.1.bb
new file mode 100644
index 0000000000..4d5f4277de
--- /dev/null
+++ b/recipes/obsolete/xorg-lib/libxinerama_1.1.bb
@@ -0,0 +1,10 @@
+require xorg-lib-common.inc
+DESCRIPTION = "X11 Xinerama extension library"
+DEPENDS += "libxext xineramaproto"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "a2ac01fc0426cdbb713c5d59cf9955ed"
+SRC_URI[archive.sha256sum] = "e0d39e74c2e131b44cc98dd4910165c9b8d937df93be58e6afb7c2a56772bf34"
+
+XORG_PN = "libXinerama"
diff --git a/recipes/obsolete/xorg-lib/libxkbfile_1.0.6.bb b/recipes/obsolete/xorg-lib/libxkbfile_1.0.6.bb
new file mode 100644
index 0000000000..a7fc91de3e
--- /dev/null
+++ b/recipes/obsolete/xorg-lib/libxkbfile_1.0.6.bb
@@ -0,0 +1,11 @@
+require xorg-lib-common.inc
+DESCRIPTION = "X11 keyboard file manipulation library"
+LICENSE = "GPL"
+DEPENDS += "virtual/libx11 kbproto"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "b01156e263eca8177e6b7f10441951c4"
+SRC_URI[archive.sha256sum] = "2ca43c1f6b2782994167a328471aa859d366cd7303c6dcbc8bda951a84a06039"
+
+BBCLASSEXTEND = "native"
diff --git a/recipes/obsolete/xorg-lib/libxmu_1.0.5.bb b/recipes/obsolete/xorg-lib/libxmu_1.0.5.bb
new file mode 100644
index 0000000000..5f361ef988
--- /dev/null
+++ b/recipes/obsolete/xorg-lib/libxmu_1.0.5.bb
@@ -0,0 +1,17 @@
+require xorg-lib-common.inc
+DESCRIPTION = "X11 miscellaneous utility library"
+DEPENDS += "libxt libxext"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "fc4d66be7a1a1eb474954728415e46d6"
+SRC_URI[archive.sha256sum] = "0692b6b0ec1019cfaa8418020b1127bfb0975f5a579a0b1f9eb7fd8f2f7126d7"
+
+PACKAGES =+ "libxmuu libxmuu-dev"
+
+FILES_libxmuu = "${libdir}/libXmuu.so.*"
+FILES_libxmuu-dev = "${libdir}/libXmuu.so"
+
+LEAD_SONAME = "libXmu"
+
+XORG_PN = "libXmu"
diff --git a/recipes/obsolete/xorg-lib/libxpm_3.5.8.bb b/recipes/obsolete/xorg-lib/libxpm_3.5.8.bb
new file mode 100644
index 0000000000..9bb7c8ea26
--- /dev/null
+++ b/recipes/obsolete/xorg-lib/libxpm_3.5.8.bb
@@ -0,0 +1,16 @@
+require xorg-lib-common.inc
+DESCRIPTION = "X11 Pixmap library"
+LICENSE = "X-BSD"
+DEPENDS += "libxext libsm libxt"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "38e58e72d476a74298a59052fde185a3"
+SRC_URI[archive.sha256sum] = "02a77aaa32e6e335e1ee04aeb9ad1008045d98274d64ed33bc5fc6c3a3542c4c"
+
+PACKAGES =+ "sxpm cxpm"
+
+FILES_cxpm = "${bindir}/cxpm"
+FILES_sxpm = "${bindir}/sxpm"
+
+XORG_PN = "libXpm"
diff --git a/recipes/obsolete/xorg-lib/libxrandr_1.2.1.bb b/recipes/obsolete/xorg-lib/libxrandr_1.2.1.bb
new file mode 100644
index 0000000000..983265dfd3
--- /dev/null
+++ b/recipes/obsolete/xorg-lib/libxrandr_1.2.1.bb
@@ -0,0 +1,13 @@
+require xorg-lib-common.inc
+DESCRIPTION = "X11 Resize and Rotate extension library"
+LICENSE = "BSD-X"
+DEPENDS += "randrproto libxrender libxext"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "5860360f5b038cc728f388f875ce525d"
+SRC_URI[archive.sha256sum] = "2d2df642eb8e0527936cdf4ed1c096f69df53e9b95e2532c8ed0cabd06a45407"
+
+BBCLASSEXTEND = "nativesdk"
+
+XORG_PN = "libXrandr"
diff --git a/recipes/obsolete/xorg-lib/libxrandr_1.3.0.bb b/recipes/obsolete/xorg-lib/libxrandr_1.3.0.bb
new file mode 100644
index 0000000000..6808e08b7b
--- /dev/null
+++ b/recipes/obsolete/xorg-lib/libxrandr_1.3.0.bb
@@ -0,0 +1,13 @@
+require xorg-lib-common.inc
+DESCRIPTION = "X11 Resize and Rotate extension library"
+LICENSE = "BSD-X"
+DEPENDS += "randrproto libxrender libxext"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "68eb59c3b7524db6ffd78746ee893d1d"
+SRC_URI[archive.sha256sum] = "5961ce0f77c5173a8208b3ed669ac01719f2bf4a10517ffa6c33a5e064802e78"
+
+BBCLASSEXTEND = "nativesdk"
+
+XORG_PN = "libXrandr"
diff --git a/recipes/obsolete/xorg-lib/libxrender_0.9.5.bb b/recipes/obsolete/xorg-lib/libxrender_0.9.5.bb
new file mode 100644
index 0000000000..047b8d753e
--- /dev/null
+++ b/recipes/obsolete/xorg-lib/libxrender_0.9.5.bb
@@ -0,0 +1,13 @@
+require xorg-lib-common.inc
+DESCRIPTION = "X11 Rendering Extension client library"
+LICENSE = "BSD-X"
+DEPENDS += "virtual/libx11 renderproto xproto libxdmcp"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "276dd9e85daf0680616cd9f132b354c9"
+SRC_URI[archive.sha256sum] = "bc0590438a4be2b674cbac6f4ad46e5a89acd02aa94817da0fa8eb3ef05ed5d5"
+
+BBCLASSEXTEND = "native nativesdk"
+
+XORG_PN = "libXrender"
diff --git a/recipes/obsolete/xorg-lib/libxres_1.0.4.bb b/recipes/obsolete/xorg-lib/libxres_1.0.4.bb
new file mode 100644
index 0000000000..2049bebe55
--- /dev/null
+++ b/recipes/obsolete/xorg-lib/libxres_1.0.4.bb
@@ -0,0 +1,10 @@
+require xorg-lib-common.inc
+DESCRIPTION = "X11 Resource extension library"
+DEPENDS += "libxext resourceproto"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "4daf91f93d924e693f6f6ed276791be2"
+SRC_URI[archive.sha256sum] = "457f567a70ef8798cfb32f897ffa52c3f010923b07414b3a42277f56877572df"
+
+XORG_PN = "libXres"
diff --git a/recipes/obsolete/xorg-lib/libxscrnsaver_1.2.0.bb b/recipes/obsolete/xorg-lib/libxscrnsaver_1.2.0.bb
new file mode 100644
index 0000000000..f02ff38ffc
--- /dev/null
+++ b/recipes/obsolete/xorg-lib/libxscrnsaver_1.2.0.bb
@@ -0,0 +1,13 @@
+require xorg-lib-common.inc
+DESCRIPTION = "X Screen Saver extension library"
+LICENSE = "GPL"
+DEPENDS += "libxext scrnsaverproto"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "33e54f64b55f22d8bbe822a5b62568cb"
+SRC_URI[archive.sha256sum] = "5b067bec0f2eb6405226bde5f20ca107eb0e5c11f5e5e24b455930c450487f85"
+
+RREPLACES_${PN} = "libxss"
+
+XORG_PN = "libXScrnSaver"
diff --git a/recipes/obsolete/xorg-lib/libxt_1.0.7.bb b/recipes/obsolete/xorg-lib/libxt_1.0.7.bb
new file mode 100644
index 0000000000..238ea061f4
--- /dev/null
+++ b/recipes/obsolete/xorg-lib/libxt_1.0.7.bb
@@ -0,0 +1,22 @@
+require xorg-lib-common.inc
+DESCRIPTION = "X11 toolkit intrinsics library"
+DEPENDS += "libsm virtual/libx11 kbproto"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "96f3c93434a93186d178b60d4a262496"
+SRC_URI[archive.sha256sum] = "706d5248b061c8455f74ce5269ecc5ef59c27d0f52d22b07138f781928dda9ec"
+
+EXTRA_OECONF += "--disable-install-makestrs --disable-xkb"
+
+do_compile() {
+ (
+ unset CC LD CXX CCLD
+ oe_runmake -C util 'XT_CFLAGS=' 'CC=${BUILD_CC}' 'LD=${BUILD_LD}' 'CXX=${BUILD_CXX}' 'CCLD=${BUILD_CCLD}' 'CFLAGS=-D_GNU_SOURCE -I${STAGING_INCDIR_NATIVE} ${BUILD_CFLAGS}' 'LDFLAGS=${BUILD_LDFLAGS}' 'CXXFLAGS=${BUILD_CXXFLAGS}' 'CPPFLAGS=${BUILD_CPPFLAGS}' makestrs
+ ) || exit 1
+ oe_runmake
+}
+
+BBCLASSEXTEND = "native"
+
+XORG_PN = "libXt"
diff --git a/recipes/obsolete/xorg-lib/libxtst_1.1.0.bb b/recipes/obsolete/xorg-lib/libxtst_1.1.0.bb
new file mode 100644
index 0000000000..2a0ffbecb1
--- /dev/null
+++ b/recipes/obsolete/xorg-lib/libxtst_1.1.0.bb
@@ -0,0 +1,10 @@
+require xorg-lib-common.inc
+DESCRIPTION = "X Test Extension: client side library"
+DEPENDS += "libxext recordproto inputproto libxi"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "dd6f3e20b87310187121539f9605d977"
+SRC_URI[archive.sha256sum] = "bd440f4779e06957211ba83782a5a1cfbf1d42b14fd3510a6dce440489a4eb26"
+
+XORG_PN = "libXtst"
diff --git a/recipes/obsolete/xorg-lib/libxv_1.0.5.bb b/recipes/obsolete/xorg-lib/libxv_1.0.5.bb
new file mode 100644
index 0000000000..7a60af89d1
--- /dev/null
+++ b/recipes/obsolete/xorg-lib/libxv_1.0.5.bb
@@ -0,0 +1,10 @@
+require xorg-lib-common.inc
+DESCRIPTION = "X11 Video extension library"
+LICENSE = "GPL"
+DEPENDS += "libxext videoproto"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "1d97798b1d8bbf8d9085e1b223a0738f"
+SRC_URI[archive.sha256sum] = "d549afdf22feefb97cca85dee12242af9f08c4d2435255dc7c30bd17d1d96010"
+
+XORG_PN = "libXv"
diff --git a/recipes/obsolete/xorg-lib/libxxf86dga_1.1.1.bb b/recipes/obsolete/xorg-lib/libxxf86dga_1.1.1.bb
new file mode 100644
index 0000000000..aafe621170
--- /dev/null
+++ b/recipes/obsolete/xorg-lib/libxxf86dga_1.1.1.bb
@@ -0,0 +1,10 @@
+require xorg-lib-common.inc
+DESCRIPTION = "X11 Direct Graphics Access extension library"
+DEPENDS += "libxext xf86dgaproto"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "368837d3d7a4d3b4f70be48383e3544e"
+SRC_URI[archive.sha256sum] = "8d37f8895ecff15cb821a3e77bd505598983a5c6eae546e77e2d3070a8de5616"
+
+XORG_PN = "libXxf86dga"
diff --git a/recipes/obsolete/xorg-lib/libxxf86misc_1.0.2.bb b/recipes/obsolete/xorg-lib/libxxf86misc_1.0.2.bb
new file mode 100644
index 0000000000..a44b46ff4c
--- /dev/null
+++ b/recipes/obsolete/xorg-lib/libxxf86misc_1.0.2.bb
@@ -0,0 +1,10 @@
+require xorg-lib-common.inc
+DESCRIPTION = "X11 XFree86 miscellaneous extension library"
+DEPENDS += "libxext xf86miscproto"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "51fed53e8de067d4b8666f75a0212400"
+SRC_URI[archive.sha256sum] = "8e64b6b1bf34fcd112b1fd866d77e110b47794e825a996e4492c0ee408957cb3"
+
+XORG_PN = "libXxf86misc"
diff --git a/recipes/obsolete/xorg-lib/libxxf86vm_1.1.0.bb b/recipes/obsolete/xorg-lib/libxxf86vm_1.1.0.bb
new file mode 100644
index 0000000000..181f220cd1
--- /dev/null
+++ b/recipes/obsolete/xorg-lib/libxxf86vm_1.1.0.bb
@@ -0,0 +1,10 @@
+require xorg-lib-common.inc
+DESCRIPTION = "X11 XFree86 video mode extension library"
+DEPENDS += "libxext xf86vidmodeproto"
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "b431ad7084e1055fef99a9115237edd8"
+SRC_URI[archive.sha256sum] = "7cc5e577b337c5267f4e65741f27229111ada8cb833e24b47713a683e8838de8"
+
+XORG_PN = "libXxf86vm"
diff --git a/recipes/obsolete/xorg-lib/pixman-0.12.0/pixman-arm.patch b/recipes/obsolete/xorg-lib/pixman-0.12.0/pixman-arm.patch
new file mode 100644
index 0000000000..91dda03b7c
--- /dev/null
+++ b/recipes/obsolete/xorg-lib/pixman-0.12.0/pixman-arm.patch
@@ -0,0 +1,632 @@
+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
+@@ -277,6 +277,44 @@ AC_SUBST(VMX_CFLAGS)
+
+ AM_CONDITIONAL(USE_VMX, test $have_vmx_intrinsics = yes)
+
++dnl Check for ARM
++
++have_armv6_simd=no
++AC_MSG_CHECKING(whether to use ARM assembler)
++xserver_save_CFLAGS=$CFLAGS
++CFLAGS="$CFLAGS $ARM_CFLAGS"
++AC_COMPILE_IFELSE([
++int main () {
++ asm("uqadd8 r1, r1, r2");
++ return 0;
++}], have_armv6_simd=yes)
++CFLAGS=$xserver_save_CFLAGS
++
++AC_ARG_ENABLE(arm,
++ [AC_HELP_STRING([--disable-arm],
++ [disable ARM fast paths])],
++ [enable_arm=$enableval], [enable_arm=auto])
++
++if test $enable_arm = no ; then
++ have_armv6_simd=disabled
++fi
++
++if test $have_armv6_simd = yes ; then
++ AC_DEFINE(USE_ARM, 1, [use ARM compiler intrinsics])
++else
++ ARM_CFLAGS=
++fi
++
++AC_MSG_RESULT($have_armv6_simd)
++if test $enable_arm = yes && test $have_armv6_simd = no ; then
++ AC_MSG_ERROR([ARM intrinsics not detected])
++fi
++
++AC_SUBST(ARM_CFLAGS)
++
++AM_CONDITIONAL(USE_ARM, test $have_armv6_simd = yes)
++
++
+ AC_ARG_ENABLE(gtk,
+ [AC_HELP_STRING([--enable-gtk],
+ [enable tests using GTK+ [default=auto]])],
+--- a/pixman/Makefile.am
++++ b/pixman/Makefile.am
+@@ -79,3 +79,15 @@ libpixman_sse2_la_LIBADD = $(DEP_LIBS)
+ libpixman_1_la_LIBADD += libpixman-sse2.la
+ endif
+
++# arm code
++if USE_ARM
++noinst_LTLIBRARIES += libpixman-arm.la
++libpixman_arm_la_SOURCES = \
++ pixman-arm.c \
++ 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
++
++
+--- /dev/null
++++ b/pixman/pixman-arm.c
+@@ -0,0 +1,409 @@
++/*
++ * 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
++ * the above copyright notice appear in all copies and that both that
++ * copyright notice and this permission notice appear in supporting
++ * documentation, and that the name of Mozilla Corporation not be used in
++ * advertising or publicity pertaining to distribution of the software without
++ * specific, written prior permission. Mozilla Corporation makes no
++ * representations about the suitability of this software for any purpose. It
++ * is provided "as is" without express or implied warranty.
++ *
++ * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
++ * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
++ * FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY
++ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
++ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
++ * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
++ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
++ * SOFTWARE.
++ *
++ * Author: Jeff Muizelaar (jeff@infidigm.net)
++ *
++ */
++#ifdef HAVE_CONFIG_H
++#include <config.h>
++#endif
++
++#include "pixman-arm.h"
++
++void
++fbCompositeSrcAdd_8000x8000arm (pixman_op_t op,
++ pixman_image_t * pSrc,
++ pixman_image_t * pMask,
++ pixman_image_t * pDst,
++ int16_t xSrc,
++ int16_t ySrc,
++ int16_t xMask,
++ int16_t yMask,
++ int16_t xDst,
++ int16_t yDst,
++ uint16_t width,
++ uint16_t height)
++{
++ uint8_t *dstLine, *dst;
++ uint8_t *srcLine, *src;
++ int dstStride, srcStride;
++ uint16_t w;
++ uint8_t s, d;
++
++ fbComposeGetStart (pSrc, xSrc, ySrc, uint8_t, srcStride, srcLine, 1);
++ fbComposeGetStart (pDst, xDst, yDst, uint8_t, dstStride, dstLine, 1);
++
++ while (height--)
++ {
++ dst = dstLine;
++ dstLine += dstStride;
++ src = srcLine;
++ srcLine += srcStride;
++ w = width;
++
++ while (w && (unsigned long)dst & 3)
++ {
++ s = *src;
++ d = *dst;
++ asm("uqadd8 %0, %1, %2" : "+r"(d) : "r"(s));
++ *dst = d;
++
++ dst++;
++ src++;
++ w--;
++ }
++
++ while (w >= 4)
++ {
++ asm("uqadd8 %0, %1, %2" : "=r"(*(uint32_t*)dst) : "r"(*(uint32_t*)src), "r"(*(uint32_t*)dst));
++ dst += 4;
++ src += 4;
++ w -= 4;
++ }
++
++ while (w)
++ {
++ s = *src;
++ d = *dst;
++ asm("uqadd8 %0, %1, %2" : "+r"(d) : "r"(s));
++ *dst = d;
++
++ dst++;
++ src++;
++ w--;
++ }
++ }
++
++}
++
++void
++fbCompositeSrc_8888x8888arm (pixman_op_t op,
++ pixman_image_t * pSrc,
++ pixman_image_t * pMask,
++ pixman_image_t * pDst,
++ int16_t xSrc,
++ int16_t ySrc,
++ int16_t xMask,
++ int16_t yMask,
++ int16_t xDst,
++ int16_t yDst,
++ uint16_t width,
++ uint16_t height)
++{
++ uint32_t *dstLine, *dst;
++ uint32_t *srcLine, *src;
++ int dstStride, srcStride;
++ uint16_t w;
++ 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);
++ fbComposeGetStart (pSrc, xSrc, ySrc, uint32_t, srcStride, srcLine, 1);
++
++ while (height--)
++ {
++ dst = dstLine;
++ dstLine += dstStride;
++ src = srcLine;
++ srcLine += srcStride;
++ w = width;
++
++//#define inner_branch
++ asm volatile (
++ "cmp %[w], #0\n\t"
++ "beq 2f\n\t"
++ "1:\n\t"
++ /* load dest */
++ "ldr r5, [%[src]], #4\n\t"
++#ifdef inner_branch
++ /* We can avoid doing the multiplication in two cases: 0x0 or 0xff.
++ * The 0x0 case also allows us to avoid doing an unecessary data
++ * write which is more valuable so we only check for that */
++ "cmp r5, #0x1000000\n\t"
++ "blt 3f\n\t"
++
++ /* = 255 - alpha */
++ "sub r8, %[alpha_mask], r5, lsr #24\n\t"
++
++ "ldr r4, [%[dest]] \n\t"
++
++#else
++ "ldr r4, [%[dest]] \n\t"
++
++ /* = 255 - alpha */
++ "sub r8, %[alpha_mask], r5, lsr #24\n\t"
++#endif
++ "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"
++
++ "uxtab16 r6, r6, r6, ror #8\n\t"
++ "uxtab16 r7, r7, r7, ror #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"
++
++#ifdef inner_branch
++ "3:\n\t"
++
++#endif
++ "str r5, [%[dest]], #4\n\t"
++ /* increment counter and jmp to top */
++ "subs %[w], %[w], #1\n\t"
++ "bne 1b\n\t"
++ "2:\n\t"
++ : [w] "+r" (w), [dest] "+r" (dst), [src] "+r" (src)
++ : [component_half] "r" (component_half), [upper_component_mask] "r" (upper_component_mask),
++ [alpha_mask] "r" (alpha_mask)
++ : "r4", "r5", "r6", "r7", "r8", "cc", "memory"
++ );
++ }
++}
++
++void
++fbCompositeSrc_8888x8x8888arm (pixman_op_t op,
++ pixman_image_t * pSrc,
++ pixman_image_t * pMask,
++ pixman_image_t * pDst,
++ int16_t xSrc,
++ int16_t ySrc,
++ int16_t xMask,
++ int16_t yMask,
++ int16_t xDst,
++ int16_t yDst,
++ uint16_t width,
++ uint16_t height)
++{
++ uint32_t *dstLine, *dst;
++ uint32_t *srcLine, *src;
++ uint32_t mask;
++ int dstStride, srcStride;
++ uint16_t w;
++ uint32_t component_half = 0x800080;
++ uint32_t alpha_mask = 0xff;
++
++ fbComposeGetStart (pDst, xDst, yDst, uint32_t, dstStride, dstLine, 1);
++ fbComposeGetStart (pSrc, xSrc, ySrc, uint32_t, srcStride, srcLine, 1);
++
++ fbComposeGetSolid (pMask, mask, pDst->bits.format);
++ mask = (mask) >> 24;
++
++ while (height--)
++ {
++ dst = dstLine;
++ dstLine += dstStride;
++ src = srcLine;
++ srcLine += srcStride;
++ w = width;
++
++//#define inner_branch
++ asm volatile (
++ "cmp %[w], #0\n\t"
++ "beq 2f\n\t"
++ "1:\n\t"
++ /* load dest */
++ "ldr r5, [%[src]], #4\n\t"
++#ifdef inner_branch
++ /* We can avoid doing the multiplication in two cases: 0x0 or 0xff.
++ * The 0x0 case also allows us to avoid doing an unecessary data
++ * write which is more valuable so we only check for that */
++ "cmp r5, #0x1000000\n\t"
++ "blt 3f\n\t"
++
++#endif
++ "ldr r4, [%[dest]] \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"
++
++ "uxtab16 r6, r6, r6, ror #8\n\t"
++ "uxtab16 r7, r7, r7, ror #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"
++
++ "uxtb16 r6, r4\n\t"
++ "uxtb16 r7, r4, ror #8\n\t"
++
++ /* 255 - alpha */
++ "sub r8, %[alpha_mask], r5, lsr #24\n\t"
++
++ /* multiply by alpha (r8) then by 257 and divide by 65536 */
++ "mla r6, r6, r8, %[component_half]\n\t"
++ "mla r7, r7, r8, %[component_half]\n\t"
++
++ "uxtab16 r6, r6, r6, ror #8\n\t"
++ "uxtab16 r7, r7, r7, ror #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"
++
++ "uqadd8 r5, r6, r5\n\t"
++
++#ifdef inner_branch
++ "3:\n\t"
++
++#endif
++ "str r5, [%[dest]], #4\n\t"
++ /* increment counter and jmp to top */
++ "subs %[w], %[w], #1\n\t"
++ "bne 1b\n\t"
++ "2:\n\t"
++ : [w] "+r" (w), [dest] "+r" (dst), [src] "+r" (src)
++ : [component_half] "r" (component_half), [mask_alpha] "r" (mask),
++ [alpha_mask] "r" (alpha_mask)
++ : "r4", "r5", "r6", "r7", "r8", "r9", "cc", "memory"
++ );
++ }
++}
++
++void
++fbCompositeSolidMask_nx8x8888arm (pixman_op_t op,
++ pixman_image_t * pSrc,
++ pixman_image_t * pMask,
++ pixman_image_t * pDst,
++ int16_t xSrc,
++ int16_t ySrc,
++ int16_t xMask,
++ int16_t yMask,
++ int16_t xDst,
++ int16_t yDst,
++ uint16_t width,
++ uint16_t height)
++{
++ uint32_t src, srca;
++ uint32_t *dstLine, *dst;
++ uint8_t *maskLine, *mask;
++ int dstStride, maskStride;
++ uint16_t w;
++
++ fbComposeGetSolid(pSrc, src, pDst->bits.format);
++
++ srca = src >> 24;
++ if (src == 0)
++ return;
++
++ uint32_t component_mask = 0xff00ff;
++ uint32_t component_half = 0x800080;
++
++ uint32_t src_hi = (src >> 8) & component_mask;
++ uint32_t src_lo = src & component_mask;
++
++ fbComposeGetStart (pDst, xDst, yDst, uint32_t, dstStride, dstLine, 1);
++ fbComposeGetStart (pMask, xMask, yMask, uint8_t, maskStride, maskLine, 1);
++
++ while (height--)
++ {
++ dst = dstLine;
++ dstLine += dstStride;
++ mask = maskLine;
++ maskLine += maskStride;
++ w = width;
++
++//#define inner_branch
++ asm volatile (
++ "cmp %[w], #0\n\t"
++ "beq 2f\n\t"
++ "1:\n\t"
++ /* load mask */
++ "ldrb r5, [%[mask]], #1\n\t"
++#ifdef inner_branch
++ /* We can avoid doing the multiplication in two cases: 0x0 or 0xff.
++ * The 0x0 case also allows us to avoid doing an unecessary data
++ * write which is more valuable so we only check for that */
++ /* 0x1000000 is the least value that contains alpha all values
++ * less than it have a 0 alpha value */
++ "cmp r5, #0x0\n\t"
++ "beq 3f\n\t"
++
++#endif
++ "ldr r4, [%[dest]] \n\t"
++
++ /* multiply by alpha (r8) then by 257 and divide by 65536 */
++ "mla r6, %[src_lo], r5, %[component_half]\n\t"
++ "mla r7, %[src_hi], r5, %[component_half]\n\t"
++
++ "uxtab16 r6, r6, r6, ror #8\n\t"
++ "uxtab16 r7, r7, r7, ror #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"
++
++ "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 */
++ "mvn r8, r5\n\t"
++ "mov r8, r8, lsr #24\n\t"
++
++ /* multiply by alpha (r8) then by 257 and divide by 65536 */
++ "mla r6, r6, r8, %[component_half]\n\t"
++ "mla r7, r7, r8, %[component_half]\n\t"
++
++ "uxtab16 r6, r6, r6, ror #8\n\t"
++ "uxtab16 r7, r7, r7, ror #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"
++
++ "uqadd8 r5, r6, r5\n\t"
++
++#ifdef inner_branch
++ "3:\n\t"
++
++#endif
++ "str r5, [%[dest]], #4\n\t"
++ /* increment counter and jmp to top */
++ "subs %[w], %[w], #1\n\t"
++ "bne 1b\n\t"
++ "2:\n\t"
++ : [w] "+r" (w), [dest] "+r" (dst), [src] "+r" (src), [mask] "+r" (mask)
++ : [component_half] "r" (component_half),
++ [src_hi] "r" (src_hi), [src_lo] "r" (src_lo)
++ : "r4", "r5", "r6", "r7", "r8", "cc", "memory"
++ );
++ }
++}
+--- /dev/null
++++ b/pixman/pixman-arm.h
+@@ -0,0 +1,94 @@
++/*
++ * 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
++ * the above copyright notice appear in all copies and that both that
++ * copyright notice and this permission notice appear in supporting
++ * documentation, and that the name of Mozilla Corporation not be used in
++ * advertising or publicity pertaining to distribution of the software without
++ * specific, written prior permission. Mozilla Corporation makes no
++ * representations about the suitability of this software for any purpose. It
++ * is provided "as is" without express or implied warranty.
++ *
++ * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
++ * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
++ * FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY
++ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
++ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
++ * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
++ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
++ * SOFTWARE.
++ *
++ * Author: Jeff Muizelaar (jeff@infidigm.net)
++ *
++ */
++
++#include "pixman-private.h"
++
++#ifdef USE_ARM
++
++static inline pixman_bool_t pixman_have_arm(void) { return TRUE; }
++
++#else
++#define pixman_have_arm() FALSE
++#endif
++
++#ifdef USE_ARM
++
++void
++fbCompositeSrcAdd_8000x8000arm (pixman_op_t op,
++ pixman_image_t * pSrc,
++ pixman_image_t * pMask,
++ pixman_image_t * pDst,
++ int16_t xSrc,
++ int16_t ySrc,
++ int16_t xMask,
++ int16_t yMask,
++ int16_t xDst,
++ int16_t yDst,
++ uint16_t width,
++ uint16_t height);
++void
++fbCompositeSrc_8888x8888arm (pixman_op_t op,
++ pixman_image_t * pSrc,
++ pixman_image_t * pMask,
++ pixman_image_t * pDst,
++ int16_t xSrc,
++ int16_t ySrc,
++ int16_t xMask,
++ int16_t yMask,
++ int16_t xDst,
++ int16_t yDst,
++ uint16_t width,
++ uint16_t height);
++
++void
++fbCompositeSrc_8888x8x8888arm (pixman_op_t op,
++ pixman_image_t * pSrc,
++ pixman_image_t * pMask,
++ pixman_image_t * pDst,
++ int16_t xSrc,
++ int16_t ySrc,
++ int16_t xMask,
++ int16_t yMask,
++ int16_t xDst,
++ int16_t yDst,
++ uint16_t width,
++ uint16_t height);
++void
++fbCompositeSolidMask_nx8x8888arm (pixman_op_t op,
++ pixman_image_t * pSrc,
++ pixman_image_t * pMask,
++ pixman_image_t * pDst,
++ int16_t xSrc,
++ int16_t ySrc,
++ int16_t xMask,
++ int16_t yMask,
++ int16_t xDst,
++ int16_t yDst,
++ uint16_t width,
++ uint16_t height);
++
++
++#endif /* USE_ARM */
+--- a/pixman/pixman-pict.c
++++ b/pixman/pixman-pict.c
+@@ -34,6 +34,7 @@
+ #include "pixman-mmx.h"
+ #include "pixman-vmx.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
+ };
+ #endif
+
++#ifdef USE_ARM
++static const FastPathInfo arm_fast_paths[] =
++{
++ { PIXMAN_OP_OVER, PIXMAN_a8r8g8b8, PIXMAN_null, PIXMAN_a8r8g8b8, fbCompositeSrc_8888x8888arm, 0 },
++ { PIXMAN_OP_OVER, PIXMAN_a8r8g8b8, PIXMAN_null, PIXMAN_x8r8g8b8, fbCompositeSrc_8888x8888arm, 0 },
++ { PIXMAN_OP_OVER, PIXMAN_a8b8g8r8, PIXMAN_null, PIXMAN_a8b8g8r8, fbCompositeSrc_8888x8888arm, 0 },
++ { PIXMAN_OP_OVER, PIXMAN_a8b8g8r8, PIXMAN_null, PIXMAN_x8b8g8r8, fbCompositeSrc_8888x8888arm, 0 },
++ { PIXMAN_OP_OVER, PIXMAN_a8r8g8b8, PIXMAN_a8, PIXMAN_a8r8g8b8, fbCompositeSrc_8888x8x8888arm, NEED_SOLID_MASK },
++ { PIXMAN_OP_OVER, PIXMAN_a8r8g8b8, PIXMAN_a8, PIXMAN_x8r8g8b8, fbCompositeSrc_8888x8x8888arm, NEED_SOLID_MASK },
++
++ { PIXMAN_OP_ADD, PIXMAN_a8, PIXMAN_null, PIXMAN_a8, fbCompositeSrcAdd_8000x8000arm, 0 },
++
++ { PIXMAN_OP_OVER, PIXMAN_solid, PIXMAN_a8, PIXMAN_a8r8g8b8, fbCompositeSolidMask_nx8x8888arm, 0 },
++ { PIXMAN_OP_OVER, PIXMAN_solid, PIXMAN_a8, PIXMAN_x8r8g8b8, fbCompositeSolidMask_nx8x8888arm, 0 },
++ { PIXMAN_OP_OVER, PIXMAN_solid, PIXMAN_a8, PIXMAN_a8b8g8r8, fbCompositeSolidMask_nx8x8888arm, 0 },
++ { PIXMAN_OP_OVER, PIXMAN_solid, PIXMAN_a8, PIXMAN_x8b8g8r8, fbCompositeSolidMask_nx8x8888arm, 0 },
++
++ { PIXMAN_OP_NONE },
++};
++#endif
+
+ static const FastPathInfo c_fast_paths[] =
+ {
+@@ -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
++ if (!info && pixman_have_arm())
++ info = get_fast_path (arm_fast_paths, op, pSrc, pMask, pDst, pixbuf);
++#endif
++
+ if (!info)
+ info = get_fast_path (c_fast_paths, op, pSrc, pMask, pDst, pixbuf);
+
diff --git a/recipes/obsolete/xorg-lib/pixman-0.12.0/pixman-x888-565.patch b/recipes/obsolete/xorg-lib/pixman-0.12.0/pixman-x888-565.patch
new file mode 100644
index 0000000000..a3fa331710
--- /dev/null
+++ b/recipes/obsolete/xorg-lib/pixman-0.12.0/pixman-x888-565.patch
@@ -0,0 +1,68 @@
+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
+---
+
+--- a/pixman/pixman-pict.c
++++ b/pixman/pixman-pict.c
+@@ -759,6 +759,46 @@ fbCompositeSrc_8888x0565 (pixman_op_t op
+ }
+ }
+
++
++void
++fbCompositeSrc_x888x0565 (pixman_op_t op,
++ pixman_image_t * pSrc,
++ pixman_image_t * pMask,
++ pixman_image_t * pDst,
++ int16_t xSrc,
++ int16_t ySrc,
++ int16_t xMask,
++ int16_t yMask,
++ int16_t xDst,
++ int16_t yDst,
++ uint16_t width,
++ uint16_t height)
++{
++ uint16_t *dstLine, *dst;
++ uint32_t *srcLine, *src, s;
++ int dstStride, srcStride;
++ uint16_t w;
++
++ fbComposeGetStart (pSrc, xSrc, ySrc, uint32_t, srcStride, srcLine, 1);
++ fbComposeGetStart (pDst, xDst, yDst, uint16_t, dstStride, dstLine, 1);
++
++ while (height--)
++ {
++ dst = dstLine;
++ dstLine += dstStride;
++ src = srcLine;
++ srcLine += srcStride;
++ w = width;
++
++ while (w--)
++ {
++ s = READ(pSrc, src++);
++ WRITE(pDst, dst, cvt8888to0565(s));
++ dst++;
++ }
++ }
++}
++
+ void
+ fbCompositeSrcAdd_8000x8000 (pixman_op_t op,
+ pixman_image_t * pSrc,
+@@ -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
++ { PIXMAN_OP_SRC, PIXMAN_a8r8g8b8, PIXMAN_null, PIXMAN_r5g6b5, fbCompositeSrc_x888x0565, 0 },
++ { PIXMAN_OP_SRC, PIXMAN_x8r8g8b8, PIXMAN_null, PIXMAN_r5g6b5, fbCompositeSrc_x888x0565, 0 },
++ { PIXMAN_OP_SRC, PIXMAN_a8b8g8r8, PIXMAN_null, PIXMAN_b5g6r5, fbCompositeSrc_x888x0565, 0 },
++ { PIXMAN_OP_SRC, PIXMAN_x8b8g8r8, PIXMAN_null, PIXMAN_b5g6r5, fbCompositeSrc_x888x0565, 0 },
+ { PIXMAN_OP_IN, PIXMAN_a8, PIXMAN_null, PIXMAN_a8, fbCompositeSrcIn_8x8, 0 },
+ { PIXMAN_OP_IN, PIXMAN_solid, PIXMAN_a8, PIXMAN_a8, fbCompositeSolidMaskIn_nx8x8, 0 },
+ { PIXMAN_OP_NONE },
diff --git a/recipes/obsolete/xorg-lib/pixman-0.18.4/0001-Generic-C-implementation-of-pixman_blt-with-overlapp.patch b/recipes/obsolete/xorg-lib/pixman-0.18.4/0001-Generic-C-implementation-of-pixman_blt-with-overlapp.patch
new file mode 100644
index 0000000000..b2488de4dd
--- /dev/null
+++ b/recipes/obsolete/xorg-lib/pixman-0.18.4/0001-Generic-C-implementation-of-pixman_blt-with-overlapp.patch
@@ -0,0 +1,114 @@
+From 05875eca09ee23ea04ccb32f87c7c355fd1b88f3 Mon Sep 17 00:00:00 2001
+From: Siarhei Siamashka <siarhei.siamashka@nokia.com>
+Date: Tue, 16 Mar 2010 16:55:28 +0100
+Subject: [PATCH 1/7] Generic C implementation of pixman_blt with overlapping support
+
+Uses memcpy/memmove functions to copy pixels, can handle the
+case when both source and destination areas are in the same
+image (this is useful for scrolling).
+
+It is assumed that copying direction is only important when
+using the same image for both source and destination (and
+src_stride == dst_stride). Copying direction is undefined
+for the images with different source and destination stride
+which happen to be in the overlapped areas (but this is an
+unrealistic case anyway).
+---
+ pixman/pixman-general.c | 21 ++++++++++++++++++---
+ pixman/pixman-private.h | 43 +++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 61 insertions(+), 3 deletions(-)
+
+diff --git a/pixman/pixman-general.c b/pixman/pixman-general.c
+index bddf79a..f525744 100644
+--- a/pixman/pixman-general.c
++++ b/pixman/pixman-general.c
+@@ -285,9 +285,24 @@ general_blt (pixman_implementation_t *imp,
+ int width,
+ int height)
+ {
+- /* We can't blit unless we have sse2 or mmx */
+-
+- return FALSE;
++ uint8_t *dst_bytes = (uint8_t *)dst_bits;
++ uint8_t *src_bytes = (uint8_t *)src_bits;
++ int bpp;
++
++ if (src_bpp != dst_bpp || src_bpp & 7)
++ return FALSE;
++
++ bpp = src_bpp >> 3;
++ width *= bpp;
++ src_stride *= 4;
++ dst_stride *= 4;
++ pixman_blt_helper (src_bytes + src_y * src_stride + src_x * bpp,
++ dst_bytes + dst_y * dst_stride + dst_x * bpp,
++ src_stride,
++ dst_stride,
++ width,
++ height);
++ return TRUE;
+ }
+
+ static pixman_bool_t
+diff --git a/pixman/pixman-private.h b/pixman/pixman-private.h
+index d5767af..eeb677d 100644
+--- a/pixman/pixman-private.h
++++ b/pixman/pixman-private.h
+@@ -10,6 +10,7 @@
+
+ #include "pixman.h"
+ #include <time.h>
++#include <string.h>
+ #include <assert.h>
+ #include <stdio.h>
+ #include <string.h>
+@@ -867,4 +868,46 @@ void pixman_timer_register (pixman_timer_t *timer);
+
+ #endif /* PIXMAN_TIMERS */
+
++/* a helper function, can blit 8-bit images with src/dst overlapping support */
++static inline void
++pixman_blt_helper (uint8_t *src_bytes,
++ uint8_t *dst_bytes,
++ int src_stride,
++ int dst_stride,
++ int width,
++ int height)
++{
++ /*
++ * The second part of this check is not strictly needed, but it prevents
++ * unnecessary upside-down processing of areas which belong to different
++ * images. Upside-down processing can be slower with fixed-distance-ahead
++ * prefetch and perceived as having more tearing.
++ */
++ if (src_bytes < dst_bytes + width &&
++ src_bytes + src_stride * height > dst_bytes)
++ {
++ src_bytes += src_stride * height - src_stride;
++ dst_bytes += dst_stride * height - dst_stride;
++ dst_stride = -dst_stride;
++ src_stride = -src_stride;
++ /* Horizontal scrolling to the left needs memmove */
++ if (src_bytes + width > dst_bytes)
++ {
++ while (--height >= 0)
++ {
++ memmove (dst_bytes, src_bytes, width);
++ dst_bytes += dst_stride;
++ src_bytes += src_stride;
++ }
++ return;
++ }
++ }
++ while (--height >= 0)
++ {
++ memcpy (dst_bytes, src_bytes, width);
++ dst_bytes += dst_stride;
++ src_bytes += src_stride;
++ }
++}
++
+ #endif /* PIXMAN_PRIVATE_H */
+--
+1.6.6.1
+
diff --git a/recipes/obsolete/xorg-lib/pixman-0.18.4/0002-Support-of-overlapping-src-dst-for-pixman_blt_mmx.patch b/recipes/obsolete/xorg-lib/pixman-0.18.4/0002-Support-of-overlapping-src-dst-for-pixman_blt_mmx.patch
new file mode 100644
index 0000000000..ca6a3c5220
--- /dev/null
+++ b/recipes/obsolete/xorg-lib/pixman-0.18.4/0002-Support-of-overlapping-src-dst-for-pixman_blt_mmx.patch
@@ -0,0 +1,91 @@
+From 8aca14948a43f5cfd478e22cef745e55960d68cb Mon Sep 17 00:00:00 2001
+From: Siarhei Siamashka <siarhei.siamashka@nokia.com>
+Date: Thu, 22 Oct 2009 05:45:47 +0300
+Subject: [PATCH 2/7] Support of overlapping src/dst for pixman_blt_mmx
+
+---
+ pixman/pixman-mmx.c | 55 +++++++++++++++++++++++++++++---------------------
+ 1 files changed, 32 insertions(+), 23 deletions(-)
+
+diff --git a/pixman/pixman-mmx.c b/pixman/pixman-mmx.c
+index d51b40c..6e0296b 100644
+--- a/pixman/pixman-mmx.c
++++ b/pixman/pixman-mmx.c
+@@ -2996,34 +2996,43 @@ pixman_blt_mmx (uint32_t *src_bits,
+ {
+ uint8_t * src_bytes;
+ uint8_t * dst_bytes;
+- int byte_width;
++ int bpp;
+
+- if (src_bpp != dst_bpp)
++ if (src_bpp != dst_bpp || src_bpp & 7)
+ return FALSE;
+
+- if (src_bpp == 16)
+- {
+- src_stride = src_stride * (int) sizeof (uint32_t) / 2;
+- dst_stride = dst_stride * (int) sizeof (uint32_t) / 2;
+- src_bytes = (uint8_t *)(((uint16_t *)src_bits) + src_stride * (src_y) + (src_x));
+- dst_bytes = (uint8_t *)(((uint16_t *)dst_bits) + dst_stride * (dst_y) + (dst_x));
+- byte_width = 2 * width;
+- src_stride *= 2;
+- dst_stride *= 2;
+- }
+- else if (src_bpp == 32)
++ bpp = src_bpp >> 3;
++ width *= bpp;
++ src_stride *= 4;
++ dst_stride *= 4;
++ src_bytes = (uint8_t *)src_bits + src_y * src_stride + src_x * bpp;
++ dst_bytes = (uint8_t *)dst_bits + dst_y * dst_stride + dst_x * bpp;
++
++ if (src_bpp != 16 && src_bpp != 32)
+ {
+- src_stride = src_stride * (int) sizeof (uint32_t) / 4;
+- dst_stride = dst_stride * (int) sizeof (uint32_t) / 4;
+- src_bytes = (uint8_t *)(((uint32_t *)src_bits) + src_stride * (src_y) + (src_x));
+- dst_bytes = (uint8_t *)(((uint32_t *)dst_bits) + dst_stride * (dst_y) + (dst_x));
+- byte_width = 4 * width;
+- src_stride *= 4;
+- dst_stride *= 4;
++ pixman_blt_helper (src_bytes, dst_bytes, src_stride, dst_stride,
++ width, height);
++ return TRUE;
+ }
+- else
++
++ if (src_bytes < dst_bytes && src_bytes + src_stride * height > dst_bytes)
+ {
+- return FALSE;
++ src_bytes += src_stride * height - src_stride;
++ dst_bytes += dst_stride * height - dst_stride;
++ dst_stride = -dst_stride;
++ src_stride = -src_stride;
++
++ if (src_bytes + width > dst_bytes)
++ {
++ /* TODO: reverse scanline copy using MMX */
++ while (--height >= 0)
++ {
++ memmove (dst_bytes, src_bytes, width);
++ dst_bytes += dst_stride;
++ src_bytes += src_stride;
++ }
++ return TRUE;
++ }
+ }
+
+ while (height--)
+@@ -3033,7 +3042,7 @@ pixman_blt_mmx (uint32_t *src_bits,
+ uint8_t *d = dst_bytes;
+ src_bytes += src_stride;
+ dst_bytes += dst_stride;
+- w = byte_width;
++ w = width;
+
+ while (w >= 2 && ((unsigned long)d & 3))
+ {
+--
+1.6.6.1
+
diff --git a/recipes/obsolete/xorg-lib/pixman-0.18.4/0003-Support-of-overlapping-src-dst-for-pixman_blt_sse2.patch b/recipes/obsolete/xorg-lib/pixman-0.18.4/0003-Support-of-overlapping-src-dst-for-pixman_blt_sse2.patch
new file mode 100644
index 0000000000..faeb6e67ab
--- /dev/null
+++ b/recipes/obsolete/xorg-lib/pixman-0.18.4/0003-Support-of-overlapping-src-dst-for-pixman_blt_sse2.patch
@@ -0,0 +1,91 @@
+From 56c446d6912936eabcc6bdd583f37ee1209eff8c Mon Sep 17 00:00:00 2001
+From: Siarhei Siamashka <siarhei.siamashka@nokia.com>
+Date: Thu, 22 Oct 2009 05:45:54 +0300
+Subject: [PATCH 3/7] Support of overlapping src/dst for pixman_blt_sse2
+
+---
+ pixman/pixman-sse2.c | 55 +++++++++++++++++++++++++++++--------------------
+ 1 files changed, 32 insertions(+), 23 deletions(-)
+
+diff --git a/pixman/pixman-sse2.c b/pixman/pixman-sse2.c
+index d5349d7..aa34012 100644
+--- a/pixman/pixman-sse2.c
++++ b/pixman/pixman-sse2.c
+@@ -5328,34 +5328,43 @@ pixman_blt_sse2 (uint32_t *src_bits,
+ {
+ uint8_t * src_bytes;
+ uint8_t * dst_bytes;
+- int byte_width;
++ int bpp;
+
+- if (src_bpp != dst_bpp)
++ if (src_bpp != dst_bpp || src_bpp & 7)
+ return FALSE;
+
+- if (src_bpp == 16)
+- {
+- src_stride = src_stride * (int) sizeof (uint32_t) / 2;
+- dst_stride = dst_stride * (int) sizeof (uint32_t) / 2;
+- src_bytes =(uint8_t *)(((uint16_t *)src_bits) + src_stride * (src_y) + (src_x));
+- dst_bytes = (uint8_t *)(((uint16_t *)dst_bits) + dst_stride * (dst_y) + (dst_x));
+- byte_width = 2 * width;
+- src_stride *= 2;
+- dst_stride *= 2;
+- }
+- else if (src_bpp == 32)
++ bpp = src_bpp >> 3;
++ width *= bpp;
++ src_stride *= 4;
++ dst_stride *= 4;
++ src_bytes = (uint8_t *)src_bits + src_y * src_stride + src_x * bpp;
++ dst_bytes = (uint8_t *)dst_bits + dst_y * dst_stride + dst_x * bpp;
++
++ if (src_bpp != 16 && src_bpp != 32)
+ {
+- src_stride = src_stride * (int) sizeof (uint32_t) / 4;
+- dst_stride = dst_stride * (int) sizeof (uint32_t) / 4;
+- src_bytes = (uint8_t *)(((uint32_t *)src_bits) + src_stride * (src_y) + (src_x));
+- dst_bytes = (uint8_t *)(((uint32_t *)dst_bits) + dst_stride * (dst_y) + (dst_x));
+- byte_width = 4 * width;
+- src_stride *= 4;
+- dst_stride *= 4;
++ pixman_blt_helper (src_bytes, dst_bytes, src_stride, dst_stride,
++ width, height);
++ return TRUE;
+ }
+- else
++
++ if (src_bytes < dst_bytes && src_bytes + src_stride * height > dst_bytes)
+ {
+- return FALSE;
++ src_bytes += src_stride * height - src_stride;
++ dst_bytes += dst_stride * height - dst_stride;
++ dst_stride = -dst_stride;
++ src_stride = -src_stride;
++
++ if (src_bytes + width > dst_bytes)
++ {
++ /* TODO: reverse scanline copy using SSE2 */
++ while (--height >= 0)
++ {
++ memmove (dst_bytes, src_bytes, width);
++ dst_bytes += dst_stride;
++ src_bytes += src_stride;
++ }
++ return TRUE;
++ }
+ }
+
+ cache_prefetch ((__m128i*)src_bytes);
+@@ -5368,7 +5377,7 @@ pixman_blt_sse2 (uint32_t *src_bits,
+ uint8_t *d = dst_bytes;
+ src_bytes += src_stride;
+ dst_bytes += dst_stride;
+- w = byte_width;
++ w = width;
+
+ cache_prefetch_next ((__m128i*)s);
+ cache_prefetch_next ((__m128i*)d);
+--
+1.6.6.1
+
diff --git a/recipes/obsolete/xorg-lib/pixman-0.18.4/0004-Support-of-overlapping-src-dst-for-pixman_blt_neon.patch b/recipes/obsolete/xorg-lib/pixman-0.18.4/0004-Support-of-overlapping-src-dst-for-pixman_blt_neon.patch
new file mode 100644
index 0000000000..d56fd99c6f
--- /dev/null
+++ b/recipes/obsolete/xorg-lib/pixman-0.18.4/0004-Support-of-overlapping-src-dst-for-pixman_blt_neon.patch
@@ -0,0 +1,94 @@
+From 80c1eae677a6ea10d67bb7328230626cd8fce08e Mon Sep 17 00:00:00 2001
+From: Siarhei Siamashka <siarhei.siamashka@nokia.com>
+Date: Wed, 18 Nov 2009 06:08:48 +0200
+Subject: [PATCH 4/7] Support of overlapping src/dst for pixman_blt_neon
+
+---
+ pixman/pixman-arm-neon.c | 62 +++++++++++++++++++++++++++++++++++++--------
+ 1 files changed, 51 insertions(+), 11 deletions(-)
+
+diff --git a/pixman/pixman-arm-neon.c b/pixman/pixman-arm-neon.c
+index 6808b36..7feee1d 100644
+--- a/pixman/pixman-arm-neon.c
++++ b/pixman/pixman-arm-neon.c
+@@ -168,26 +168,66 @@ pixman_blt_neon (uint32_t *src_bits,
+ int width,
+ int height)
+ {
+- if (src_bpp != dst_bpp)
++ uint8_t * src_bytes;
++ uint8_t * dst_bytes;
++ int bpp;
++
++ if (src_bpp != dst_bpp || src_bpp & 7)
+ return FALSE;
+
++ bpp = src_bpp >> 3;
++ width *= bpp;
++ src_stride *= 4;
++ dst_stride *= 4;
++ src_bytes = (uint8_t *)src_bits + src_y * src_stride + src_x * bpp;
++ dst_bytes = (uint8_t *)dst_bits + dst_y * dst_stride + dst_x * bpp;
++
++ if (src_bpp != 16 && src_bpp != 32)
++ {
++ pixman_blt_helper (src_bytes, dst_bytes, src_stride, dst_stride,
++ width, height);
++ return TRUE;
++ }
++
++ if (src_bytes < dst_bytes && src_bytes + src_stride * height > dst_bytes)
++ {
++ src_bytes += src_stride * height - src_stride;
++ dst_bytes += dst_stride * height - dst_stride;
++ dst_stride = -dst_stride;
++ src_stride = -src_stride;
++
++ if (src_bytes + width > dst_bytes)
++ {
++ /* TODO: reverse scanline copy using NEON */
++ while (--height >= 0)
++ {
++ memmove (dst_bytes, src_bytes, width);
++ dst_bytes += dst_stride;
++ src_bytes += src_stride;
++ }
++ return TRUE;
++ }
++ }
++
+ switch (src_bpp)
+ {
+ case 16:
+ pixman_composite_src_0565_0565_asm_neon (
+- width, height,
+- (uint16_t *)(((char *) dst_bits) +
+- dst_y * dst_stride * 4 + dst_x * 2), dst_stride * 2,
+- (uint16_t *)(((char *) src_bits) +
+- src_y * src_stride * 4 + src_x * 2), src_stride * 2);
++ width >> 1,
++ height,
++ (uint16_t *) dst_bytes,
++ dst_stride >> 1,
++ (uint16_t *) src_bytes,
++ src_stride >> 1);
+ return TRUE;
+ case 32:
+ pixman_composite_src_8888_8888_asm_neon (
+- width, height,
+- (uint32_t *)(((char *) dst_bits) +
+- dst_y * dst_stride * 4 + dst_x * 4), dst_stride,
+- (uint32_t *)(((char *) src_bits) +
+- src_y * src_stride * 4 + src_x * 4), src_stride);
++ width >> 2,
++ height,
++ (uint32_t *) dst_bytes,
++ dst_stride >> 2,
++ (uint32_t *) src_bytes,
++ src_stride >> 2);
+ return TRUE;
+ default:
+ return FALSE;
+--
+1.6.6.1
+
diff --git a/recipes/obsolete/xorg-lib/pixman-0.18.4/0005-ARM-added-NEON-optimizations-for-fetch-store-r5g6b5-.patch b/recipes/obsolete/xorg-lib/pixman-0.18.4/0005-ARM-added-NEON-optimizations-for-fetch-store-r5g6b5-.patch
new file mode 100644
index 0000000000..39eda8b546
--- /dev/null
+++ b/recipes/obsolete/xorg-lib/pixman-0.18.4/0005-ARM-added-NEON-optimizations-for-fetch-store-r5g6b5-.patch
@@ -0,0 +1,169 @@
+From 2f5774db49521e990c5e9f7cac684a06f4e67a43 Mon Sep 17 00:00:00 2001
+From: Siarhei Siamashka <siarhei.siamashka@nokia.com>
+Date: Thu, 10 Dec 2009 00:51:50 +0200
+Subject: [PATCH 5/7] ARM: added NEON optimizations for fetch/store r5g6b5 scanline
+
+---
+ pixman/pixman-access.c | 23 ++++++++++++++++++++++-
+ pixman/pixman-arm-neon-asm.S | 20 ++++++++++++++++++++
+ pixman/pixman-arm-neon.c | 41 +++++++++++++++++++++++++++++++++++++++++
+ pixman/pixman-private.h | 5 +++++
+ 4 files changed, 88 insertions(+), 1 deletions(-)
+
+diff --git a/pixman/pixman-access.c b/pixman/pixman-access.c
+index fa0a267..5bb3e09 100644
+--- a/pixman/pixman-access.c
++++ b/pixman/pixman-access.c
+@@ -2748,7 +2748,7 @@ typedef struct
+ store_scanline_ ## format, store_scanline_generic_64 \
+ }
+
+-static const format_info_t accessors[] =
++static format_info_t accessors[] =
+ {
+ /* 32 bpp formats */
+ FORMAT_INFO (a8r8g8b8),
+@@ -2891,6 +2891,27 @@ _pixman_bits_image_setup_raw_accessors (bits_image_t *image)
+ setup_accessors (image);
+ }
+
++void
++_pixman_bits_override_accessors (pixman_format_code_t format,
++ fetch_scanline_t fetch_func,
++ store_scanline_t store_func)
++{
++ format_info_t *info = accessors;
++
++ while (info->format != PIXMAN_null)
++ {
++ if (info->format == format)
++ {
++ if (fetch_func)
++ info->fetch_scanline_raw_32 = fetch_func;
++ if (store_func)
++ info->store_scanline_raw_32 = store_func;
++ return;
++ }
++ info++;
++ }
++}
++
+ #else
+
+ void
+diff --git a/pixman/pixman-arm-neon-asm.S b/pixman/pixman-arm-neon-asm.S
+index 51bc347..f30869e 100644
+--- a/pixman/pixman-arm-neon-asm.S
++++ b/pixman/pixman-arm-neon-asm.S
+@@ -458,6 +458,16 @@ generate_composite_function \
+ pixman_composite_src_8888_0565_process_pixblock_tail, \
+ pixman_composite_src_8888_0565_process_pixblock_tail_head
+
++generate_composite_function_single_scanline \
++ pixman_store_scanline_r5g6b5_asm_neon, 32, 0, 16, \
++ FLAG_DST_WRITEONLY | FLAG_DEINTERLEAVE_32BPP, \
++ 8, /* number of pixels, processed in a single block */ \
++ default_init, \
++ default_cleanup, \
++ pixman_composite_src_8888_0565_process_pixblock_head, \
++ pixman_composite_src_8888_0565_process_pixblock_tail, \
++ pixman_composite_src_8888_0565_process_pixblock_tail_head
++
+ /******************************************************************************/
+
+ .macro pixman_composite_src_0565_8888_process_pixblock_head
+@@ -493,6 +503,16 @@ generate_composite_function \
+ pixman_composite_src_0565_8888_process_pixblock_tail, \
+ pixman_composite_src_0565_8888_process_pixblock_tail_head
+
++generate_composite_function_single_scanline \
++ pixman_fetch_scanline_r5g6b5_asm_neon, 16, 0, 32, \
++ FLAG_DST_WRITEONLY | FLAG_DEINTERLEAVE_32BPP, \
++ 8, /* number of pixels, processed in a single block */ \
++ default_init, \
++ default_cleanup, \
++ pixman_composite_src_0565_8888_process_pixblock_head, \
++ pixman_composite_src_0565_8888_process_pixblock_tail, \
++ pixman_composite_src_0565_8888_process_pixblock_tail_head
++
+ /******************************************************************************/
+
+ .macro pixman_composite_add_8000_8000_process_pixblock_head
+diff --git a/pixman/pixman-arm-neon.c b/pixman/pixman-arm-neon.c
+index 7feee1d..fda7a09 100644
+--- a/pixman/pixman-arm-neon.c
++++ b/pixman/pixman-arm-neon.c
+@@ -375,6 +375,43 @@ neon_combine_##name##_u (pixman_implementation_t *imp, \
+ BIND_COMBINE_U (over)
+ BIND_COMBINE_U (add)
+
++void
++pixman_fetch_scanline_r5g6b5_asm_neon (int width,
++ uint32_t *buffer,
++ const uint16_t *pixel);
++void
++pixman_store_scanline_r5g6b5_asm_neon (int width,
++ uint16_t *pixel,
++ const uint32_t *values);
++
++static void
++neon_fetch_scanline_r5g6b5 (pixman_image_t *image,
++ int x,
++ int y,
++ int width,
++ uint32_t * buffer,
++ const uint32_t *mask,
++ uint32_t mask_bits)
++{
++ const uint32_t *bits = image->bits.bits + y * image->bits.rowstride;
++ const uint16_t *pixel = (const uint16_t *)bits + x;
++
++ pixman_fetch_scanline_r5g6b5_asm_neon (width, buffer, pixel);
++}
++
++static void
++neon_store_scanline_r5g6b5 (bits_image_t * image,
++ int x,
++ int y,
++ int width,
++ const uint32_t *values)
++{
++ uint32_t *bits = image->bits + image->rowstride * y;
++ uint16_t *pixel = ((uint16_t *) bits) + x;
++
++ pixman_store_scanline_r5g6b5_asm_neon (width, pixel, values);
++}
++
+ pixman_implementation_t *
+ _pixman_implementation_create_arm_neon (void)
+ {
+@@ -385,6 +422,10 @@ _pixman_implementation_create_arm_neon (void)
+ imp->combine_32[PIXMAN_OP_OVER] = neon_combine_over_u;
+ imp->combine_32[PIXMAN_OP_ADD] = neon_combine_add_u;
+
++ _pixman_bits_override_accessors (PIXMAN_r5g6b5,
++ neon_fetch_scanline_r5g6b5,
++ neon_store_scanline_r5g6b5);
++
+ imp->blt = arm_neon_blt;
+ imp->fill = arm_neon_fill;
+
+diff --git a/pixman/pixman-private.h b/pixman/pixman-private.h
+index eeb677d..ba2d401 100644
+--- a/pixman/pixman-private.h
++++ b/pixman/pixman-private.h
+@@ -220,6 +220,11 @@ void
+ _pixman_bits_image_setup_raw_accessors (bits_image_t *image);
+
+ void
++_pixman_bits_override_accessors (pixman_format_code_t format,
++ fetch_scanline_t fetch_func,
++ store_scanline_t store_func);
++
++void
+ _pixman_image_get_scanline_generic_64 (pixman_image_t *image,
+ int x,
+ int y,
+--
+1.6.6.1
+
diff --git a/recipes/obsolete/xorg-lib/pixman-0.18.4/0006-A-copy-paste-version-of-16bpp-bilinear-scanline-fetc.patch b/recipes/obsolete/xorg-lib/pixman-0.18.4/0006-A-copy-paste-version-of-16bpp-bilinear-scanline-fetc.patch
new file mode 100644
index 0000000000..dd0e0f6d4e
--- /dev/null
+++ b/recipes/obsolete/xorg-lib/pixman-0.18.4/0006-A-copy-paste-version-of-16bpp-bilinear-scanline-fetc.patch
@@ -0,0 +1,261 @@
+From fc24a2d8d0039cd10de4175da40bb784e2c3bf49 Mon Sep 17 00:00:00 2001
+From: Siarhei Siamashka <siarhei.siamashka@nokia.com>
+Date: Fri, 4 Dec 2009 16:49:19 +0000
+Subject: [PATCH 6/7] A copy-paste version of 16bpp bilinear scanline fetcher
+
+---
+ pixman/pixman-bits-image.c | 228 +++++++++++++++++++++++++++++++++++++++++++-
+ 1 files changed, 223 insertions(+), 5 deletions(-)
+
+diff --git a/pixman/pixman-bits-image.c b/pixman/pixman-bits-image.c
+index 3d78ff0..1656975 100644
+--- a/pixman/pixman-bits-image.c
++++ b/pixman/pixman-bits-image.c
+@@ -535,6 +535,212 @@ bits_image_fetch_bilinear_no_repeat_8888 (pixman_image_t * ima,
+ *buffer++ = 0;
+ }
+
++static void
++bits_image_fetch_bilinear_no_repeat_0565 (pixman_image_t * ima,
++ int offset,
++ int line,
++ int width,
++ uint32_t * buffer,
++ const uint32_t * mask,
++ uint32_t mask_bits)
++{
++ bits_image_t *bits = &ima->bits;
++ pixman_fixed_t x_top, x_bottom, x;
++ pixman_fixed_t ux_top, ux_bottom, ux;
++ pixman_vector_t v;
++ uint32_t top_mask, bottom_mask;
++ uint16_t *top_row;
++ uint16_t *bottom_row;
++ uint32_t *end;
++ uint16_t zero[2] = { 0, 0 };
++ int y, y1, y2;
++ int disty;
++ int mask_inc;
++ int w;
++
++ /* reference point is the center of the pixel */
++ v.vector[0] = pixman_int_to_fixed (offset) + pixman_fixed_1 / 2;
++ v.vector[1] = pixman_int_to_fixed (line) + pixman_fixed_1 / 2;
++ v.vector[2] = pixman_fixed_1;
++
++ if (!pixman_transform_point_3d (bits->common.transform, &v))
++ return;
++
++ ux = ux_top = ux_bottom = bits->common.transform->matrix[0][0];
++ x = x_top = x_bottom = v.vector[0] - pixman_fixed_1/2;
++
++ y = v.vector[1] - pixman_fixed_1/2;
++ disty = (y >> 8) & 0xff;
++
++ /* Load the pointers to the first and second lines from the source
++ * image that bilinear code must read.
++ *
++ * The main trick in this code is about the check if any line are
++ * outside of the image;
++ *
++ * When I realize that a line (any one) is outside, I change
++ * the pointer to a dummy area with zeros. Once I change this, I
++ * must be sure the pointer will not change, so I set the
++ * variables to each pointer increments inside the loop.
++ */
++ y1 = pixman_fixed_to_int (y);
++ y2 = y1 + 1;
++
++ if (y1 < 0 || y1 >= bits->height)
++ {
++ top_row = zero;
++ x_top = 0;
++ ux_top = 0;
++ }
++ else
++ {
++ top_row = bits->bits + y1 * bits->rowstride;
++ x_top = x;
++ ux_top = ux;
++ }
++
++ if (y2 < 0 || y2 >= bits->height)
++ {
++ bottom_row = zero;
++ x_bottom = 0;
++ ux_bottom = 0;
++ }
++ else
++ {
++ bottom_row = bits->bits + y2 * bits->rowstride;
++ x_bottom = x;
++ ux_bottom = ux;
++ }
++
++ /* Instead of checking whether the operation uses the mast in
++ * each loop iteration, verify this only once and prepare the
++ * variables to make the code smaller inside the loop.
++ */
++ if (!mask)
++ {
++ mask_inc = 0;
++ mask_bits = 1;
++ mask = &mask_bits;
++ }
++ else
++ {
++ /* If have a mask, prepare the variables to check it */
++ mask_inc = 1;
++ }
++
++ /* If both are zero, then the whole thing is zero */
++ if (top_row == zero && bottom_row == zero)
++ {
++ memset (buffer, 0, width * sizeof (uint32_t));
++ return;
++ }
++ else
++ {
++ if (top_row == zero)
++ {
++ top_mask = 0;
++ bottom_mask = 0xff000000;
++ }
++ else if (bottom_row == zero)
++ {
++ top_mask = 0xff000000;
++ bottom_mask = 0;
++ }
++ else
++ {
++ top_mask = 0xff000000;
++ bottom_mask = 0xff000000;
++ }
++ }
++
++ end = buffer + width;
++
++ /* Zero fill to the left of the image */
++ while (buffer < end && x < pixman_fixed_minus_1)
++ {
++ *buffer++ = 0;
++ x += ux;
++ x_top += ux_top;
++ x_bottom += ux_bottom;
++ mask += mask_inc;
++ }
++
++ /* Left edge
++ */
++ while (buffer < end && x < 0)
++ {
++ uint32_t tr, br;
++ int32_t distx;
++
++ tr = CONVERT_0565_TO_0888 (top_row[pixman_fixed_to_int (x_top) + 1]) | top_mask;
++ br = CONVERT_0565_TO_0888 (bottom_row[pixman_fixed_to_int (x_bottom) + 1]) | bottom_mask;
++
++ distx = (x >> 8) & 0xff;
++
++ *buffer++ = bilinear_interpolation (0, tr, 0, br, distx, disty);
++
++ x += ux;
++ x_top += ux_top;
++ x_bottom += ux_bottom;
++ mask += mask_inc;
++ }
++
++ /* Main part */
++ w = pixman_int_to_fixed (bits->width - 1);
++
++ while (buffer < end && x < w)
++ {
++ if (*mask)
++ {
++ uint32_t tl, tr, bl, br;
++ int32_t distx;
++
++ tl = CONVERT_0565_TO_0888 (top_row [pixman_fixed_to_int (x_top)]) | top_mask;
++ tr = CONVERT_0565_TO_0888 (top_row [pixman_fixed_to_int (x_top) + 1]) | top_mask;
++ bl = CONVERT_0565_TO_0888 (bottom_row [pixman_fixed_to_int (x_bottom)]) | bottom_mask;
++ br = CONVERT_0565_TO_0888 (bottom_row [pixman_fixed_to_int (x_bottom) + 1]) | bottom_mask;
++
++ distx = (x >> 8) & 0xff;
++
++ *buffer = bilinear_interpolation (tl, tr, bl, br, distx, disty);
++ }
++
++ buffer++;
++ x += ux;
++ x_top += ux_top;
++ x_bottom += ux_bottom;
++ mask += mask_inc;
++ }
++
++ /* Right Edge */
++ w = pixman_int_to_fixed (bits->width);
++ while (buffer < end && x < w)
++ {
++ if (*mask)
++ {
++ uint32_t tl, bl;
++ int32_t distx;
++
++ tl = CONVERT_0565_TO_0888 (top_row [pixman_fixed_to_int (x_top)]) | top_mask;
++ bl = CONVERT_0565_TO_0888 (bottom_row [pixman_fixed_to_int (x_bottom)]) | bottom_mask;
++
++ distx = (x >> 8) & 0xff;
++
++ *buffer = bilinear_interpolation (tl, 0, bl, 0, distx, disty);
++ }
++
++ buffer++;
++ x += ux;
++ x_top += ux_top;
++ x_bottom += ux_bottom;
++ mask += mask_inc;
++ }
++
++ /* Zero fill to the left of the image */
++ while (buffer < end)
++ *buffer++ = 0;
++}
++
+ static force_inline uint32_t
+ bits_image_fetch_pixel_convolution (bits_image_t *image,
+ pixman_fixed_t x,
+@@ -917,14 +1123,26 @@ bits_image_property_changed (pixman_image_t *image)
+ (bits->common.filter == PIXMAN_FILTER_BILINEAR ||
+ bits->common.filter == PIXMAN_FILTER_GOOD ||
+ bits->common.filter == PIXMAN_FILTER_BEST) &&
+- bits->common.repeat == PIXMAN_REPEAT_NONE &&
+- (bits->format == PIXMAN_a8r8g8b8 ||
+- bits->format == PIXMAN_x8r8g8b8))
++ bits->common.repeat == PIXMAN_REPEAT_NONE)
+ {
+ image->common.get_scanline_64 =
+ _pixman_image_get_scanline_generic_64;
+- image->common.get_scanline_32 =
+- bits_image_fetch_bilinear_no_repeat_8888;
++
++ if (bits->format == PIXMAN_a8r8g8b8 || bits->format == PIXMAN_x8r8g8b8)
++ {
++ image->common.get_scanline_32 =
++ bits_image_fetch_bilinear_no_repeat_8888;
++ }
++ else if (bits->format == PIXMAN_r5g6b5)
++ {
++ image->common.get_scanline_32 =
++ bits_image_fetch_bilinear_no_repeat_0565;
++ }
++ else
++ {
++ image->common.get_scanline_32 =
++ bits_image_fetch_transformed;
++ }
+ }
+ else
+ {
+--
+1.6.6.1
+
diff --git a/recipes/obsolete/xorg-lib/pixman-0.18.4/0007-ARM-added-missing-cache-preload.patch b/recipes/obsolete/xorg-lib/pixman-0.18.4/0007-ARM-added-missing-cache-preload.patch
new file mode 100644
index 0000000000..f601d2ce26
--- /dev/null
+++ b/recipes/obsolete/xorg-lib/pixman-0.18.4/0007-ARM-added-missing-cache-preload.patch
@@ -0,0 +1,32 @@
+From af8a33d3b132c0192d59c47426bb3a201cb64b32 Mon Sep 17 00:00:00 2001
+From: Siarhei Siamashka <siarhei.siamashka@nokia.com>
+Date: Fri, 21 May 2010 13:31:03 +0000
+Subject: [PATCH 7/7] ARM: added missing cache preload
+
+---
+ pixman/pixman-arm-neon-asm.S | 2 ++
+ 1 files changed, 2 insertions(+), 0 deletions(-)
+
+diff --git a/pixman/pixman-arm-neon-asm.S b/pixman/pixman-arm-neon-asm.S
+index f30869e..dc7fd69 100644
+--- a/pixman/pixman-arm-neon-asm.S
++++ b/pixman/pixman-arm-neon-asm.S
+@@ -388,6 +388,7 @@ generate_composite_function \
+ vld1.16 {d4, d5}, [DST_R, :128]!
+ vst1.16 {d28, d29}, [DST_W, :128]!
+ pixman_composite_over_n_0565_process_pixblock_head
++ cache_preload 8, 8
+ .endm
+
+ .macro pixman_composite_over_n_0565_init
+@@ -680,6 +681,7 @@ generate_composite_function_single_scanline \
+ vld4.8 {d4, d5, d6, d7}, [DST_R, :128]!
+ vst4.8 {d28, d29, d30, d31}, [DST_W, :128]!
+ pixman_composite_over_8888_8888_process_pixblock_head
++ cache_preload 8, 8
+ .endm
+
+ .macro pixman_composite_over_n_8888_init
+--
+1.6.6.1
+
diff --git a/recipes/obsolete/xorg-lib/pixman-0.18.4/565-over-neon.patch b/recipes/obsolete/xorg-lib/pixman-0.18.4/565-over-neon.patch
new file mode 100644
index 0000000000..c8156c4d78
--- /dev/null
+++ b/recipes/obsolete/xorg-lib/pixman-0.18.4/565-over-neon.patch
@@ -0,0 +1,23 @@
+From d297443267de0f5fab49ec245df9055a0dddddaf Mon Sep 17 00:00:00 2001
+From: Siarhei Siamashka <siarhei.siamashka@nokia.com>
+Date: Tue, 25 May 2010 17:21:26 +0000
+Subject: ARM: NEON: don't hit general path for r5g6b5 OVER r5g6b5 operation
+
+OVER can't be reduced to SRC because the source image is not
+considered opaque when repeat is set to PIXMAN_REPEAT_NONE.
+An additional fast path table entry solves the problem.
+---
+diff --git a/pixman/pixman-arm-neon.c b/pixman/pixman-arm-neon.c
+index 64aa908..394dcea 100644
+--- a/pixman/pixman-arm-neon.c
++++ b/pixman/pixman-arm-neon.c
+@@ -246,6 +246,7 @@ static const pixman_fast_path_t arm_neon_fast_paths[] =
+ 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 (OVER, x8b8g8r8, null, a8b8g8r8, neon_composite_src_x888_8888),
++ PIXMAN_STD_FAST_PATH (OVER, r5g6b5, null, r5g6b5, neon_composite_src_0565_0565),
+ 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
diff --git a/recipes/obsolete/xorg-lib/pixman-0.18.4/neon-reverse-u.patch b/recipes/obsolete/xorg-lib/pixman-0.18.4/neon-reverse-u.patch
new file mode 100644
index 0000000000..76726ce1ae
--- /dev/null
+++ b/recipes/obsolete/xorg-lib/pixman-0.18.4/neon-reverse-u.patch
@@ -0,0 +1,175 @@
+From e0017c2a676b267900e48c6f32a6e973395c83d3 Mon Sep 17 00:00:00 2001
+From: Siarhei Siamashka <siarhei.siamashka@nokia.com>
+Date: Mon, 31 May 2010 16:24:43 +0000
+Subject: ARM: 'neon_combine_out_reverse_u' combiner
+
+---
+diff --git a/pixman/pixman-arm-neon-asm.S b/pixman/pixman-arm-neon-asm.S
+index f30869e..44fbfce 100644
+--- a/pixman/pixman-arm-neon-asm.S
++++ b/pixman/pixman-arm-neon-asm.S
+@@ -597,7 +597,7 @@ generate_composite_function_single_scanline \
+
+ /******************************************************************************/
+
+-.macro pixman_composite_over_8888_8888_process_pixblock_head
++.macro pixman_composite_out_reverse_8888_8888_process_pixblock_head
+ vmvn.8 d24, d3 /* get inverted alpha */
+ /* do alpha blending */
+ vmull.u8 q8, d24, d4
+@@ -606,7 +606,7 @@ generate_composite_function_single_scanline \
+ vmull.u8 q11, d24, d7
+ .endm
+
+-.macro pixman_composite_over_8888_8888_process_pixblock_tail
++.macro pixman_composite_out_reverse_8888_8888_process_pixblock_tail
+ vrshr.u16 q14, q8, #8
+ vrshr.u16 q15, q9, #8
+ vrshr.u16 q12, q10, #8
+@@ -615,6 +615,56 @@ generate_composite_function_single_scanline \
+ vraddhn.u16 d29, q15, q9
+ vraddhn.u16 d30, q12, q10
+ vraddhn.u16 d31, q13, q11
++.endm
++
++.macro pixman_composite_out_reverse_8888_8888_process_pixblock_tail_head
++ vld4.8 {d4, d5, d6, d7}, [DST_R, :128]!
++ vrshr.u16 q14, q8, #8
++ PF add PF_X, PF_X, #8
++ PF tst PF_CTL, #0xF
++ vrshr.u16 q15, q9, #8
++ vrshr.u16 q12, q10, #8
++ vrshr.u16 q13, q11, #8
++ PF addne PF_X, PF_X, #8
++ PF subne PF_CTL, PF_CTL, #1
++ vraddhn.u16 d28, q14, q8
++ vraddhn.u16 d29, q15, q9
++ PF cmp PF_X, ORIG_W
++ vraddhn.u16 d30, q12, q10
++ vraddhn.u16 d31, q13, q11
++ vld4.8 {d0, d1, d2, d3}, [SRC]!
++ PF pld, [PF_SRC, PF_X, lsl #src_bpp_shift]
++ vmvn.8 d22, d3
++ PF pld, [PF_DST, PF_X, lsl #dst_bpp_shift]
++ vst4.8 {d28, d29, d30, d31}, [DST_W, :128]!
++ PF subge PF_X, PF_X, ORIG_W
++ vmull.u8 q8, d22, d4
++ PF subges PF_CTL, PF_CTL, #0x10
++ vmull.u8 q9, d22, d5
++ PF ldrgeb DUMMY, [PF_SRC, SRC_STRIDE, lsl #src_bpp_shift]!
++ vmull.u8 q10, d22, d6
++ PF ldrgeb DUMMY, [PF_DST, DST_STRIDE, lsl #dst_bpp_shift]!
++ vmull.u8 q11, d22, d7
++.endm
++
++generate_composite_function_single_scanline \
++ pixman_composite_scanline_out_reverse_asm_neon, 32, 0, 32, \
++ FLAG_DST_READWRITE | FLAG_DEINTERLEAVE_32BPP, \
++ 8, /* number of pixels, processed in a single block */ \
++ default_init, \
++ default_cleanup, \
++ pixman_composite_out_reverse_8888_8888_process_pixblock_head, \
++ pixman_composite_out_reverse_8888_8888_process_pixblock_tail, \
++ pixman_composite_out_reverse_8888_8888_process_pixblock_tail_head
++
++/******************************************************************************/
++
++.macro pixman_composite_over_8888_8888_process_pixblock_head
++ pixman_composite_out_reverse_8888_8888_process_pixblock_head
++.endm
++
++.macro pixman_composite_over_8888_8888_process_pixblock_tail
++ pixman_composite_out_reverse_8888_8888_process_pixblock_tail
+ vqadd.u8 q14, q0, q14
+ vqadd.u8 q15, q1, q15
+ .endm
+@@ -1416,7 +1466,7 @@ generate_composite_function_single_scanline \
+
+ /******************************************************************************/
+
+-.macro pixman_composite_over_8888_n_8888_process_pixblock_head
++.macro pixman_composite_out_reverse_8888_n_8888_process_pixblock_head
+ /* expecting source data in {d0, d1, d2, d3} */
+ /* destination data in {d4, d5, d6, d7} */
+ /* solid mask is in d15 */
+@@ -1442,7 +1492,7 @@ generate_composite_function_single_scanline \
+ vmull.u8 q11, d24, d7
+ .endm
+
+-.macro pixman_composite_over_8888_n_8888_process_pixblock_tail
++.macro pixman_composite_out_reverse_8888_n_8888_process_pixblock_tail
+ vrshr.u16 q14, q8, #8
+ vrshr.u16 q15, q9, #8
+ vrshr.u16 q12, q10, #8
+@@ -1451,6 +1501,49 @@ generate_composite_function_single_scanline \
+ vraddhn.u16 d29, q15, q9
+ vraddhn.u16 d30, q12, q10
+ vraddhn.u16 d31, q13, q11
++.endm
++
++.macro pixman_composite_out_reverse_8888_8888_8888_init
++ vpush {d8-d15}
++.endm
++
++.macro pixman_composite_out_reverse_8888_8888_8888_cleanup
++ vpop {d8-d15}
++.endm
++
++/* TODO: expand macros and do better instructions scheduling */
++.macro pixman_composite_out_reverse_8888_8888_8888_process_pixblock_tail_head
++ vld4.8 {d4, d5, d6, d7}, [DST_R, :128]!
++ pixman_composite_out_reverse_8888_n_8888_process_pixblock_tail
++ vld4.8 {d0, d1, d2, d3}, [SRC]!
++ cache_preload 8, 8
++ vld4.8 {d12, d13, d14, d15}, [MASK]!
++ pixman_composite_out_reverse_8888_n_8888_process_pixblock_head
++ vst4.8 {d28, d29, d30, d31}, [DST_W, :128]!
++.endm
++
++generate_composite_function_single_scanline \
++ pixman_composite_scanline_out_reverse_mask_asm_neon, 32, 32, 32, \
++ FLAG_DST_READWRITE | FLAG_DEINTERLEAVE_32BPP, \
++ 8, /* number of pixels, processed in a single block */ \
++ pixman_composite_out_reverse_8888_8888_8888_init, \
++ pixman_composite_out_reverse_8888_8888_8888_cleanup, \
++ pixman_composite_out_reverse_8888_n_8888_process_pixblock_head, \
++ pixman_composite_out_reverse_8888_n_8888_process_pixblock_tail, \
++ pixman_composite_out_reverse_8888_8888_8888_process_pixblock_tail_head \
++ 28, /* dst_w_basereg */ \
++ 4, /* dst_r_basereg */ \
++ 0, /* src_basereg */ \
++ 12 /* mask_basereg */
++
++/******************************************************************************/
++
++.macro pixman_composite_over_8888_n_8888_process_pixblock_head
++ pixman_composite_out_reverse_8888_n_8888_process_pixblock_head
++.endm
++
++.macro pixman_composite_over_8888_n_8888_process_pixblock_tail
++ pixman_composite_out_reverse_8888_n_8888_process_pixblock_tail
+ vqadd.u8 q14, q0, q14
+ vqadd.u8 q15, q1, q15
+ .endm
+diff --git a/pixman/pixman-arm-neon.c b/pixman/pixman-arm-neon.c
+index 394dcea..1be9606 100644
+--- a/pixman/pixman-arm-neon.c
++++ b/pixman/pixman-arm-neon.c
+@@ -335,6 +335,7 @@ neon_combine_##name##_u (pixman_implementation_t *imp, \
+
+ BIND_COMBINE_U (over)
+ BIND_COMBINE_U (add)
++BIND_COMBINE_U (out_reverse)
+
+ void
+ pixman_fetch_scanline_r5g6b5_asm_neon (int width,
+@@ -382,6 +383,7 @@ _pixman_implementation_create_arm_neon (void)
+
+ imp->combine_32[PIXMAN_OP_OVER] = neon_combine_over_u;
+ imp->combine_32[PIXMAN_OP_ADD] = neon_combine_add_u;
++ imp->combine_32[PIXMAN_OP_OUT_REVERSE] = neon_combine_out_reverse_u;
+
+ _pixman_bits_override_accessors (PIXMAN_r5g6b5,
+ neon_fetch_scanline_r5g6b5,
+--
+cgit v0.8.3-6-g21f6
diff --git a/recipes/obsolete/xorg-lib/pixman-0.20.0/0000-Add-pixman_bits_override_accessors.patch b/recipes/obsolete/xorg-lib/pixman-0.20.0/0000-Add-pixman_bits_override_accessors.patch
new file mode 100644
index 0000000000..43cd44268e
--- /dev/null
+++ b/recipes/obsolete/xorg-lib/pixman-0.20.0/0000-Add-pixman_bits_override_accessors.patch
@@ -0,0 +1,77 @@
+From 38aabb3be87ea68e37f34256c778d07f62680ec6 Mon Sep 17 00:00:00 2001
+From: Siarhei Siamashka <siarhei.siamashka@nokia.com>
+Date: Thu, 10 Dec 2009 00:51:50 +0200
+Subject: [PATCH 1/9] add _pixman_bits_override_accessors
+
+* from patch ARM: HACK: added NEON optimizations for fetch/store r5g6b5 scanline
+* used in
+ 0005-ARM-added-NEON-optimizations-for-fetch-store-r5g6b5-.patch
+ 0006-ARM-added-NEON-optimizations-for-fetch-store-a8-scan.patch
+ 0007-ARM-added-NEON-optimizations-for-fetching-x8r8g8b8-s.patch
+
+
+---
+ pixman/pixman-access.c | 23 ++++++++++++++++++++++-
+ pixman/pixman-private.h | 5 +++++
+ 4 files changed, 87 insertions(+), 1 deletions(-)
+
+diff --git a/pixman/pixman-access.c b/pixman/pixman-access.c
+index f1ce0ba..b33da29 100644
+--- a/pixman/pixman-access.c
++++ b/pixman/pixman-access.c
+@@ -2836,7 +2836,7 @@ typedef struct
+ store_scanline_ ## format, store_scanline_generic_64 \
+ }
+
+-static const format_info_t accessors[] =
++static format_info_t accessors[] =
+ {
+ /* 32 bpp formats */
+ FORMAT_INFO (a8r8g8b8),
+@@ -2978,6 +2978,27 @@ _pixman_bits_image_setup_accessors (bits_image_t *image)
+ setup_accessors (image);
+ }
+
++void
++_pixman_bits_override_accessors (pixman_format_code_t format,
++ fetch_scanline_t fetch_func,
++ store_scanline_t store_func)
++{
++ format_info_t *info = accessors;
++
++ while (info->format != PIXMAN_null)
++ {
++ if (info->format == format)
++ {
++ if (fetch_func)
++ info->fetch_scanline_32 = fetch_func;
++ if (store_func)
++ info->store_scanline_32 = store_func;
++ return;
++ }
++ info++;
++ }
++}
++
+ #else
+
+ void
+diff --git a/pixman/pixman-private.h b/pixman/pixman-private.h
+index d85868f..564f8f0 100644
+--- a/pixman/pixman-private.h
++++ b/pixman/pixman-private.h
+@@ -206,6 +206,11 @@ void
+ _pixman_bits_image_setup_accessors (bits_image_t *image);
+
+ void
++_pixman_bits_override_accessors (pixman_format_code_t format,
++ fetch_scanline_t fetch_func,
++ store_scanline_t store_func);
++
++void
+ _pixman_image_get_scanline_generic_64 (pixman_image_t *image,
+ int x,
+ int y,
+--
+1.6.6.1
+
diff --git a/recipes/obsolete/xorg-lib/pixman-0.20.0/0001-Generic-C-implementation-of-pixman_blt-with-overlapp.patch b/recipes/obsolete/xorg-lib/pixman-0.20.0/0001-Generic-C-implementation-of-pixman_blt-with-overlapp.patch
new file mode 100644
index 0000000000..795cce5bad
--- /dev/null
+++ b/recipes/obsolete/xorg-lib/pixman-0.20.0/0001-Generic-C-implementation-of-pixman_blt-with-overlapp.patch
@@ -0,0 +1,114 @@
+From 97b2bb933455f222b392b5c60a8bde82d7d6329f Mon Sep 17 00:00:00 2001
+From: Siarhei Siamashka <siarhei.siamashka@nokia.com>
+Date: Tue, 16 Mar 2010 16:55:28 +0100
+Subject: [PATCH 1/8] Generic C implementation of pixman_blt with overlapping support
+
+Uses memcpy/memmove functions to copy pixels, can handle the
+case when both source and destination areas are in the same
+image (this is useful for scrolling).
+
+It is assumed that copying direction is only important when
+using the same image for both source and destination (and
+src_stride == dst_stride). Copying direction is undefined
+for the images with different source and destination stride
+which happen to be in the overlapped areas (but this is an
+unrealistic case anyway).
+---
+ pixman/pixman-general.c | 21 ++++++++++++++++++---
+ pixman/pixman-private.h | 43 +++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 61 insertions(+), 3 deletions(-)
+
+diff --git a/pixman/pixman-general.c b/pixman/pixman-general.c
+index 4d234a0..c4d2c14 100644
+--- a/pixman/pixman-general.c
++++ b/pixman/pixman-general.c
+@@ -280,9 +280,24 @@ general_blt (pixman_implementation_t *imp,
+ int width,
+ int height)
+ {
+- /* We can't blit unless we have sse2 or mmx */
+-
+- return FALSE;
++ uint8_t *dst_bytes = (uint8_t *)dst_bits;
++ uint8_t *src_bytes = (uint8_t *)src_bits;
++ int bpp;
++
++ if (src_bpp != dst_bpp || src_bpp & 7)
++ return FALSE;
++
++ bpp = src_bpp >> 3;
++ width *= bpp;
++ src_stride *= 4;
++ dst_stride *= 4;
++ pixman_blt_helper (src_bytes + src_y * src_stride + src_x * bpp,
++ dst_bytes + dst_y * dst_stride + dst_x * bpp,
++ src_stride,
++ dst_stride,
++ width,
++ height);
++ return TRUE;
+ }
+
+ static pixman_bool_t
+diff --git a/pixman/pixman-private.h b/pixman/pixman-private.h
+index c43172b..f980454 100644
+--- a/pixman/pixman-private.h
++++ b/pixman/pixman-private.h
+@@ -10,6 +10,7 @@
+
+ #include "pixman.h"
+ #include <time.h>
++#include <string.h>
+ #include <assert.h>
+ #include <stdio.h>
+ #include <string.h>
+@@ -873,4 +874,46 @@ void pixman_timer_register (pixman_timer_t *timer);
+
+ #endif /* PIXMAN_TIMERS */
+
++/* a helper function, can blit 8-bit images with src/dst overlapping support */
++static inline void
++pixman_blt_helper (uint8_t *src_bytes,
++ uint8_t *dst_bytes,
++ int src_stride,
++ int dst_stride,
++ int width,
++ int height)
++{
++ /*
++ * The second part of this check is not strictly needed, but it prevents
++ * unnecessary upside-down processing of areas which belong to different
++ * images. Upside-down processing can be slower with fixed-distance-ahead
++ * prefetch and perceived as having more tearing.
++ */
++ if (src_bytes < dst_bytes + width &&
++ src_bytes + src_stride * height > dst_bytes)
++ {
++ src_bytes += src_stride * height - src_stride;
++ dst_bytes += dst_stride * height - dst_stride;
++ dst_stride = -dst_stride;
++ src_stride = -src_stride;
++ /* Horizontal scrolling to the left needs memmove */
++ if (src_bytes + width > dst_bytes)
++ {
++ while (--height >= 0)
++ {
++ memmove (dst_bytes, src_bytes, width);
++ dst_bytes += dst_stride;
++ src_bytes += src_stride;
++ }
++ return;
++ }
++ }
++ while (--height >= 0)
++ {
++ memcpy (dst_bytes, src_bytes, width);
++ dst_bytes += dst_stride;
++ src_bytes += src_stride;
++ }
++}
++
+ #endif /* PIXMAN_PRIVATE_H */
+--
+1.6.6.1
+
diff --git a/recipes/obsolete/xorg-lib/pixman-0.20.0/0002-Support-of-overlapping-src-dst-for-pixman_blt_mmx.patch b/recipes/obsolete/xorg-lib/pixman-0.20.0/0002-Support-of-overlapping-src-dst-for-pixman_blt_mmx.patch
new file mode 100644
index 0000000000..6e2d492aaf
--- /dev/null
+++ b/recipes/obsolete/xorg-lib/pixman-0.20.0/0002-Support-of-overlapping-src-dst-for-pixman_blt_mmx.patch
@@ -0,0 +1,91 @@
+From 47b31f936641da07431093ede340465625bfcb3d Mon Sep 17 00:00:00 2001
+From: Siarhei Siamashka <siarhei.siamashka@nokia.com>
+Date: Thu, 22 Oct 2009 05:45:47 +0300
+Subject: [PATCH 2/8] Support of overlapping src/dst for pixman_blt_mmx
+
+---
+ pixman/pixman-mmx.c | 55 +++++++++++++++++++++++++++++---------------------
+ 1 files changed, 32 insertions(+), 23 deletions(-)
+
+diff --git a/pixman/pixman-mmx.c b/pixman/pixman-mmx.c
+index e936c4c..2413197 100644
+--- a/pixman/pixman-mmx.c
++++ b/pixman/pixman-mmx.c
+@@ -2996,34 +2996,43 @@ pixman_blt_mmx (uint32_t *src_bits,
+ {
+ uint8_t * src_bytes;
+ uint8_t * dst_bytes;
+- int byte_width;
++ int bpp;
+
+- if (src_bpp != dst_bpp)
++ if (src_bpp != dst_bpp || src_bpp & 7)
+ return FALSE;
+
+- if (src_bpp == 16)
+- {
+- src_stride = src_stride * (int) sizeof (uint32_t) / 2;
+- dst_stride = dst_stride * (int) sizeof (uint32_t) / 2;
+- src_bytes = (uint8_t *)(((uint16_t *)src_bits) + src_stride * (src_y) + (src_x));
+- dst_bytes = (uint8_t *)(((uint16_t *)dst_bits) + dst_stride * (dst_y) + (dst_x));
+- byte_width = 2 * width;
+- src_stride *= 2;
+- dst_stride *= 2;
+- }
+- else if (src_bpp == 32)
++ bpp = src_bpp >> 3;
++ width *= bpp;
++ src_stride *= 4;
++ dst_stride *= 4;
++ src_bytes = (uint8_t *)src_bits + src_y * src_stride + src_x * bpp;
++ dst_bytes = (uint8_t *)dst_bits + dst_y * dst_stride + dst_x * bpp;
++
++ if (src_bpp != 16 && src_bpp != 32)
+ {
+- src_stride = src_stride * (int) sizeof (uint32_t) / 4;
+- dst_stride = dst_stride * (int) sizeof (uint32_t) / 4;
+- src_bytes = (uint8_t *)(((uint32_t *)src_bits) + src_stride * (src_y) + (src_x));
+- dst_bytes = (uint8_t *)(((uint32_t *)dst_bits) + dst_stride * (dst_y) + (dst_x));
+- byte_width = 4 * width;
+- src_stride *= 4;
+- dst_stride *= 4;
++ pixman_blt_helper (src_bytes, dst_bytes, src_stride, dst_stride,
++ width, height);
++ return TRUE;
+ }
+- else
++
++ if (src_bytes < dst_bytes && src_bytes + src_stride * height > dst_bytes)
+ {
+- return FALSE;
++ src_bytes += src_stride * height - src_stride;
++ dst_bytes += dst_stride * height - dst_stride;
++ dst_stride = -dst_stride;
++ src_stride = -src_stride;
++
++ if (src_bytes + width > dst_bytes)
++ {
++ /* TODO: reverse scanline copy using MMX */
++ while (--height >= 0)
++ {
++ memmove (dst_bytes, src_bytes, width);
++ dst_bytes += dst_stride;
++ src_bytes += src_stride;
++ }
++ return TRUE;
++ }
+ }
+
+ while (height--)
+@@ -3033,7 +3042,7 @@ pixman_blt_mmx (uint32_t *src_bits,
+ uint8_t *d = dst_bytes;
+ src_bytes += src_stride;
+ dst_bytes += dst_stride;
+- w = byte_width;
++ w = width;
+
+ while (w >= 2 && ((unsigned long)d & 3))
+ {
+--
+1.6.6.1
+
diff --git a/recipes/obsolete/xorg-lib/pixman-0.20.0/0003-Support-of-overlapping-src-dst-for-pixman_blt_sse2.patch b/recipes/obsolete/xorg-lib/pixman-0.20.0/0003-Support-of-overlapping-src-dst-for-pixman_blt_sse2.patch
new file mode 100644
index 0000000000..910f62e6dd
--- /dev/null
+++ b/recipes/obsolete/xorg-lib/pixman-0.20.0/0003-Support-of-overlapping-src-dst-for-pixman_blt_sse2.patch
@@ -0,0 +1,91 @@
+From 13be027637602fffda3b3cb6e171d8d6a67b3b4b Mon Sep 17 00:00:00 2001
+From: Siarhei Siamashka <siarhei.siamashka@nokia.com>
+Date: Thu, 22 Oct 2009 05:45:54 +0300
+Subject: [PATCH 3/8] Support of overlapping src/dst for pixman_blt_sse2
+
+---
+ pixman/pixman-sse2.c | 55 +++++++++++++++++++++++++++++--------------------
+ 1 files changed, 32 insertions(+), 23 deletions(-)
+
+diff --git a/pixman/pixman-sse2.c b/pixman/pixman-sse2.c
+index 5907de0..25015ae 100644
+--- a/pixman/pixman-sse2.c
++++ b/pixman/pixman-sse2.c
+@@ -5027,34 +5027,43 @@ pixman_blt_sse2 (uint32_t *src_bits,
+ {
+ uint8_t * src_bytes;
+ uint8_t * dst_bytes;
+- int byte_width;
++ int bpp;
+
+- if (src_bpp != dst_bpp)
++ if (src_bpp != dst_bpp || src_bpp & 7)
+ return FALSE;
+
+- if (src_bpp == 16)
+- {
+- src_stride = src_stride * (int) sizeof (uint32_t) / 2;
+- dst_stride = dst_stride * (int) sizeof (uint32_t) / 2;
+- src_bytes =(uint8_t *)(((uint16_t *)src_bits) + src_stride * (src_y) + (src_x));
+- dst_bytes = (uint8_t *)(((uint16_t *)dst_bits) + dst_stride * (dst_y) + (dst_x));
+- byte_width = 2 * width;
+- src_stride *= 2;
+- dst_stride *= 2;
+- }
+- else if (src_bpp == 32)
++ bpp = src_bpp >> 3;
++ width *= bpp;
++ src_stride *= 4;
++ dst_stride *= 4;
++ src_bytes = (uint8_t *)src_bits + src_y * src_stride + src_x * bpp;
++ dst_bytes = (uint8_t *)dst_bits + dst_y * dst_stride + dst_x * bpp;
++
++ if (src_bpp != 16 && src_bpp != 32)
+ {
+- src_stride = src_stride * (int) sizeof (uint32_t) / 4;
+- dst_stride = dst_stride * (int) sizeof (uint32_t) / 4;
+- src_bytes = (uint8_t *)(((uint32_t *)src_bits) + src_stride * (src_y) + (src_x));
+- dst_bytes = (uint8_t *)(((uint32_t *)dst_bits) + dst_stride * (dst_y) + (dst_x));
+- byte_width = 4 * width;
+- src_stride *= 4;
+- dst_stride *= 4;
++ pixman_blt_helper (src_bytes, dst_bytes, src_stride, dst_stride,
++ width, height);
++ return TRUE;
+ }
+- else
++
++ if (src_bytes < dst_bytes && src_bytes + src_stride * height > dst_bytes)
+ {
+- return FALSE;
++ src_bytes += src_stride * height - src_stride;
++ dst_bytes += dst_stride * height - dst_stride;
++ dst_stride = -dst_stride;
++ src_stride = -src_stride;
++
++ if (src_bytes + width > dst_bytes)
++ {
++ /* TODO: reverse scanline copy using SSE2 */
++ while (--height >= 0)
++ {
++ memmove (dst_bytes, src_bytes, width);
++ dst_bytes += dst_stride;
++ src_bytes += src_stride;
++ }
++ return TRUE;
++ }
+ }
+
+ while (height--)
+@@ -5064,7 +5073,7 @@ pixman_blt_sse2 (uint32_t *src_bits,
+ uint8_t *d = dst_bytes;
+ src_bytes += src_stride;
+ dst_bytes += dst_stride;
+- w = byte_width;
++ w = width;
+
+ while (w >= 2 && ((unsigned long)d & 3))
+ {
+--
+1.6.6.1
+
diff --git a/recipes/obsolete/xorg-lib/pixman-0.20.0/0004-Support-of-overlapping-src-dst-for-pixman_blt_neon.patch b/recipes/obsolete/xorg-lib/pixman-0.20.0/0004-Support-of-overlapping-src-dst-for-pixman_blt_neon.patch
new file mode 100644
index 0000000000..f6aa9792b8
--- /dev/null
+++ b/recipes/obsolete/xorg-lib/pixman-0.20.0/0004-Support-of-overlapping-src-dst-for-pixman_blt_neon.patch
@@ -0,0 +1,94 @@
+From a913cc05a1a1c5a813cf06d248334edede9caab7 Mon Sep 17 00:00:00 2001
+From: Siarhei Siamashka <siarhei.siamashka@nokia.com>
+Date: Wed, 18 Nov 2009 06:08:48 +0200
+Subject: [PATCH 4/8] Support of overlapping src/dst for pixman_blt_neon
+
+---
+ pixman/pixman-arm-neon.c | 62 +++++++++++++++++++++++++++++++++++++--------
+ 1 files changed, 51 insertions(+), 11 deletions(-)
+
+diff --git a/pixman/pixman-arm-neon.c b/pixman/pixman-arm-neon.c
+index be5d403..cbfd7cf 100644
+--- a/pixman/pixman-arm-neon.c
++++ b/pixman/pixman-arm-neon.c
+@@ -176,26 +176,66 @@ pixman_blt_neon (uint32_t *src_bits,
+ int width,
+ int height)
+ {
+- if (src_bpp != dst_bpp)
++ uint8_t * src_bytes;
++ uint8_t * dst_bytes;
++ int bpp;
++
++ if (src_bpp != dst_bpp || src_bpp & 7)
+ return FALSE;
+
++ bpp = src_bpp >> 3;
++ width *= bpp;
++ src_stride *= 4;
++ dst_stride *= 4;
++ src_bytes = (uint8_t *)src_bits + src_y * src_stride + src_x * bpp;
++ dst_bytes = (uint8_t *)dst_bits + dst_y * dst_stride + dst_x * bpp;
++
++ if (src_bpp != 16 && src_bpp != 32)
++ {
++ pixman_blt_helper (src_bytes, dst_bytes, src_stride, dst_stride,
++ width, height);
++ return TRUE;
++ }
++
++ if (src_bytes < dst_bytes && src_bytes + src_stride * height > dst_bytes)
++ {
++ src_bytes += src_stride * height - src_stride;
++ dst_bytes += dst_stride * height - dst_stride;
++ dst_stride = -dst_stride;
++ src_stride = -src_stride;
++
++ if (src_bytes + width > dst_bytes)
++ {
++ /* TODO: reverse scanline copy using NEON */
++ while (--height >= 0)
++ {
++ memmove (dst_bytes, src_bytes, width);
++ dst_bytes += dst_stride;
++ src_bytes += src_stride;
++ }
++ return TRUE;
++ }
++ }
++
+ switch (src_bpp)
+ {
+ case 16:
+ pixman_composite_src_0565_0565_asm_neon (
+- width, height,
+- (uint16_t *)(((char *) dst_bits) +
+- dst_y * dst_stride * 4 + dst_x * 2), dst_stride * 2,
+- (uint16_t *)(((char *) src_bits) +
+- src_y * src_stride * 4 + src_x * 2), src_stride * 2);
++ width >> 1,
++ height,
++ (uint16_t *) dst_bytes,
++ dst_stride >> 1,
++ (uint16_t *) src_bytes,
++ src_stride >> 1);
+ return TRUE;
+ case 32:
+ pixman_composite_src_8888_8888_asm_neon (
+- width, height,
+- (uint32_t *)(((char *) dst_bits) +
+- dst_y * dst_stride * 4 + dst_x * 4), dst_stride,
+- (uint32_t *)(((char *) src_bits) +
+- src_y * src_stride * 4 + src_x * 4), src_stride);
++ width >> 2,
++ height,
++ (uint32_t *) dst_bytes,
++ dst_stride >> 2,
++ (uint32_t *) src_bytes,
++ src_stride >> 2);
+ return TRUE;
+ default:
+ return FALSE;
+--
+1.6.6.1
+
diff --git a/recipes/obsolete/xorg-lib/pixman-0.20.0/0005-ARM-added-NEON-optimizations-for-fetch-store-r5g6b5-.patch b/recipes/obsolete/xorg-lib/pixman-0.20.0/0005-ARM-added-NEON-optimizations-for-fetch-store-r5g6b5-.patch
new file mode 100644
index 0000000000..dbe98b38ce
--- /dev/null
+++ b/recipes/obsolete/xorg-lib/pixman-0.20.0/0005-ARM-added-NEON-optimizations-for-fetch-store-r5g6b5-.patch
@@ -0,0 +1,109 @@
+From f75e9d1868e21dd75ff3a2ca3561546d23877ddb Mon Sep 17 00:00:00 2001
+From: Siarhei Siamashka <siarhei.siamashka@nokia.com>
+Date: Thu, 10 Dec 2009 00:51:50 +0200
+Subject: [PATCH 5/8] ARM: added NEON optimizations for fetch/store r5g6b5 scanline
+
+---
+ pixman/pixman-arm-neon-asm.S | 20 ++++++++++++++++++++
+ pixman/pixman-arm-neon.c | 40 ++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 60 insertions(+), 0 deletions(-)
+
+diff --git a/pixman/pixman-arm-neon-asm.S b/pixman/pixman-arm-neon-asm.S
+index e4db5cd..c79ba81 100644
+--- a/pixman/pixman-arm-neon-asm.S
++++ b/pixman/pixman-arm-neon-asm.S
+@@ -459,6 +459,16 @@ generate_composite_function \
+ pixman_composite_src_8888_0565_process_pixblock_tail, \
+ pixman_composite_src_8888_0565_process_pixblock_tail_head
+
++generate_composite_function_single_scanline \
++ pixman_store_scanline_r5g6b5_asm_neon, 32, 0, 16, \
++ FLAG_DST_WRITEONLY | FLAG_DEINTERLEAVE_32BPP, \
++ 8, /* number of pixels, processed in a single block */ \
++ default_init, \
++ default_cleanup, \
++ pixman_composite_src_8888_0565_process_pixblock_head, \
++ pixman_composite_src_8888_0565_process_pixblock_tail, \
++ pixman_composite_src_8888_0565_process_pixblock_tail_head
++
+ /******************************************************************************/
+
+ .macro pixman_composite_src_0565_8888_process_pixblock_head
+@@ -494,6 +504,16 @@ generate_composite_function \
+ pixman_composite_src_0565_8888_process_pixblock_tail, \
+ pixman_composite_src_0565_8888_process_pixblock_tail_head
+
++generate_composite_function_single_scanline \
++ pixman_fetch_scanline_r5g6b5_asm_neon, 16, 0, 32, \
++ FLAG_DST_WRITEONLY | FLAG_DEINTERLEAVE_32BPP, \
++ 8, /* number of pixels, processed in a single block */ \
++ default_init, \
++ default_cleanup, \
++ pixman_composite_src_0565_8888_process_pixblock_head, \
++ pixman_composite_src_0565_8888_process_pixblock_tail, \
++ pixman_composite_src_0565_8888_process_pixblock_tail_head
++
+ /******************************************************************************/
+
+ .macro pixman_composite_add_8_8_process_pixblock_head
+diff --git a/pixman/pixman-arm-neon.c b/pixman/pixman-arm-neon.c
+index cbfd7cf..f88c8f8 100644
+--- a/pixman/pixman-arm-neon.c
++++ b/pixman/pixman-arm-neon.c
+@@ -392,6 +392,42 @@ BIND_COMBINE_U (over)
+ BIND_COMBINE_U (add)
+ BIND_COMBINE_U (out_reverse)
+
++void
++pixman_fetch_scanline_r5g6b5_asm_neon (int width,
++ uint32_t *buffer,
++ const uint16_t *pixel);
++void
++pixman_store_scanline_r5g6b5_asm_neon (int width,
++ uint16_t *pixel,
++ const uint32_t *values);
++
++static void
++neon_fetch_scanline_r5g6b5 (pixman_image_t *image,
++ int x,
++ int y,
++ int width,
++ uint32_t * buffer,
++ const uint32_t *mask)
++{
++ const uint32_t *bits = image->bits.bits + y * image->bits.rowstride;
++ const uint16_t *pixel = (const uint16_t *)bits + x;
++
++ pixman_fetch_scanline_r5g6b5_asm_neon (width, buffer, pixel);
++}
++
++static void
++neon_store_scanline_r5g6b5 (bits_image_t * image,
++ int x,
++ int y,
++ int width,
++ const uint32_t *values)
++{
++ uint32_t *bits = image->bits + image->rowstride * y;
++ uint16_t *pixel = ((uint16_t *) bits) + x;
++
++ pixman_store_scanline_r5g6b5_asm_neon (width, pixel, values);
++}
++
+ pixman_implementation_t *
+ _pixman_implementation_create_arm_neon (void)
+ {
+@@ -407,6 +443,10 @@ _pixman_implementation_create_arm_neon (void)
+ imp->combine_32[PIXMAN_OP_ADD] = neon_combine_add_u;
+ imp->combine_32[PIXMAN_OP_OUT_REVERSE] = neon_combine_out_reverse_u;
+
++ _pixman_bits_override_accessors (PIXMAN_r5g6b5,
++ neon_fetch_scanline_r5g6b5,
++ neon_store_scanline_r5g6b5);
++
+ imp->blt = arm_neon_blt;
+ imp->fill = arm_neon_fill;
+
+--
+1.6.6.1
+
diff --git a/recipes/obsolete/xorg-lib/pixman-0.20.0/0006-ARM-added-NEON-optimizations-for-fetch-store-a8-scan.patch b/recipes/obsolete/xorg-lib/pixman-0.20.0/0006-ARM-added-NEON-optimizations-for-fetch-store-a8-scan.patch
new file mode 100644
index 0000000000..d050646fa7
--- /dev/null
+++ b/recipes/obsolete/xorg-lib/pixman-0.20.0/0006-ARM-added-NEON-optimizations-for-fetch-store-a8-scan.patch
@@ -0,0 +1,148 @@
+From a1cd695c5e22f0f4a2b7272fab675a3cc510bacb Mon Sep 17 00:00:00 2001
+From: Siarhei Siamashka <siarhei.siamashka@nokia.com>
+Date: Thu, 23 Sep 2010 21:10:56 +0300
+Subject: [PATCH 6/8] ARM: added NEON optimizations for fetch/store a8 scanline
+
+---
+ pixman/pixman-arm-neon-asm.S | 64 ++++++++++++++++++++++++++++++++++++++++++
+ pixman/pixman-arm-neon.c | 42 +++++++++++++++++++++++++++
+ 2 files changed, 106 insertions(+), 0 deletions(-)
+
+diff --git a/pixman/pixman-arm-neon-asm.S b/pixman/pixman-arm-neon-asm.S
+index c79ba81..ca0825c 100644
+--- a/pixman/pixman-arm-neon-asm.S
++++ b/pixman/pixman-arm-neon-asm.S
+@@ -418,6 +418,70 @@ generate_composite_function \
+
+ /******************************************************************************/
+
++.macro pixman_composite_src_8_8888_process_pixblock_head
++ /* This is tricky part: we can't set these values just once in 'init' macro
++ * because leading/trailing pixels handling part uses VZIP.8 instructions,
++ * and they operate on values in-place and destroy original registers
++ * content. Think about it like VST4.8 instruction corrupting NEON
++ * registers after write in 'tail_head' macro. Except that 'tail_head'
++ * macro itself actually does not need these extra VMOVs because it uses
++ * real VST4.8 instruction.
++ */
++ vmov.u8 q0, #0
++ vmov.u8 d2, #0
++.endm
++
++.macro pixman_composite_src_8_8888_process_pixblock_tail
++.endm
++
++.macro pixman_composite_src_8_8888_process_pixblock_tail_head
++ vst4.8 {d0, d1, d2, d3}, [DST_W, :128]!
++ vld1.8 {d3}, [SRC]!
++.endm
++
++generate_composite_function_single_scanline \
++ pixman_fetch_scanline_a8_asm_neon, 8, 0, 32, \
++ FLAG_DST_WRITEONLY | FLAG_DEINTERLEAVE_32BPP, \
++ 8, /* number of pixels, processed in a single block */ \
++ default_init, \
++ default_cleanup, \
++ pixman_composite_src_8_8888_process_pixblock_head, \
++ pixman_composite_src_8_8888_process_pixblock_tail, \
++ pixman_composite_src_8_8888_process_pixblock_tail_head, \
++ 0, /* dst_w_basereg */ \
++ 0, /* dst_r_basereg */ \
++ 3, /* src_basereg */ \
++ 0 /* mask_basereg */
++
++/******************************************************************************/
++
++.macro pixman_composite_src_8888_8_process_pixblock_head
++.endm
++
++.macro pixman_composite_src_8888_8_process_pixblock_tail
++.endm
++
++.macro pixman_composite_src_8888_8_process_pixblock_tail_head
++ vst1.8 {d3}, [DST_W, :64]!
++ vld4.8 {d0, d1, d2, d3}, [SRC]!
++.endm
++
++generate_composite_function_single_scanline \
++ pixman_store_scanline_a8_asm_neon, 32, 0, 8, \
++ FLAG_DST_WRITEONLY | FLAG_DEINTERLEAVE_32BPP, \
++ 8, /* number of pixels, processed in a single block */ \
++ default_init, \
++ default_cleanup, \
++ pixman_composite_src_8888_8_process_pixblock_head, \
++ pixman_composite_src_8888_8_process_pixblock_tail, \
++ pixman_composite_src_8888_8_process_pixblock_tail_head, \
++ 3, /* dst_w_basereg */ \
++ 0, /* dst_r_basereg */ \
++ 0, /* src_basereg */ \
++ 0 /* mask_basereg */
++
++/******************************************************************************/
++
+ .macro pixman_composite_src_8888_0565_process_pixblock_head
+ vshll.u8 q8, d1, #8
+ vshll.u8 q14, d2, #8
+diff --git a/pixman/pixman-arm-neon.c b/pixman/pixman-arm-neon.c
+index f88c8f8..43091d2 100644
+--- a/pixman/pixman-arm-neon.c
++++ b/pixman/pixman-arm-neon.c
+@@ -428,6 +428,45 @@ neon_store_scanline_r5g6b5 (bits_image_t * image,
+ pixman_store_scanline_r5g6b5_asm_neon (width, pixel, values);
+ }
+
++void
++pixman_fetch_scanline_a8_asm_neon (int width,
++ uint32_t *buffer,
++ const uint8_t *pixel);
++
++
++void
++pixman_store_scanline_a8_asm_neon (int width,
++ uint8_t *pixel,
++ const uint32_t *values);
++
++static void
++neon_fetch_scanline_a8 (pixman_image_t *image,
++ int x,
++ int y,
++ int width,
++ uint32_t * buffer,
++ const uint32_t *mask)
++{
++ const uint32_t *bits = image->bits.bits + y * image->bits.rowstride;
++ const uint8_t *pixel = (const uint8_t *) bits + x;
++
++ pixman_fetch_scanline_a8_asm_neon (width, buffer, pixel);
++}
++
++static void
++neon_store_scanline_a8 (bits_image_t * image,
++ int x,
++ int y,
++ int width,
++ const uint32_t *values)
++{
++ uint32_t *bits = image->bits + image->rowstride * y;
++ uint8_t *pixel = (uint8_t *) bits + x;
++
++ pixman_store_scanline_a8_asm_neon (width, pixel, values);
++}
++
++
+ pixman_implementation_t *
+ _pixman_implementation_create_arm_neon (void)
+ {
+@@ -446,6 +485,9 @@ _pixman_implementation_create_arm_neon (void)
+ _pixman_bits_override_accessors (PIXMAN_r5g6b5,
+ neon_fetch_scanline_r5g6b5,
+ neon_store_scanline_r5g6b5);
++ _pixman_bits_override_accessors (PIXMAN_a8,
++ neon_fetch_scanline_a8,
++ neon_store_scanline_a8);
+
+ imp->blt = arm_neon_blt;
+ imp->fill = arm_neon_fill;
+--
+1.6.6.1
+
diff --git a/recipes/obsolete/xorg-lib/pixman-0.20.0/0007-ARM-added-NEON-optimizations-for-fetching-x8r8g8b8-s.patch b/recipes/obsolete/xorg-lib/pixman-0.20.0/0007-ARM-added-NEON-optimizations-for-fetching-x8r8g8b8-s.patch
new file mode 100644
index 0000000000..7f28f47cff
--- /dev/null
+++ b/recipes/obsolete/xorg-lib/pixman-0.20.0/0007-ARM-added-NEON-optimizations-for-fetching-x8r8g8b8-s.patch
@@ -0,0 +1,77 @@
+From d6ae7da60cc797900b5eff0786536c4a11ab0f50 Mon Sep 17 00:00:00 2001
+From: Siarhei Siamashka <siarhei.siamashka@nokia.com>
+Date: Fri, 24 Sep 2010 18:22:44 +0300
+Subject: [PATCH 7/8] ARM: added NEON optimizations for fetching x8r8g8b8 scanline
+
+---
+ pixman/pixman-arm-neon-asm.S | 14 ++++++++++++++
+ pixman/pixman-arm-neon.c | 21 +++++++++++++++++++++
+ 2 files changed, 35 insertions(+), 0 deletions(-)
+
+diff --git a/pixman/pixman-arm-neon-asm.S b/pixman/pixman-arm-neon-asm.S
+index ca0825c..ffd0b83 100644
+--- a/pixman/pixman-arm-neon-asm.S
++++ b/pixman/pixman-arm-neon-asm.S
+@@ -1206,6 +1206,20 @@ generate_composite_function \
+ 0, /* src_basereg */ \
+ 0 /* mask_basereg */
+
++generate_composite_function_single_scanline \
++ pixman_fetch_scanline_x888_asm_neon, 32, 0, 32, \
++ FLAG_DST_WRITEONLY, \
++ 8, /* number of pixels, processed in a single block */ \
++ 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
+diff --git a/pixman/pixman-arm-neon.c b/pixman/pixman-arm-neon.c
+index 43091d2..f84b5e6 100644
+--- a/pixman/pixman-arm-neon.c
++++ b/pixman/pixman-arm-neon.c
+@@ -466,6 +466,24 @@ neon_store_scanline_a8 (bits_image_t * image,
+ pixman_store_scanline_a8_asm_neon (width, pixel, values);
+ }
+
++void
++pixman_fetch_scanline_x888_asm_neon (int width,
++ uint32_t *buffer,
++ const uint32_t *pixel);
++
++static void
++neon_fetch_scanline_x888 (pixman_image_t *image,
++ int x,
++ int y,
++ int width,
++ uint32_t * buffer,
++ const uint32_t *mask)
++{
++ const uint32_t *bits = image->bits.bits + y * image->bits.rowstride;
++ const uint32_t *pixel = (const uint32_t *) bits + x;
++
++ pixman_fetch_scanline_x888_asm_neon (width, buffer, pixel);
++}
+
+ pixman_implementation_t *
+ _pixman_implementation_create_arm_neon (void)
+@@ -488,6 +506,9 @@ _pixman_implementation_create_arm_neon (void)
+ _pixman_bits_override_accessors (PIXMAN_a8,
+ neon_fetch_scanline_a8,
+ neon_store_scanline_a8);
++ _pixman_bits_override_accessors (PIXMAN_x8r8g8b8,
++ neon_fetch_scanline_x888,
++ NULL);
+
+ imp->blt = arm_neon_blt;
+ imp->fill = arm_neon_fill;
+--
+1.6.6.1
+
diff --git a/recipes/obsolete/xorg-lib/pixman-0.20.0/0008-ARM-optimization-for-scaled-src_0565_0565-operation-.patch b/recipes/obsolete/xorg-lib/pixman-0.20.0/0008-ARM-optimization-for-scaled-src_0565_0565-operation-.patch
new file mode 100644
index 0000000000..6efdb621ad
--- /dev/null
+++ b/recipes/obsolete/xorg-lib/pixman-0.20.0/0008-ARM-optimization-for-scaled-src_0565_0565-operation-.patch
@@ -0,0 +1,172 @@
+From e1191ad6563a1fb02a45982b1c4d7fed3c655e97 Mon Sep 17 00:00:00 2001
+From: Siarhei Siamashka <siarhei.siamashka@nokia.com>
+Date: Mon, 4 Oct 2010 01:56:59 +0300
+Subject: [PATCH 8/8] ARM optimization for scaled src_0565_0565 operation with nearest filter
+
+The code actually uses only armv4t instructions.
+
+Benchmark from ARM11:
+
+ == before ==
+ op=1, src_fmt=10020565, dst_fmt=10020565, speed=34.86 MPix/s
+
+ == after ==
+ op=1, src_fmt=10020565, dst_fmt=10020565, speed=36.62 MPix/s
+
+Benchmark from ARM Cortex-A8:
+
+ == before ==
+ op=1, src_fmt=10020565, dst_fmt=10020565, speed=89.55 MPix/s
+
+ == after ==
+ op=1, src_fmt=10020565, dst_fmt=10020565, speed=94.91 MPix/s
+---
+ pixman/pixman-arm-simd-asm.S | 66 ++++++++++++++++++++++++++++++++++++++++++
+ pixman/pixman-arm-simd.c | 37 +++++++++++++++++++++++
+ 2 files changed, 103 insertions(+), 0 deletions(-)
+
+diff --git a/pixman/pixman-arm-simd-asm.S b/pixman/pixman-arm-simd-asm.S
+index a3d2d40..b6f69db 100644
+--- a/pixman/pixman-arm-simd-asm.S
++++ b/pixman/pixman-arm-simd-asm.S
+@@ -1,5 +1,6 @@
+ /*
+ * Copyright © 2008 Mozilla Corporation
++ * Copyright © 2010 Nokia Corporation
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+@@ -328,3 +329,68 @@ pixman_asm_function pixman_composite_over_n_8_8888_asm_armv6
+ pop {r4, r5, r6, r7, r8, r9, r10, r11}
+ bx lr
+ .endfunc
++
++/*
++ * Note: This function is actually primarily optimized for ARM Cortex-A8
++ * pipeline. In order to get good performance on ARM9/ARM11 cores (which
++ * don't have efficient write combining), it needs to be changed to use
++ * 16-byte aligned writes using STM instruction.
++ */
++pixman_asm_function pixman_scaled_nearest_scanline_565_565_SRC_asm_armv6
++ DST .req r0
++ SRC .req r1
++ W .req r2
++ VX .req r3
++ UNIT_X .req r12
++ TMP1 .req r4
++ TMP2 .req r5
++ MASK .req r6
++ ldr UNIT_X, [sp]
++ push {r4, r5, r6, r7}
++ mvn MASK, #1
++
++ /* define helper macro */
++ .macro scale_2_pixels
++ ldrh TMP1, [SRC, TMP1]
++ and TMP2, MASK, VX, lsr #15
++ add VX, VX, UNIT_X
++ strh TMP1, [DST], #2
++
++ ldrh TMP2, [SRC, TMP2]
++ and TMP1, MASK, VX, lsr #15
++ add VX, VX, UNIT_X
++ strh TMP2, [DST], #2
++ .endm
++
++ /* now do the scaling */
++ and TMP1, MASK, VX, lsr #15
++ add VX, VX, UNIT_X
++ subs W, #4
++ blt 2f
++1: /* main loop, process 4 pixels per iteration */
++ scale_2_pixels
++ scale_2_pixels
++ subs W, W, #4
++ bge 1b
++2:
++ tst W, #2
++ beq 2f
++ scale_2_pixels
++2:
++ tst W, #1
++ ldrneh TMP1, [SRC, TMP1]
++ strneh TMP1, [DST], #2
++ /* cleanup helper macro */
++ .purgem scale_2_pixels
++ .unreq DST
++ .unreq SRC
++ .unreq W
++ .unreq VX
++ .unreq UNIT_X
++ .unreq TMP1
++ .unreq TMP2
++ .unreq MASK
++ /* return */
++ pop {r4, r5, r6, r7}
++ bx lr
++.endfunc
+diff --git a/pixman/pixman-arm-simd.c b/pixman/pixman-arm-simd.c
+index d466a31..f6f464c 100644
+--- a/pixman/pixman-arm-simd.c
++++ b/pixman/pixman-arm-simd.c
+@@ -29,6 +29,7 @@
+
+ #include "pixman-private.h"
+ #include "pixman-arm-common.h"
++#include "pixman-fast-path.h"
+
+ #if 0 /* This code was moved to 'pixman-arm-simd-asm.S' */
+
+@@ -375,6 +376,35 @@ pixman_composite_over_n_8_8888_asm_armv6 (int32_t width,
+
+ #endif
+
++void
++pixman_scaled_nearest_scanline_565_565_SRC_asm_armv6 (uint16_t * dst,
++ uint16_t * src,
++ int32_t w,
++ pixman_fixed_t vx,
++ pixman_fixed_t unit_x);
++
++static force_inline void
++scaled_nearest_scanline_armv6_565_565_SRC (uint16_t * dst,
++ uint16_t * src,
++ int32_t w,
++ pixman_fixed_t vx,
++ pixman_fixed_t unit_x,
++ pixman_fixed_t max_vx)
++{
++ pixman_scaled_nearest_scanline_565_565_SRC_asm_armv6 (dst, src, w,
++ vx, unit_x);
++}
++
++FAST_NEAREST_MAINLOOP (armv6_565_565_cover_SRC,
++ scaled_nearest_scanline_armv6_565_565_SRC,
++ uint16_t, uint16_t, COVER);
++FAST_NEAREST_MAINLOOP (armv6_565_565_none_SRC,
++ scaled_nearest_scanline_armv6_565_565_SRC,
++ uint16_t, uint16_t, NONE);
++FAST_NEAREST_MAINLOOP (armv6_565_565_pad_SRC,
++ scaled_nearest_scanline_armv6_565_565_SRC,
++ uint16_t, uint16_t, PAD);
++
+ PIXMAN_ARM_BIND_FAST_PATH_SRC_DST (armv6, add_8_8,
+ uint8_t, 1, uint8_t, 1)
+ PIXMAN_ARM_BIND_FAST_PATH_SRC_DST (armv6, over_8888_8888,
+@@ -404,6 +434,13 @@ static const pixman_fast_path_t arm_simd_fast_paths[] =
+ PIXMAN_STD_FAST_PATH (OVER, solid, a8, a8b8g8r8, armv6_composite_over_n_8_8888),
+ PIXMAN_STD_FAST_PATH (OVER, solid, a8, x8b8g8r8, armv6_composite_over_n_8_8888),
+
++ SIMPLE_NEAREST_FAST_PATH_COVER (SRC, r5g6b5, r5g6b5, armv6_565_565),
++ SIMPLE_NEAREST_FAST_PATH_COVER (SRC, b5g6r5, b5g6r5, armv6_565_565),
++ SIMPLE_NEAREST_FAST_PATH_NONE (SRC, r5g6b5, r5g6b5, armv6_565_565),
++ SIMPLE_NEAREST_FAST_PATH_NONE (SRC, b5g6r5, b5g6r5, armv6_565_565),
++ SIMPLE_NEAREST_FAST_PATH_PAD (SRC, r5g6b5, r5g6b5, armv6_565_565),
++ SIMPLE_NEAREST_FAST_PATH_PAD (SRC, b5g6r5, b5g6r5, armv6_565_565),
++
+ { PIXMAN_OP_NONE },
+ };
+
+--
+1.6.6.1
+
diff --git a/recipes/obsolete/xorg-lib/pixman_0.12.0.bb b/recipes/obsolete/xorg-lib/pixman_0.12.0.bb
new file mode 100644
index 0000000000..fcf0c14930
--- /dev/null
+++ b/recipes/obsolete/xorg-lib/pixman_0.12.0.bb
@@ -0,0 +1,9 @@
+require pixman.inc
+PR = "${INC_PR}.0"
+
+SRC_URI += " \
+ file://pixman-arm.patch \
+ file://pixman-x888-565.patch \
+ "
+SRC_URI[archive.md5sum] = "09357cc74975b01714e00c5899ea1881"
+SRC_URI[archive.sha256sum] = "2b16516ef147bb604e1cf50c883143a052a7ff92d2930b70e571da0603b7d9ce"
diff --git a/recipes/obsolete/xorg-lib/pixman_0.16.2.bb b/recipes/obsolete/xorg-lib/pixman_0.16.2.bb
new file mode 100644
index 0000000000..399bb6a152
--- /dev/null
+++ b/recipes/obsolete/xorg-lib/pixman_0.16.2.bb
@@ -0,0 +1,7 @@
+require pixman.inc
+PR = "${INC_PR}.1"
+
+SRC_URI[archive.md5sum] = "02bd3669f53c404c19980d5efb6f86fb"
+SRC_URI[archive.sha256sum] = "05f78c2fd3a5f054c0d716e8ba1b67a0c04a7a7e642d6946828ec383b389d185"
+
+EXTRA_OECONF = "--disable-gtk"
diff --git a/recipes/obsolete/xorg-lib/pixman_0.18.4.bb b/recipes/obsolete/xorg-lib/pixman_0.18.4.bb
new file mode 100644
index 0000000000..286477ac32
--- /dev/null
+++ b/recipes/obsolete/xorg-lib/pixman_0.18.4.bb
@@ -0,0 +1,21 @@
+require pixman.inc
+PR = "${INC_PR}.1"
+
+SRC_URI[archive.md5sum] = "532db4194e18c108d0b7dd85f20d39b8"
+SRC_URI[archive.sha256sum] = "1484092277c5187f5458229a2b7fd7fbc0cb07e1f220c7f8f9ac65de6dba7989"
+SRC_URI += "\
+ file://0001-Generic-C-implementation-of-pixman_blt-with-overlapp.patch\
+ file://0002-Support-of-overlapping-src-dst-for-pixman_blt_mmx.patch\
+ file://0003-Support-of-overlapping-src-dst-for-pixman_blt_sse2.patch\
+ file://0004-Support-of-overlapping-src-dst-for-pixman_blt_neon.patch\
+ file://0005-ARM-added-NEON-optimizations-for-fetch-store-r5g6b5-.patch\
+ file://0006-A-copy-paste-version-of-16bpp-bilinear-scanline-fetc.patch\
+ file://0007-ARM-added-missing-cache-preload.patch\
+ file://565-over-neon.patch \
+ file://neon-reverse-u.patch \
+"
+
+NEON = " --disable-arm-neon "
+NEON_armv7a = " "
+
+EXTRA_OECONF = "${NEON} --disable-gtk"
diff --git a/recipes/obsolete/xorg-lib/pixman_0.20.0.bb b/recipes/obsolete/xorg-lib/pixman_0.20.0.bb
new file mode 100644
index 0000000000..b3fbd4f155
--- /dev/null
+++ b/recipes/obsolete/xorg-lib/pixman_0.20.0.bb
@@ -0,0 +1,23 @@
+require pixman.inc
+
+SRC_URI[archive.md5sum] = "c1a31d5cedfa97c5af7148a2d1fd4356"
+SRC_URI[archive.sha256sum] = "9c02c22c6cc3f28f3633d02ef6f0cac130518f621edb011ebbbf08cd1a81251a"
+
+PR = "${INC_PR}.0"
+
+SRC_URI += "\
+ file://0000-Add-pixman_bits_override_accessors.patch \
+ file://0001-Generic-C-implementation-of-pixman_blt-with-overlapp.patch \
+ file://0002-Support-of-overlapping-src-dst-for-pixman_blt_mmx.patch \
+ file://0003-Support-of-overlapping-src-dst-for-pixman_blt_sse2.patch \
+ file://0004-Support-of-overlapping-src-dst-for-pixman_blt_neon.patch \
+ file://0005-ARM-added-NEON-optimizations-for-fetch-store-r5g6b5-.patch \
+ file://0006-ARM-added-NEON-optimizations-for-fetch-store-a8-scan.patch \
+ file://0007-ARM-added-NEON-optimizations-for-fetching-x8r8g8b8-s.patch \
+ file://0008-ARM-optimization-for-scaled-src_0565_0565-operation-.patch \
+"
+
+NEON = " --disable-arm-neon "
+NEON_armv7a = " "
+
+EXTRA_OECONF = "${NEON} --disable-gtk"
diff --git a/recipes/obsolete/xorg-lib/xtrans_1.2.5.bb b/recipes/obsolete/xorg-lib/xtrans_1.2.5.bb
new file mode 100644
index 0000000000..e6e3714702
--- /dev/null
+++ b/recipes/obsolete/xorg-lib/xtrans_1.2.5.bb
@@ -0,0 +1,13 @@
+require xorg-lib-common.inc
+DESCRIPTION = "network API translation layer to insulate X applications and \
+libraries from OS network vageries."
+RDEPENDS_${PN}-dev = ""
+PE = "1"
+PR = "${INC_PR}.0"
+
+SRC_URI[archive.md5sum] = "2d1e57e82acc5f21797e92341415af2f"
+SRC_URI[archive.sha256sum] = "cc71a391f4da8176e5daeeac1ddf5137ba5e8d2263cb93a49f9e2a9976b90899"
+
+ALLOW_EMPTY = "1"
+
+BBCLASSEXTEND = "native nativesdk"