diff options
author | Martin Jansa <Martin.Jansa@gmail.com> | 2011-01-11 09:03:28 +0100 |
---|---|---|
committer | Martin Jansa <Martin.Jansa@gmail.com> | 2011-01-13 08:27:02 +0100 |
commit | ec80e3f5192f70d8268658de5adcf08f194be216 (patch) | |
tree | fb6c8e8a1f8997bc932be69c3fea61d350ce3d6b /recipes/obsolete | |
parent | 7e94eaa1951452129aa18e704303c2b7b5e182b4 (diff) | |
download | openembedded-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')
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" |