diff options
author | Martin Jansa <Martin.Jansa@gmail.com> | 2010-08-16 15:08:04 +0200 |
---|---|---|
committer | Martin Jansa <Martin.Jansa@gmail.com> | 2010-08-19 07:28:01 +0200 |
commit | e1aac7076a2f1a9acdeb9e7f1ee97b09102b66a0 (patch) | |
tree | dc8960895a2fcbfaa3ff0c93cc2e210cd9418d5a /recipes/obsolete/xorg | |
parent | ef9813dfa32794cf492c07a0905a6441a4a53bc4 (diff) |
xorg-lib: move older not pinned versions to obsolete dir
Acked-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
Diffstat (limited to 'recipes/obsolete/xorg')
163 files changed, 7909 insertions, 0 deletions
diff --git a/recipes/obsolete/xorg/xorg-lib/diet-x11_1.1.1.bb b/recipes/obsolete/xorg/xorg-lib/diet-x11_1.1.1.bb new file mode 100644 index 0000000000..593ba34c6b --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/diet-x11_1.1.1.bb @@ -0,0 +1,12 @@ +require libx11_${PV}.bb +PR = "${INC_PR}.0" + +SRC_URI += "file://X18NCMSstubs.diff \ + file://fix-disable-xlocale.diff \ + file://fix-utf8-wrong-define.patch \ + file://xim.patch \ + file://xchar2b.patch" + +EXTRA_OECONF += "--without-xcb --disable-udc --enable-xcms --disable-xlocale --disable-xkb" + +CFLAGS += "-D_GNU_SOURCE" diff --git a/recipes/obsolete/xorg/xorg-lib/diet-x11_1.1.2.bb b/recipes/obsolete/xorg/xorg-lib/diet-x11_1.1.2.bb new file mode 100644 index 0000000000..f6291a93d1 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/diet-x11_1.1.2.bb @@ -0,0 +1,10 @@ +require libx11_${PV}.bb +PR = "${INC_PR}.0" + +SRC_URI += "file://X18NCMSstubs.diff \ + file://fix-disable-xlocale.diff \ + file://fix-utf8-wrong-define.patch" + +EXTRA_OECONF += "--without-xcb --disable-udc --disable-xcms --disable-xlocale --disable-xkb" + +CFLAGS += "-D_GNU_SOURCE" diff --git a/recipes/obsolete/xorg/xorg-lib/diet-x11_1.1.3.bb b/recipes/obsolete/xorg/xorg-lib/diet-x11_1.1.3.bb new file mode 100644 index 0000000000..f6291a93d1 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/diet-x11_1.1.3.bb @@ -0,0 +1,10 @@ +require libx11_${PV}.bb +PR = "${INC_PR}.0" + +SRC_URI += "file://X18NCMSstubs.diff \ + file://fix-disable-xlocale.diff \ + file://fix-utf8-wrong-define.patch" + +EXTRA_OECONF += "--without-xcb --disable-udc --disable-xcms --disable-xlocale --disable-xkb" + +CFLAGS += "-D_GNU_SOURCE" diff --git a/recipes/obsolete/xorg/xorg-lib/diet-x11_1.1.4.bb b/recipes/obsolete/xorg/xorg-lib/diet-x11_1.1.4.bb new file mode 100644 index 0000000000..f6291a93d1 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/diet-x11_1.1.4.bb @@ -0,0 +1,10 @@ +require libx11_${PV}.bb +PR = "${INC_PR}.0" + +SRC_URI += "file://X18NCMSstubs.diff \ + file://fix-disable-xlocale.diff \ + file://fix-utf8-wrong-define.patch" + +EXTRA_OECONF += "--without-xcb --disable-udc --disable-xcms --disable-xlocale --disable-xkb" + +CFLAGS += "-D_GNU_SOURCE" diff --git a/recipes/obsolete/xorg/xorg-lib/libapplewm_1.0.0.bb b/recipes/obsolete/xorg/xorg-lib/libapplewm_1.0.0.bb new file mode 100644 index 0000000000..6e746b48b0 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libapplewm_1.0.0.bb @@ -0,0 +1,9 @@ +require xorg-lib-common.inc +DEPENDS += "libxext applewmproto" +PE = "1" +PR = "${INC_PR}.0" + +SRC_URI[archive.md5sum] = "48a403c45be2206ee900729ced3a0e62" +SRC_URI[archive.sha256sum] = "ecd2ff407a418eb4ac673f48b4d0a9c5b6860a13cef7211a32fe8f3d3db0407e" + +XORG_PN = "libAppleWM" diff --git a/recipes/obsolete/xorg/xorg-lib/libdmx_1.0.2.bb b/recipes/obsolete/xorg/xorg-lib/libdmx_1.0.2.bb new file mode 100644 index 0000000000..7d6e02504c --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libdmx_1.0.2.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] = "4d866967210d06098fc9f302ed4c79b1" +SRC_URI[archive.sha256sum] = "fa3ff31a543f7cea04762c08f48b418e75230de8b4dfdf9d2d3ae9e2af26b9c4" diff --git a/recipes/obsolete/xorg/xorg-lib/libfontenc_1.0.4.bb b/recipes/obsolete/xorg/xorg-lib/libfontenc_1.0.4.bb new file mode 100644 index 0000000000..f16cb7744e --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libfontenc_1.0.4.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] = "5cd16a2e51ca7b96a3081c7486ff98b9" +SRC_URI[archive.sha256sum] = "b993aa3d17e845a12a49160b5d96993059ce919c7ba902005b910b867b6258c8" + +BBCLASSEXTEND = "native" diff --git a/recipes/obsolete/xorg/xorg-lib/libfs_1.0.0.bb b/recipes/obsolete/xorg/xorg-lib/libfs_1.0.0.bb new file mode 100644 index 0000000000..7f81054640 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libfs_1.0.0.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] = "dfd5de47e232db0891410bec8ee6707b" +SRC_URI[archive.sha256sum] = "2f18f9fa0e18a3eab3c154ba820ad64b5c6ee364e147524055a553a130ccfdde" + +XORG_PN = "libFS" diff --git a/recipes/obsolete/xorg/xorg-lib/libfs_1.0.1.bb b/recipes/obsolete/xorg/xorg-lib/libfs_1.0.1.bb new file mode 100644 index 0000000000..fe1f7740d4 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libfs_1.0.1.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] = "81521249353fa33be7a4bb0062c2fbb9" +SRC_URI[archive.sha256sum] = "9bf92ffdb51e69e07682cd1a6c0101f2a833b16b9bfa5d601491ff46a35a2cf5" + +XORG_PN = "libFS" diff --git a/recipes/obsolete/xorg/xorg-lib/libice_1.0.3.bb b/recipes/obsolete/xorg/xorg-lib/libice_1.0.3.bb new file mode 100644 index 0000000000..52c9de0452 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libice_1.0.3.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] = "071f96648ac25c8e87a3de11a7de2d8a" +SRC_URI[archive.sha256sum] = "ffd46270dae30cad147d73559142a701a8ff8d0658f4abfb2341edefabb8161d" + +BBCLASSEXTEND = "native" + +XORG_PN = "libICE" diff --git a/recipes/obsolete/xorg/xorg-lib/libice_1.0.4.bb b/recipes/obsolete/xorg/xorg-lib/libice_1.0.4.bb new file mode 100644 index 0000000000..29303c1eb9 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libice_1.0.4.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] = "4ab4e67e0b8845aa201e984153087f4a" +SRC_URI[archive.sha256sum] = "13055e2f4c645cbd135ce97a7974a5866f9ba3ed8988e686b552f55c30514f04" + +BBCLASSEXTEND = "native" + +XORG_PN = "libICE" diff --git a/recipes/obsolete/xorg/xorg-lib/liblbxutil/mkg3states.patch b/recipes/obsolete/xorg/xorg-lib/liblbxutil/mkg3states.patch new file mode 100644 index 0000000000..58463db46b --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/liblbxutil/mkg3states.patch @@ -0,0 +1,51 @@ +--- liblbxutil-1.0.0/configure.ac.old 2006-03-31 02:38:44.000000000 -0500 ++++ liblbxutil-1.0.0/configure.ac 2006-03-31 02:39:06.000000000 -0500 +@@ -60,4 +60,5 @@ XORG_RELEASE_VERSION + + AC_OUTPUT([Makefile + src/Makefile ++ src/image/Makefile + lbxutil.pc]) +--- liblbxutil-1.0.0/src/Makefile.am.old 2006-03-31 02:38:51.000000000 -0500 ++++ liblbxutil-1.0.0/src/Makefile.am 2006-03-31 02:39:49.000000000 -0500 +@@ -1,9 +1,6 @@ + lib_LTLIBRARIES = liblbxutil.la + +-noinst_PROGRAMS = mkg3states +- +-mkg3states_SOURCES = \ +- $(srcdir)/image/mkg3states.c ++SUBDIRS = image + + liblbxutil_la_SOURCES = \ + $(srcdir)/lbx_zlib/reqstats.h \ +@@ -28,9 +25,8 @@ INCLUDES = @LBXUTIL_CFLAGS@ + + $(srcdir)/image/dfaxg42d.c: g3states.h + +-g3states.h: mkg3states +- -rm -f g3states.h +- ./mkg3states -c > g3states.h_ && mv g3states.h_ g3states.h ++g3states.h: image/mkg3states ++ ./image/mkg3states -c > g3states.h_ && mv g3states.h_ g3states.h + + liblbxutil_la_LDFLAGS = -version-number 1:0:0 + +--- liblbxutil-1.0.0/src/image/Makefile.am.old 2006-03-31 02:41:19.000000000 -0500 ++++ liblbxutil-1.0.0/src/image/Makefile.am 2006-03-31 02:40:40.000000000 -0500 +@@ -0,0 +1,15 @@ ++# evil hack ++CFLAGS=$(CFLAGS_FOR_BUILD) ++CPPFLAGS=$(CPPFLAGS_FOR_BUILD) ++LDFLAGS=$(LDFLAGS_FOR_BUILD) ++ ++CC=$(CC_FOR_BUILD) ++LIBTOOL = @LIBTOOL@ --tag=CC ++ ++noinst_PROGRAMS = mkg3states ++ ++mkg3states_SOURCES = \ ++ mkg3states.c ++ ++mkg3states_CFLAGS=$(CFLAGS_FOR_BUILD) ++mkg3states_LDFLAGS=$(LDFLAGS_FOR_BUILD) diff --git a/recipes/obsolete/xorg/xorg-lib/liblbxutil_1.0.1.bb b/recipes/obsolete/xorg/xorg-lib/liblbxutil_1.0.1.bb new file mode 100644 index 0000000000..f51d5abe4a --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/liblbxutil_1.0.1.bb @@ -0,0 +1,11 @@ +require xorg-lib-common.inc +DESCRIPTION = "XFIXES Extension" +DEPENDS += " xextproto xproto zlib" +PE = "1" +PR = "${INC_PR}.0" + +SRC_URI += "file://mkg3states.patch" +SRC_URI[archive.md5sum] = "b73cbd5bc3cd268722a624a5f1318fde" +SRC_URI[archive.sha256sum] = "94c31c7090106d3a95e2a7c083961efca1321b970118fe103ab06e5d927b7258" + +export CC_FOR_BUILD = "gcc" diff --git a/recipes/obsolete/xorg/xorg-lib/libpciaccess/fix-mtrr-check.patch b/recipes/obsolete/xorg/xorg-lib/libpciaccess/fix-mtrr-check.patch new file mode 100644 index 0000000000..e2d9f62318 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libpciaccess/fix-mtrr-check.patch @@ -0,0 +1,19 @@ +--- + configure.ac | 2 -- + 1 file changed, 2 deletions(-) + +--- libpciaccess-0.10.3.orig/configure.ac ++++ libpciaccess-0.10.3/configure.ac +@@ -89,12 +89,10 @@ esac + AM_CONDITIONAL(LINUX, [test "x$linux" = xyes]) + AM_CONDITIONAL(FREEBSD, [test "x$freebsd" = xyes]) + AM_CONDITIONAL(OPENBSD, [test "x$openbsd" = xyes]) + AM_CONDITIONAL(SOLARIS, [test "x$solaris" = xyes]) + +-AC_CHECK_FILE([/usr/include/asm/mtrr.h], +- [have_mtrr_h="yes"], [have_mtrr_h="no"]) + if test "x$have_mtrr_h" = xyes; then + AC_DEFINE(HAVE_MTRR, 1, [Use MTRRs on mappings]) + fi + + AC_SUBST(PCIACCESS_CFLAGS) diff --git a/recipes/obsolete/xorg/xorg-lib/libpciaccess_0.10.3.bb b/recipes/obsolete/xorg/xorg-lib/libpciaccess_0.10.3.bb new file mode 100644 index 0000000000..c594dc04cb --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libpciaccess_0.10.3.bb @@ -0,0 +1,7 @@ +require xorg-lib-common.inc +DEPENDS += "xproto virtual/libx11" +PR = "${INC_PR}.0" + +SRC_URI += "file://fix-mtrr-check.patch" +SRC_URI[archive.md5sum] = "6d5468debf76fac84576ca26c9535821" +SRC_URI[archive.sha256sum] = "2f609ad3b5688ae66dcd18d7cdd1fc6b68531a2a85f89798f6cfb5eda6d680dc" diff --git a/recipes/obsolete/xorg/xorg-lib/libpciaccess_0.11.0.bb b/recipes/obsolete/xorg/xorg-lib/libpciaccess_0.11.0.bb new file mode 100644 index 0000000000..aca0a2f1fd --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libpciaccess_0.11.0.bb @@ -0,0 +1,6 @@ +require xorg-lib-common.inc +DEPENDS += "xproto virtual/libx11" +PR = "${INC_PR}.0" + +SRC_URI[archive.md5sum] = "686320dcec98daad0bdfb8894d4f2a2b" +SRC_URI[archive.sha256sum] = "6e38be12b656c83c66a6fd8ba56c041d8188218278219c88ee635242ec1c7dab" diff --git a/recipes/obsolete/xorg/xorg-lib/libsm_1.0.2.bb b/recipes/obsolete/xorg/xorg-lib/libsm_1.0.2.bb new file mode 100644 index 0000000000..ee2ff16099 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libsm_1.0.2.bb @@ -0,0 +1,13 @@ +require xorg-lib-common.inc +DESCRIPTION = "Session management library" +PRIORITY = "optional" +DEPENDS += " libice xproto xtrans" +PE = "1" +PR = "${INC_PR}.0" + +SRC_URI[archive.md5sum] = "a254771550c01db372e88d1a1dc2e13a" +SRC_URI[archive.sha256sum] = "e290614797bd626c1b92bac8f83e8954b99bd66e6ecdaa1e935e176df099eba8" + +BBCLASSEXTEND = "native" + +XORG_PN = "libSM" diff --git a/recipes/obsolete/xorg/xorg-lib/libsm_1.0.3.bb b/recipes/obsolete/xorg/xorg-lib/libsm_1.0.3.bb new file mode 100644 index 0000000000..8ca90fe4f1 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libsm_1.0.3.bb @@ -0,0 +1,12 @@ +require xorg-lib-common.inc +DESCRIPTION = "X11 Session management library" +DEPENDS += "libice xproto xtrans" +PE = "1" +PR = "${INC_PR}.0" + +SRC_URI[archive.md5sum] = "184cbf502b3cd5d7ba5f9d1290a99606" +SRC_URI[archive.sha256sum] = "57f42d3557effe452cd348362977ff90fa61009885c23b3aca8cb0219b5dec04" + +BBCLASSEXTEND = "native" + +XORG_PN = "libSM" diff --git a/recipes/obsolete/xorg/xorg-lib/libsm_1.1.0.bb b/recipes/obsolete/xorg/xorg-lib/libsm_1.1.0.bb new file mode 100644 index 0000000000..1b51b89ae9 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libsm_1.1.0.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] = "05a04c2b6382fb0054f6c70494e22733" +SRC_URI[archive.sha256sum] = "7536ac382e1ff82014d3a0defba0c61b3a30984f4e5bc7707960d6debcb92a82" + +BBCLASSEXTEND = "native" + +XORG_PN = "libSM" diff --git a/recipes/obsolete/xorg/xorg-lib/libwindowswm_1.0.0.bb b/recipes/obsolete/xorg/xorg-lib/libwindowswm_1.0.0.bb new file mode 100644 index 0000000000..35457cb421 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libwindowswm_1.0.0.bb @@ -0,0 +1,9 @@ +require xorg-lib-common.inc +DEPENDS += "libxext windowswmproto" +PE = "1" +PR = "${INC_PR}.0" + +SRC_URI[archive.md5sum] = "337b379fd00a67345b083100c4e6ba95" +SRC_URI[archive.sha256sum] = "6ad87266173d21ba7e0e4506db0c094769fd58c3f0b741b37f30c297deec166a" + +XORG_PN = "libWindowsWM" diff --git a/recipes/obsolete/xorg/xorg-lib/libx11-1.0.1/keysymdef_include.patch b/recipes/obsolete/xorg/xorg-lib/libx11-1.0.1/keysymdef_include.patch new file mode 100644 index 0000000000..565308834e --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libx11-1.0.1/keysymdef_include.patch @@ -0,0 +1,62 @@ +--- + configure.ac | 44 ++++++++++++++++++++++++-------------------- + 1 file changed, 24 insertions(+), 20 deletions(-) + +Index: libX11-1.1.2/configure.ac +=================================================================== +--- libX11-1.1.2.orig/configure.ac 2008-01-02 15:30:47.000000000 +0000 ++++ libX11-1.1.2/configure.ac 2008-01-02 15:47:25.000000000 +0000 +@@ -207,29 +207,33 @@ AC_CHECK_FUNC(poll, [AC_DEFINE(USE_POLL, + # + KEYSYMDEF="" + AC_MSG_CHECKING([keysymdef.h]) +-for flag in $XPROTO_CFLAGS -I/usr/include; do +- case "$KEYSYMDEF" in +- "") +- case "$flag" in +- *-I*) +- dir=`echo "$flag" | sed 's/ *-I//'` +- file="$dir/X11/keysymdef.h" +- if test -f "$file"; then +- KEYSYMDEF="$file" +- fi ++AC_ARG_WITH(keysymdef, ++ AC_HELP_STRING([--with-keysymdef=DIR/keysymdef.h], [The location of keysymdef.h]), ++ KEYSYMDEF=$withval, KEYSYMDEF="") ++ ++if test x$KEYSYMDEF = x; then ++ for flag in $XPROTO_CFLAGS -I/usr/include; do ++ case "$KEYSYMDEF" in ++ "") ++ case "$flag" in ++ *-I*) ++ dir=`echo "$flag" | sed 's/ *-I//'` ++ file="$dir/X11/keysymdef.h" ++ if test -f "$file"; then ++ KEYSYMDEF="$file" ++ fi ++ ;; ++ esac + ;; + esac +- ;; +- esac +-done +-case "$KEYSYMDEF" in +-"") +- AC_MSG_ERROR([Cannot find keysymdef.h]) +- ;; +-*) ++ done ++fi ++ ++if test -f "$KEYSYMDEF"; then + AC_MSG_RESULT([$KEYSYMDEF]) +- ;; +-esac ++else ++ AC_MSG_ERROR([Cannot find keysymdef.h]) ++fi + AC_SUBST(KEYSYMDEF) + + AC_ARG_ENABLE(udc, diff --git a/recipes/obsolete/xorg/xorg-lib/libx11-1.0.1/x11_disable_makekeys.patch b/recipes/obsolete/xorg/xorg-lib/libx11-1.0.1/x11_disable_makekeys.patch new file mode 100644 index 0000000000..ad8b6fc7b6 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libx11-1.0.1/x11_disable_makekeys.patch @@ -0,0 +1,15 @@ +Index: libX11-1.0.1/src/util/Makefile.am +=================================================================== +--- libX11-1.0.1.old/src/util/Makefile.am ++++ libX11-1.0.1/src/util/Makefile.am +@@ -1,10 +1 @@ +-# $XdotOrg: lib/X11/src/util/Makefile.am,v 1.4 2006-02-19 02:14:12 jamey Exp $ +- +-noinst_PROGRAMS=makekeys +- +-makekeys_CFLAGS=$(X11_CFLAGS) +- +-#override CC = gcc +-LINK = $(CC) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +- + EXTRA_DIST = mkks.sh diff --git a/recipes/obsolete/xorg/xorg-lib/libx11-1.0.3/keysymdef_include.patch b/recipes/obsolete/xorg/xorg-lib/libx11-1.0.3/keysymdef_include.patch new file mode 100644 index 0000000000..565308834e --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libx11-1.0.3/keysymdef_include.patch @@ -0,0 +1,62 @@ +--- + configure.ac | 44 ++++++++++++++++++++++++-------------------- + 1 file changed, 24 insertions(+), 20 deletions(-) + +Index: libX11-1.1.2/configure.ac +=================================================================== +--- libX11-1.1.2.orig/configure.ac 2008-01-02 15:30:47.000000000 +0000 ++++ libX11-1.1.2/configure.ac 2008-01-02 15:47:25.000000000 +0000 +@@ -207,29 +207,33 @@ AC_CHECK_FUNC(poll, [AC_DEFINE(USE_POLL, + # + KEYSYMDEF="" + AC_MSG_CHECKING([keysymdef.h]) +-for flag in $XPROTO_CFLAGS -I/usr/include; do +- case "$KEYSYMDEF" in +- "") +- case "$flag" in +- *-I*) +- dir=`echo "$flag" | sed 's/ *-I//'` +- file="$dir/X11/keysymdef.h" +- if test -f "$file"; then +- KEYSYMDEF="$file" +- fi ++AC_ARG_WITH(keysymdef, ++ AC_HELP_STRING([--with-keysymdef=DIR/keysymdef.h], [The location of keysymdef.h]), ++ KEYSYMDEF=$withval, KEYSYMDEF="") ++ ++if test x$KEYSYMDEF = x; then ++ for flag in $XPROTO_CFLAGS -I/usr/include; do ++ case "$KEYSYMDEF" in ++ "") ++ case "$flag" in ++ *-I*) ++ dir=`echo "$flag" | sed 's/ *-I//'` ++ file="$dir/X11/keysymdef.h" ++ if test -f "$file"; then ++ KEYSYMDEF="$file" ++ fi ++ ;; ++ esac + ;; + esac +- ;; +- esac +-done +-case "$KEYSYMDEF" in +-"") +- AC_MSG_ERROR([Cannot find keysymdef.h]) +- ;; +-*) ++ done ++fi ++ ++if test -f "$KEYSYMDEF"; then + AC_MSG_RESULT([$KEYSYMDEF]) +- ;; +-esac ++else ++ AC_MSG_ERROR([Cannot find keysymdef.h]) ++fi + AC_SUBST(KEYSYMDEF) + + AC_ARG_ENABLE(udc, diff --git a/recipes/obsolete/xorg/xorg-lib/libx11-1.0.3/x11_disable_makekeys.patch b/recipes/obsolete/xorg/xorg-lib/libx11-1.0.3/x11_disable_makekeys.patch new file mode 100644 index 0000000000..ad8b6fc7b6 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libx11-1.0.3/x11_disable_makekeys.patch @@ -0,0 +1,15 @@ +Index: libX11-1.0.1/src/util/Makefile.am +=================================================================== +--- libX11-1.0.1.old/src/util/Makefile.am ++++ libX11-1.0.1/src/util/Makefile.am +@@ -1,10 +1 @@ +-# $XdotOrg: lib/X11/src/util/Makefile.am,v 1.4 2006-02-19 02:14:12 jamey Exp $ +- +-noinst_PROGRAMS=makekeys +- +-makekeys_CFLAGS=$(X11_CFLAGS) +- +-#override CC = gcc +-LINK = $(CC) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +- + EXTRA_DIST = mkks.sh diff --git a/recipes/obsolete/xorg/xorg-lib/libx11-1.1.1/keysymdef_include.patch b/recipes/obsolete/xorg/xorg-lib/libx11-1.1.1/keysymdef_include.patch new file mode 100644 index 0000000000..565308834e --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libx11-1.1.1/keysymdef_include.patch @@ -0,0 +1,62 @@ +--- + configure.ac | 44 ++++++++++++++++++++++++-------------------- + 1 file changed, 24 insertions(+), 20 deletions(-) + +Index: libX11-1.1.2/configure.ac +=================================================================== +--- libX11-1.1.2.orig/configure.ac 2008-01-02 15:30:47.000000000 +0000 ++++ libX11-1.1.2/configure.ac 2008-01-02 15:47:25.000000000 +0000 +@@ -207,29 +207,33 @@ AC_CHECK_FUNC(poll, [AC_DEFINE(USE_POLL, + # + KEYSYMDEF="" + AC_MSG_CHECKING([keysymdef.h]) +-for flag in $XPROTO_CFLAGS -I/usr/include; do +- case "$KEYSYMDEF" in +- "") +- case "$flag" in +- *-I*) +- dir=`echo "$flag" | sed 's/ *-I//'` +- file="$dir/X11/keysymdef.h" +- if test -f "$file"; then +- KEYSYMDEF="$file" +- fi ++AC_ARG_WITH(keysymdef, ++ AC_HELP_STRING([--with-keysymdef=DIR/keysymdef.h], [The location of keysymdef.h]), ++ KEYSYMDEF=$withval, KEYSYMDEF="") ++ ++if test x$KEYSYMDEF = x; then ++ for flag in $XPROTO_CFLAGS -I/usr/include; do ++ case "$KEYSYMDEF" in ++ "") ++ case "$flag" in ++ *-I*) ++ dir=`echo "$flag" | sed 's/ *-I//'` ++ file="$dir/X11/keysymdef.h" ++ if test -f "$file"; then ++ KEYSYMDEF="$file" ++ fi ++ ;; ++ esac + ;; + esac +- ;; +- esac +-done +-case "$KEYSYMDEF" in +-"") +- AC_MSG_ERROR([Cannot find keysymdef.h]) +- ;; +-*) ++ done ++fi ++ ++if test -f "$KEYSYMDEF"; then + AC_MSG_RESULT([$KEYSYMDEF]) +- ;; +-esac ++else ++ AC_MSG_ERROR([Cannot find keysymdef.h]) ++fi + AC_SUBST(KEYSYMDEF) + + AC_ARG_ENABLE(udc, diff --git a/recipes/obsolete/xorg/xorg-lib/libx11-1.1.2/keysymdef_include.patch b/recipes/obsolete/xorg/xorg-lib/libx11-1.1.2/keysymdef_include.patch new file mode 100644 index 0000000000..565308834e --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libx11-1.1.2/keysymdef_include.patch @@ -0,0 +1,62 @@ +--- + configure.ac | 44 ++++++++++++++++++++++++-------------------- + 1 file changed, 24 insertions(+), 20 deletions(-) + +Index: libX11-1.1.2/configure.ac +=================================================================== +--- libX11-1.1.2.orig/configure.ac 2008-01-02 15:30:47.000000000 +0000 ++++ libX11-1.1.2/configure.ac 2008-01-02 15:47:25.000000000 +0000 +@@ -207,29 +207,33 @@ AC_CHECK_FUNC(poll, [AC_DEFINE(USE_POLL, + # + KEYSYMDEF="" + AC_MSG_CHECKING([keysymdef.h]) +-for flag in $XPROTO_CFLAGS -I/usr/include; do +- case "$KEYSYMDEF" in +- "") +- case "$flag" in +- *-I*) +- dir=`echo "$flag" | sed 's/ *-I//'` +- file="$dir/X11/keysymdef.h" +- if test -f "$file"; then +- KEYSYMDEF="$file" +- fi ++AC_ARG_WITH(keysymdef, ++ AC_HELP_STRING([--with-keysymdef=DIR/keysymdef.h], [The location of keysymdef.h]), ++ KEYSYMDEF=$withval, KEYSYMDEF="") ++ ++if test x$KEYSYMDEF = x; then ++ for flag in $XPROTO_CFLAGS -I/usr/include; do ++ case "$KEYSYMDEF" in ++ "") ++ case "$flag" in ++ *-I*) ++ dir=`echo "$flag" | sed 's/ *-I//'` ++ file="$dir/X11/keysymdef.h" ++ if test -f "$file"; then ++ KEYSYMDEF="$file" ++ fi ++ ;; ++ esac + ;; + esac +- ;; +- esac +-done +-case "$KEYSYMDEF" in +-"") +- AC_MSG_ERROR([Cannot find keysymdef.h]) +- ;; +-*) ++ done ++fi ++ ++if test -f "$KEYSYMDEF"; then + AC_MSG_RESULT([$KEYSYMDEF]) +- ;; +-esac ++else ++ AC_MSG_ERROR([Cannot find keysymdef.h]) ++fi + AC_SUBST(KEYSYMDEF) + + AC_ARG_ENABLE(udc, diff --git a/recipes/obsolete/xorg/xorg-lib/libx11-1.1.3/keysymdef_include.patch b/recipes/obsolete/xorg/xorg-lib/libx11-1.1.3/keysymdef_include.patch new file mode 100644 index 0000000000..565308834e --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libx11-1.1.3/keysymdef_include.patch @@ -0,0 +1,62 @@ +--- + configure.ac | 44 ++++++++++++++++++++++++-------------------- + 1 file changed, 24 insertions(+), 20 deletions(-) + +Index: libX11-1.1.2/configure.ac +=================================================================== +--- libX11-1.1.2.orig/configure.ac 2008-01-02 15:30:47.000000000 +0000 ++++ libX11-1.1.2/configure.ac 2008-01-02 15:47:25.000000000 +0000 +@@ -207,29 +207,33 @@ AC_CHECK_FUNC(poll, [AC_DEFINE(USE_POLL, + # + KEYSYMDEF="" + AC_MSG_CHECKING([keysymdef.h]) +-for flag in $XPROTO_CFLAGS -I/usr/include; do +- case "$KEYSYMDEF" in +- "") +- case "$flag" in +- *-I*) +- dir=`echo "$flag" | sed 's/ *-I//'` +- file="$dir/X11/keysymdef.h" +- if test -f "$file"; then +- KEYSYMDEF="$file" +- fi ++AC_ARG_WITH(keysymdef, ++ AC_HELP_STRING([--with-keysymdef=DIR/keysymdef.h], [The location of keysymdef.h]), ++ KEYSYMDEF=$withval, KEYSYMDEF="") ++ ++if test x$KEYSYMDEF = x; then ++ for flag in $XPROTO_CFLAGS -I/usr/include; do ++ case "$KEYSYMDEF" in ++ "") ++ case "$flag" in ++ *-I*) ++ dir=`echo "$flag" | sed 's/ *-I//'` ++ file="$dir/X11/keysymdef.h" ++ if test -f "$file"; then ++ KEYSYMDEF="$file" ++ fi ++ ;; ++ esac + ;; + esac +- ;; +- esac +-done +-case "$KEYSYMDEF" in +-"") +- AC_MSG_ERROR([Cannot find keysymdef.h]) +- ;; +-*) ++ done ++fi ++ ++if test -f "$KEYSYMDEF"; then + AC_MSG_RESULT([$KEYSYMDEF]) +- ;; +-esac ++else ++ AC_MSG_ERROR([Cannot find keysymdef.h]) ++fi + AC_SUBST(KEYSYMDEF) + + AC_ARG_ENABLE(udc, diff --git a/recipes/obsolete/xorg/xorg-lib/libx11-1.1.4/keysymdef_include.patch b/recipes/obsolete/xorg/xorg-lib/libx11-1.1.4/keysymdef_include.patch new file mode 100644 index 0000000000..565308834e --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libx11-1.1.4/keysymdef_include.patch @@ -0,0 +1,62 @@ +--- + configure.ac | 44 ++++++++++++++++++++++++-------------------- + 1 file changed, 24 insertions(+), 20 deletions(-) + +Index: libX11-1.1.2/configure.ac +=================================================================== +--- libX11-1.1.2.orig/configure.ac 2008-01-02 15:30:47.000000000 +0000 ++++ libX11-1.1.2/configure.ac 2008-01-02 15:47:25.000000000 +0000 +@@ -207,29 +207,33 @@ AC_CHECK_FUNC(poll, [AC_DEFINE(USE_POLL, + # + KEYSYMDEF="" + AC_MSG_CHECKING([keysymdef.h]) +-for flag in $XPROTO_CFLAGS -I/usr/include; do +- case "$KEYSYMDEF" in +- "") +- case "$flag" in +- *-I*) +- dir=`echo "$flag" | sed 's/ *-I//'` +- file="$dir/X11/keysymdef.h" +- if test -f "$file"; then +- KEYSYMDEF="$file" +- fi ++AC_ARG_WITH(keysymdef, ++ AC_HELP_STRING([--with-keysymdef=DIR/keysymdef.h], [The location of keysymdef.h]), ++ KEYSYMDEF=$withval, KEYSYMDEF="") ++ ++if test x$KEYSYMDEF = x; then ++ for flag in $XPROTO_CFLAGS -I/usr/include; do ++ case "$KEYSYMDEF" in ++ "") ++ case "$flag" in ++ *-I*) ++ dir=`echo "$flag" | sed 's/ *-I//'` ++ file="$dir/X11/keysymdef.h" ++ if test -f "$file"; then ++ KEYSYMDEF="$file" ++ fi ++ ;; ++ esac + ;; + esac +- ;; +- esac +-done +-case "$KEYSYMDEF" in +-"") +- AC_MSG_ERROR([Cannot find keysymdef.h]) +- ;; +-*) ++ done ++fi ++ ++if test -f "$KEYSYMDEF"; then + AC_MSG_RESULT([$KEYSYMDEF]) +- ;; +-esac ++else ++ AC_MSG_ERROR([Cannot find keysymdef.h]) ++fi + AC_SUBST(KEYSYMDEF) + + AC_ARG_ENABLE(udc, diff --git a/recipes/obsolete/xorg/xorg-lib/libx11-1.2/x11_disable_makekeys.patch b/recipes/obsolete/xorg/xorg-lib/libx11-1.2/x11_disable_makekeys.patch new file mode 100644 index 0000000000..9e9e75ea43 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libx11-1.2/x11_disable_makekeys.patch @@ -0,0 +1,23 @@ +--- /tmp/Makefile.am 2009-05-27 22:19:39.000000000 +0200 ++++ libX11-1.2/src/util/Makefile.am 2009-05-27 22:21:31.000000000 +0200 +@@ -1,20 +1 @@ +-# $XdotOrg: lib/X11/src/util/Makefile.am,v 1.4 2006-02-19 02:14:12 jamey Exp $ +- +-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/xorg-lib/libx11-1.3.3+git/dolt-fix.patch b/recipes/obsolete/xorg/xorg-lib/libx11-1.3.3+git/dolt-fix.patch new file mode 100644 index 0000000000..7e96075aa3 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libx11-1.3.3+git/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/xorg-lib/libx11-1.3.3+git/keysymdef_include.patch b/recipes/obsolete/xorg/xorg-lib/libx11-1.3.3+git/keysymdef_include.patch new file mode 100644 index 0000000000..07487b6b2e --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libx11-1.3.3+git/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(keysymdef, ++ AC_HELP_STRING([--with-keysymdef=DIR/keysymdef.h], [The location of keysymdef.h]), ++ KEYSYMDEF=$withval, 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/xorg-lib/libx11-1.3.3+git/x11_disable_makekeys.patch b/recipes/obsolete/xorg/xorg-lib/libx11-1.3.3+git/x11_disable_makekeys.patch new file mode 100644 index 0000000000..0739632daf --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libx11-1.3.3+git/x11_disable_makekeys.patch @@ -0,0 +1,26 @@ +Index: git/src/util/Makefile.am +=================================================================== +--- git.orig/src/util/Makefile.am ++++ git/src/util/Makefile.am +@@ -1,21 +1 @@ +- +-noinst_PROGRAMS=makekeys +- +-makekeys_CFLAGS = \ +- $(X11_CFLAGS) \ +- $(CWARNFLAGS) +- +-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/xorg-lib/libx11-1.3.3/x11_disable_makekeys.patch b/recipes/obsolete/xorg/xorg-lib/libx11-1.3.3/x11_disable_makekeys.patch new file mode 100644 index 0000000000..5d0a24ca2d --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libx11-1.3.3/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/xorg-lib/libx11-1.3.4/dolt-fix.patch b/recipes/obsolete/xorg/xorg-lib/libx11-1.3.4/dolt-fix.patch new file mode 100644 index 0000000000..7e96075aa3 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libx11-1.3.4/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/xorg-lib/libx11-1.3.4/keysymdef_include.patch b/recipes/obsolete/xorg/xorg-lib/libx11-1.3.4/keysymdef_include.patch new file mode 100644 index 0000000000..0cab165f74 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libx11-1.3.4/keysymdef_include.patch @@ -0,0 +1,21 @@ +Index: libX11-1.3.4/configure.ac +=================================================================== +--- libX11-1.3.4.orig/configure.ac ++++ libX11-1.3.4/configure.ac +@@ -355,8 +355,14 @@ AC_CHECK_FUNC(poll, [AC_DEFINE(USE_POLL, + # Find keysymdef.h + # + AC_MSG_CHECKING([keysymdef.h]) +-dir=`$PKG_CONFIG --variable=includedir xproto` +-KEYSYMDEF="$dir/X11/keysymdef.h" ++AC_ARG_WITH(keysymdef, ++ AC_HELP_STRING([--with-keysymdef=DIR/keysymdef.h], [The location of keysymdef.h]), ++ KEYSYMDEF=$withval, 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]) + else diff --git a/recipes/obsolete/xorg/xorg-lib/libx11-1.3.4/x11_disable_makekeys.patch b/recipes/obsolete/xorg/xorg-lib/libx11-1.3.4/x11_disable_makekeys.patch new file mode 100644 index 0000000000..9763313975 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libx11-1.3.4/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/xorg-lib/libx11/ruutf8.patch b/recipes/obsolete/xorg/xorg-lib/libx11/ruutf8.patch new file mode 100644 index 0000000000..0822b30cb8 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libx11/ruutf8.patch @@ -0,0 +1,12 @@ +diff --git a/nls/locale.alias.pre b/nls/locale.alias.pre +index a74ca75..ff5bc3f 100644 +--- a/nls/locale.alias.pre ++++ b/nls/locale.alias.pre +@@ -898,6 +898,7 @@ ru_RU.cp1251: ru_RU.CP1251 + ru_RU.microsoftcp1251: ru_RU.CP1251 + ru_RU.microsoft-cp1251: ru_RU.CP1251 + ru_RU.MICROSOFT-CP1251: ru_RU.CP1251 ++ru_RU.utf8: ru_RU.UTF-8 + #if defined(INCLUDE_ru_SU) + XCOMM ru_SU is redundant now + ru_SU: ru_RU.KOI8-R diff --git a/recipes/obsolete/xorg/xorg-lib/libx11/xchar2b.patch b/recipes/obsolete/xorg/xorg-lib/libx11/xchar2b.patch new file mode 100644 index 0000000000..31da58fa5c --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libx11/xchar2b.patch @@ -0,0 +1,13 @@ +http://www.koka-in.org/~kensyu/zaurus/diary/20030618.html + +--- /tmp/Xlib.h 2006-12-01 14:40:27.000000000 +0100 ++++ libX11-X11R7.1-1.0.1/include/X11/Xlib.h 2006-12-01 14:40:56.948254000 +0100 +@@ -1067,7 +1067,7 @@ + typedef struct { /* normal 16 bit characters are two bytes */ + unsigned char byte1; + unsigned char byte2; +-} XChar2b; ++} __attribute__ ((packed)) XChar2b; + + typedef struct { + XChar2b *chars; /* two byte characters */ diff --git a/recipes/obsolete/xorg/xorg-lib/libx11/xim.patch b/recipes/obsolete/xorg/xorg-lib/libx11/xim.patch new file mode 100644 index 0000000000..0eab197a80 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libx11/xim.patch @@ -0,0 +1,55 @@ +--- libX11-6.2.1/src/X18NCMSstubs.c 2003-12-04 22:47:47.000000000 +0000 ++++ libX11-6.2.1/src/X18NCMSstubs.c-new 2005-12-09 12:09:03.000000000 +0000 +@@ -90,6 +90,52 @@ + return; + } + ++XIM ++XOpenIM ( ++ Display* display, ++ struct _XrmHashBucketRec* rdb, ++ char* res_name, ++ char* res_class) ++{ ++ return (XIM) NULL; ++} ++ ++Status ++XCloseIM ( XIM im ) ++{ ++ return NULL; ++} ++ ++XIC ++XCreateIC ( XIM im, ...) ++{ ++ return NULL; ++} ++ ++void ++XDestroyIC ( XIC ic ) ++{ ++ return; ++} ++ ++int ++XmbLookupString ( ++ XIC ic, ++ XKeyPressedEvent* ev, ++ char* buffer, ++ int nbytes, ++ KeySym* keysym, ++ Status* status) ++{ ++ return XLookupNone; ++} ++ ++char * ++XGetICValues( XIC ic, ...) ++{ ++ return (char *) NULL; ++} ++ + XPointer + _XimGetLocaleCode ( _Xconst char* encoding_name ) + { diff --git a/recipes/obsolete/xorg/xorg-lib/libx11_1.0.1.bb b/recipes/obsolete/xorg/xorg-lib/libx11_1.0.1.bb new file mode 100644 index 0000000000..734a31d028 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libx11_1.0.1.bb @@ -0,0 +1,10 @@ +require libx11.inc +LICENSE = "XFree86" +DEPENDS = "${COMMON_DEPENDS}" +PR = "${INC_PR}.0" + +SRC_URI += " file://ruutf8.patch" +SRC_URI[archive.md5sum] = "58f0537f21183e27149cf906a1b6bef9" +SRC_URI[archive.sha256sum] = "f99e4ce6d8e3b8833957978fe22223897b0e636c83580f2b07eff0388eb75294" + +EXTRA_OECONF += " --without-xcb" diff --git a/recipes/obsolete/xorg/xorg-lib/libx11_1.0.3.bb b/recipes/obsolete/xorg/xorg-lib/libx11_1.0.3.bb new file mode 100644 index 0000000000..40cbeb5b48 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libx11_1.0.3.bb @@ -0,0 +1,10 @@ +require libx11.inc +LICENSE = "XFree86" +DEPENDS = "${COMMON_DEPENDS}" +PR = "${INC_PR}.0" + +SRC_URI += " file://ruutf8.patch" +SRC_URI[archive.md5sum] = "60b787a812c92d33f71860e4e19cb59d" +SRC_URI[archive.sha256sum] = "fb42f2400c3709a0c2c17f27cc4a902c191ebd6228c70698891bf3a13ea5b3ac" + +EXTRA_OECONF += " --without-xcb" diff --git a/recipes/obsolete/xorg/xorg-lib/libx11_1.1.1.bb b/recipes/obsolete/xorg/xorg-lib/libx11_1.1.1.bb new file mode 100644 index 0000000000..368dd7b0fa --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libx11_1.1.1.bb @@ -0,0 +1,9 @@ +require libx11.inc +DEPENDS = "${COMMON_DEPENDS}" +PR = "${INC_PR}.0" + +SRC_URI += " file://ruutf8.patch" +SRC_URI[archive.md5sum] = "848b80f77b20ae1fa5c882bbfa531ebc" +SRC_URI[archive.sha256sum] = "5359db57793430429786b648ac570d4ab205797306e049bf1e8675250af21541" + +EXTRA_OECONF += " --without-xcb" diff --git a/recipes/obsolete/xorg/xorg-lib/libx11_1.1.2.bb b/recipes/obsolete/xorg/xorg-lib/libx11_1.1.2.bb new file mode 100644 index 0000000000..60093c1b6d --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libx11_1.1.2.bb @@ -0,0 +1,8 @@ +require libx11.inc +DEPENDS = "${COMMON_DEPENDS}" +PR = "${INC_PR}.0" + +SRC_URI[archive.md5sum] = "710bf38a9477a5a1b235bc94f1d0593c" +SRC_URI[archive.sha256sum] = "b77e4fd2bbd4092e7e78d0964760ad8ab160caccd4bc6d7d0c87a23febaea85e" + +EXTRA_OECONF += " --without-xcb" diff --git a/recipes/obsolete/xorg/xorg-lib/libx11_1.1.3.bb b/recipes/obsolete/xorg/xorg-lib/libx11_1.1.3.bb new file mode 100644 index 0000000000..d6aa199e7f --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libx11_1.1.3.bb @@ -0,0 +1,8 @@ +require libx11.inc +DEPENDS = "${COMMON_DEPENDS}" +PR = "${INC_PR}.0" + +SRC_URI[archive.md5sum] = "4d43d3e472c552d2f191ecdd4e75112c" +SRC_URI[archive.sha256sum] = "4a2f566e2ea5dd955c875cb8fa9c18dd725324fc5cf4e23c803442e31ab8917a" + +EXTRA_OECONF += " --without-xcb" diff --git a/recipes/obsolete/xorg/xorg-lib/libx11_1.1.4.bb b/recipes/obsolete/xorg/xorg-lib/libx11_1.1.4.bb new file mode 100644 index 0000000000..3eeeece52c --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libx11_1.1.4.bb @@ -0,0 +1,8 @@ +require libx11.inc +DEPENDS = "${COMMON_DEPENDS}" +PR = "${INC_PR}.0" + +SRC_URI[archive.md5sum] = "1469a5a8aa8d288dce6f4c45d2f68dc3" +SRC_URI[archive.sha256sum] = "bdbd6d239435c1736f5c532b12e8078761db8db5f37ab3195fe11c3e5b692c1c" + +EXTRA_OECONF += " --without-xcb" diff --git a/recipes/obsolete/xorg/xorg-lib/libx11_1.2.bb b/recipes/obsolete/xorg/xorg-lib/libx11_1.2.bb new file mode 100644 index 0000000000..0cea5f884c --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libx11_1.2.bb @@ -0,0 +1,9 @@ +require libx11.inc +DEPENDS = "${COMMON_DEPENDS}" +PR = "${INC_PR}.0" + +SRC_URI += " file://dolt-fix.patch" +SRC_URI[archive.md5sum] = "c6265b59ea2b594fd68e33f9125b4d20" +SRC_URI[archive.sha256sum] = "e4863cdf5d471763806e9bcae25ea47606a56cd91a5546a34c093aa3de181051" + +EXTRA_OECONF += " --without-xcb" diff --git a/recipes/obsolete/xorg/xorg-lib/libx11_1.3.3.bb b/recipes/obsolete/xorg/xorg-lib/libx11_1.3.3.bb new file mode 100644 index 0000000000..8c40a99fd9 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libx11_1.3.3.bb @@ -0,0 +1,6 @@ +require libx11.inc +PR = "${INC_PR}.0" + +SRC_URI += " file://dolt-fix.patch" +SRC_URI[archive.md5sum] = "5d74971360f194ce33d2bd2e4d9b066c" +SRC_URI[archive.sha256sum] = "8c7f867918a3739dc7cabe955179539d4a7ecc52cb42becfd261e5dfbff511ac" diff --git a/recipes/obsolete/xorg/xorg-lib/libx11_1.3.4.bb b/recipes/obsolete/xorg/xorg-lib/libx11_1.3.4.bb new file mode 100644 index 0000000000..e55d7201ad --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libx11_1.3.4.bb @@ -0,0 +1,6 @@ +require libx11.inc +PR = "${INC_PR}.0" + +SRC_URI += " file://dolt-fix.patch" +SRC_URI[archive.md5sum] = "f65c9c7ecbfb64c19dbd7927160d63fd" +SRC_URI[archive.sha256sum] = "88d7238ce5f7cd123450567de7a3b56a43556e4ccc45df38b8324147c889a844" diff --git a/recipes/obsolete/xorg/xorg-lib/libx11_git.bb b/recipes/obsolete/xorg/xorg-lib/libx11_git.bb new file mode 100644 index 0000000000..eac68d8ff4 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libx11_git.bb @@ -0,0 +1,14 @@ +require libx11.inc +PV = "1.3.3+git" +PR = "${INC_PR}.0" + +SRC_URI = "git://anongit.freedesktop.org/git/xorg/lib/libX11;protocol=git" +SRC_URI += " file://keysymdef_include.patch \ + file://x11_disable_makekeys.patch \ + file://dolt-fix.patch \ +" + +SRCREV = "c3f3e4a9e531d010312c97e753d6e543e607094d" +S = "${WORKDIR}/git" + +DEFAULT_PREFERENCE = "-1" diff --git a/recipes/obsolete/xorg/xorg-lib/libxau_1.0.3.bb b/recipes/obsolete/xorg/xorg-lib/libxau_1.0.3.bb new file mode 100644 index 0000000000..cd4f79b510 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libxau_1.0.3.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] = "75a9f2b85cd1617b5ca98c9095323853" +SRC_URI[archive.sha256sum] = "d6c30a88770a720e96e0bd7e13e0334f9ef60f1b475a92556764828005c19e3b" + +BBCLASSEXTEND = "native nativesdk" + +XORG_PN = "libXau" diff --git a/recipes/obsolete/xorg/xorg-lib/libxau_1.0.4.bb b/recipes/obsolete/xorg/xorg-lib/libxau_1.0.4.bb new file mode 100644 index 0000000000..293fc63151 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libxau_1.0.4.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] = "0f2b88d857e0a3f5898e4759c541af46" +SRC_URI[archive.sha256sum] = "10d3ffa5f00d0c0a4083309ba68bdfa01dfdf912ef4cf2141e3f260b2edeb22c" + +BBCLASSEXTEND = "native nativesdk" + +XORG_PN = "libXau" diff --git a/recipes/obsolete/xorg/xorg-lib/libxaw_1.0.3.bb b/recipes/obsolete/xorg/xorg-lib/libxaw_1.0.3.bb new file mode 100644 index 0000000000..87ec70e871 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libxaw_1.0.3.bb @@ -0,0 +1,22 @@ +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] = "ee215536ea78798268ab3a444d10135a" +SRC_URI[archive.sha256sum] = "45ca55bdac904a07b8118618c65ddb5bf8826e626c4c927e3c2508c58e231514" + +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}/libXaw6.so.6*" +FILES_libxaw7 = "${libdir}/libXaw7.so.7*" +FILES_libxaw8 = "${libdir}/libXaw8.so.8*" + +XORG_PN = "libXaw" diff --git a/recipes/obsolete/xorg/xorg-lib/libxaw_1.0.4.bb b/recipes/obsolete/xorg/xorg-lib/libxaw_1.0.4.bb new file mode 100644 index 0000000000..2ed715d85b --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libxaw_1.0.4.bb @@ -0,0 +1,22 @@ +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] = "73671d8f1cf36fdd81395328cc3539c9" +SRC_URI[archive.sha256sum] = "11f4ab184fb8dc853fd95238d4de7b251427dd036643d11fd2a669232fa35af9" + +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}/libXaw6.so.6*" +FILES_libxaw7 = "${libdir}/libXaw7.so.7*" +FILES_libxaw8 = "${libdir}/libXaw8.so.8*" + +XORG_PN = "libXaw" diff --git a/recipes/obsolete/xorg/xorg-lib/libxcomposite/change-include-order.patch b/recipes/obsolete/xorg/xorg-lib/libxcomposite/change-include-order.patch new file mode 100644 index 0000000000..630b8818fc --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libxcomposite/change-include-order.patch @@ -0,0 +1,14 @@ +This patch makes the build use its own Xcomposite.h over rather than an +older Xcomposite.h that might already be installed in the staging dir. + +--- libXcomposite-X11R7.0-0.2.2.2/src/Makefile.am.orig 2006-03-12 20:10:17.000000000 +0100 ++++ libXcomposite-X11R7.0-0.2.2.2/src/Makefile.am 2006-03-12 20:10:35.000000000 +0100 +@@ -21,7 +21,7 @@ + # TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + # PERFORMANCE OF THIS SOFTWARE. + +-AM_CFLAGS = $(XCOMPOSITE_CFLAGS) $(XCOMPOSITE_CFLAGS) $(X_CFLAGS) -I$(top_srcdir)/include ++AM_CFLAGS = -I$(top_srcdir)/include $(XCOMPOSITE_CFLAGS) $(XCOMPOSITE_CFLAGS) $(X_CFLAGS) + + lib_LTLIBRARIES = libXcomposite.la + diff --git a/recipes/obsolete/xorg/xorg-lib/libxcomposite_0.3.1.bb b/recipes/obsolete/xorg/xorg-lib/libxcomposite_0.3.1.bb new file mode 100644 index 0000000000..d7f8bebfbb --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libxcomposite_0.3.1.bb @@ -0,0 +1,12 @@ +require xorg-lib-common.inc +DESCRIPTION = "X Composite extension library." +LICENSE = "BSD-X" +DEPENDS += " compositeproto virtual/libx11 libxfixes" +PE = "1" +PR = "${INC_PR}.0" + +SRC_URI += " file://change-include-order.patch" +SRC_URI[archive.md5sum] = "a80650d660486ea7bb2e5fd84a83799a" +SRC_URI[archive.sha256sum] = "d42b59d3c38dae5e4fec375d12e56e7a5764ba10e8b8ec70f9ce951fc9cec72b" + +XORG_PN = "libXcomposite" diff --git a/recipes/obsolete/xorg/xorg-lib/libxcomposite_0.4.0.bb b/recipes/obsolete/xorg/xorg-lib/libxcomposite_0.4.0.bb new file mode 100644 index 0000000000..2dff14aa81 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libxcomposite_0.4.0.bb @@ -0,0 +1,12 @@ +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 += " file://change-include-order.patch" +SRC_URI[archive.md5sum] = "7e95395dea89be21bae929b9b7f16641" +SRC_URI[archive.sha256sum] = "7db759e82dd1f68094e4c4d257025f7893dafb2913ed249e00cbe18fa13c7510" + +XORG_PN = "libXcomposite" diff --git a/recipes/obsolete/xorg/xorg-lib/libxcursor_1.1.8.bb b/recipes/obsolete/xorg/xorg-lib/libxcursor_1.1.8.bb new file mode 100644 index 0000000000..3f175e8653 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libxcursor_1.1.8.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] = "ec2acd10a7736a85dd1e1ed9ea5bec96" +SRC_URI[archive.sha256sum] = "8f039f81af52c88d583fba48b878abd074542221cb0030638ad52336b4ae1377" + +BBCLASSEXTEND = "native" + +XORG_PN = "libXcursor" diff --git a/recipes/obsolete/xorg/xorg-lib/libxcursor_1.1.9.bb b/recipes/obsolete/xorg/xorg-lib/libxcursor_1.1.9.bb new file mode 100644 index 0000000000..2b363a5c07 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libxcursor_1.1.9.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] = "99b7554037a92b260891091e81815a0a" +SRC_URI[archive.sha256sum] = "1dffb3542271c8ce964066d561474caec5b639d6588b257b21cfb8225a15d2b4" + +BBCLASSEXTEND = "native" + +XORG_PN = "libXcursor" diff --git a/recipes/obsolete/xorg/xorg-lib/libxdamage_1.0.4.bb b/recipes/obsolete/xorg/xorg-lib/libxdamage_1.0.4.bb new file mode 100644 index 0000000000..452c634528 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libxdamage_1.0.4.bb @@ -0,0 +1,11 @@ +require xorg-lib-common.inc +DESCRIPTION = "X Damage extension library." +LICENSE = "BSD-X" +DEPENDS += " virtual/libx11 damageproto libxfixes fixesproto xextproto" +PE = "1" +PR = "${INC_PR}.0" + +SRC_URI[archive.md5sum] = "4d0eece7a8372a7754db1de08c2be324" +SRC_URI[archive.sha256sum] = "5df90f0efa77e1d6f9e1768a2b0adfc896d09c7a3d8680ed0980511b3625c636" + +XORG_PN = "libXdamage" diff --git a/recipes/obsolete/xorg/xorg-lib/libxdamage_1.1.1.bb b/recipes/obsolete/xorg/xorg-lib/libxdamage_1.1.1.bb new file mode 100644 index 0000000000..cb7eca1e6e --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libxdamage_1.1.1.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] = "ac0ce6b0063a9858c8f24ddb4c60487d" +SRC_URI[archive.sha256sum] = "0102754db23952a1c3adf7881bbf191f91ca3e3d183e1b0179452bce932fae2e" + +XORG_PN = "libXdamage" diff --git a/recipes/obsolete/xorg/xorg-lib/libxdmcp_1.0.2.bb b/recipes/obsolete/xorg/xorg-lib/libxdmcp_1.0.2.bb new file mode 100644 index 0000000000..1226afbb31 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libxdmcp_1.0.2.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] = "10facf2bc7cbd5e5c1a698b8a210a582" +SRC_URI[archive.sha256sum] = "f3e50c1847599145c22784a2f15818821960652ee91d21d905817fb7c10f96a8" + +BBCLASSEXTEND = "native nativesdk" + +XORG_PN = "libXdmcp" diff --git a/recipes/obsolete/xorg/xorg-lib/libxext_1.0.2.bb b/recipes/obsolete/xorg/xorg-lib/libxext_1.0.2.bb new file mode 100644 index 0000000000..02326de9a2 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libxext_1.0.2.bb @@ -0,0 +1,13 @@ +require xorg-lib-common.inc +DESCRIPTION = "X Server Extension library" +PRIORITY = "optional" +DEPENDS += " xproto virtual/libx11 xextproto libxau" +PE = "1" +PR = "${INC_PR}.0" + +SRC_URI[archive.md5sum] = "cce89c5b941a493512b534f4847c6111" +SRC_URI[archive.sha256sum] = "368e4cf5117febd998e6fc40d096b3af19a571adccc5ed49b9d16e482b3a8f8e" + +BBCLASSEXTEND = "native nativesdk" + +XORG_PN = "libXext" diff --git a/recipes/obsolete/xorg/xorg-lib/libxext_1.0.3.bb b/recipes/obsolete/xorg/xorg-lib/libxext_1.0.3.bb new file mode 100644 index 0000000000..f8d76b4512 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libxext_1.0.3.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] = "1bf6fa1c26f9957d7cc0bd90b038dfa6" +SRC_URI[archive.sha256sum] = "2d706baf206d1cb422c8e0ceb6c5a8546bc3f0587cf090eba51e75a295d9c3f0" + +BBCLASSEXTEND = "native nativesdk" + +XORG_PN = "libXext" diff --git a/recipes/obsolete/xorg/xorg-lib/libxext_1.0.4.bb b/recipes/obsolete/xorg/xorg-lib/libxext_1.0.4.bb new file mode 100644 index 0000000000..1317e5c67e --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libxext_1.0.4.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] = "a91f1f722ac80c597cf0b75dcb8b48c0" +SRC_URI[archive.sha256sum] = "2dfd8eace1cafacc87b4055c57efeb771a740e24141d3f113de58c2a9eebd21f" + +BBCLASSEXTEND = "native nativesdk" + +XORG_PN = "libXext" diff --git a/recipes/obsolete/xorg/xorg-lib/libxext_1.0.5.bb b/recipes/obsolete/xorg/xorg-lib/libxext_1.0.5.bb new file mode 100644 index 0000000000..40dbecea10 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libxext_1.0.5.bb @@ -0,0 +1,12 @@ +require xorg-lib-common.inc +DESCRIPTION = "X11 miscellaneous extension library" +DEPENDS += "xproto virtual/libx11 xextproto libxau libxdmcp" +PE = "1" +PR = "${INC_PR}.0" + +SRC_URI[archive.md5sum] = "aa11d859cc8e9a0bad3bb55e1666547b" +SRC_URI[archive.sha256sum] = "1280af98466cb4484a89858ede3347ba9d7785baeb80b11f2066142dc2317d97" + +BBCLASSEXTEND = "native nativesdk" + +XORG_PN = "libXext" diff --git a/recipes/obsolete/xorg/xorg-lib/libxfixes_4.0.3.bb b/recipes/obsolete/xorg/xorg-lib/libxfixes_4.0.3.bb new file mode 100644 index 0000000000..d5747641c5 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libxfixes_4.0.3.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] = "1990d19725a3c7f32290037f02d3737f" +SRC_URI[archive.sha256sum] = "547e093c5037c4b85ce653ce26f5bd70a97b177f9b582f5351a626d8e0a829dd" + +BBCLASSEXTEND = "native" + +XORG_PN = "libXfixes" diff --git a/recipes/obsolete/xorg/xorg-lib/libxfont/builtinreaddirectory-no-side-effect.patch b/recipes/obsolete/xorg/xorg-lib/libxfont/builtinreaddirectory-no-side-effect.patch new file mode 100644 index 0000000000..dd307434b9 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libxfont/builtinreaddirectory-no-side-effect.patch @@ -0,0 +1,188 @@ +commit 7670d4a2720c61fbc7b989fed14c676f04ac3ad1 +Author: Dodji Seketeli <dodji@openedhand.com> +Date: Mon Jul 16 12:24:34 2007 +0200 + + Remove side effects from BuiltinReadDirectory() + + The first time BuiltinReadDirectory() is called, + save the content of builtin_dir and builtin_alias, + before calling FontFileAddFontFile(), because that fonction + will modify those. + + Then, in subsequent calls to BuiltinReadDirectory(), restore + builtin_dir and builtin_alias so that the side effect incurred + by the first call disappears. + +diff --git a/src/builtins/dir.c b/src/builtins/dir.c +index c272449..97f1e1e 100644 +--- a/src/builtins/dir.c ++++ b/src/builtins/dir.c +@@ -29,6 +29,133 @@ + #endif + #include "builtin.h" + ++BuiltinDirPtr ++BuiltinDirsDup (const BuiltinDirPtr a_dirs, ++ int a_dirs_len) ++{ ++ BuiltinDirPtr dirs=NULL ; ++ int i=0 ; ++ ++ if (!a_dirs) ++ return NULL ; ++ ++ dirs = xcalloc (a_dirs_len, sizeof (BuiltinDirRec)) ; ++ if (!dirs) ++ return NULL ; ++ ++ for (i=0; i < a_dirs_len; i++) { ++ int len = strlen (a_dirs[i].file_name) ; ++ dirs[i].file_name = xcalloc (1, len) ; ++ memmove (dirs[i].file_name, a_dirs[i].file_name, len); ++ len = strlen (a_dirs[i].font_name) ; ++ dirs[i].font_name = xcalloc (1, len) ; ++ memmove (dirs[i].font_name, a_dirs[i].font_name, len); ++ } ++ return dirs ; ++} ++ ++/** ++ * Copy a_save back into a_cur ++ * @param a_cur the instance of BuiltinDir to restore ++ * @param a_saved the saved instance of BuiltinDir to copy into a_cur ++ * @return 0 if went okay, 1 otherwise. ++ */ ++int ++BuiltinDirRestore (BuiltinDirPtr a_cur, ++ const BuiltinDirPtr a_saved) ++{ ++ if (!a_cur) ++ return 1 ; ++ if (!a_saved) ++ return 0 ; ++ ++ if (a_saved->font_name) ++ memmove (a_cur->font_name, a_saved->font_name, strlen (a_saved->font_name)) ; ++ return 0 ; ++} ++ ++ ++int ++BuiltinDirsRestore (BuiltinDirPtr a_cur_tab, ++ const BuiltinDirPtr a_saved_tab, ++ int a_tab_len) ++{ ++ int i=0 ; ++ ++ if (!a_cur_tab) ++ return 1 ; ++ if (!a_saved_tab) ++ return 0 ; ++ ++ for (i=0 ; i < a_tab_len; i++) { ++ if (BuiltinDirRestore (&a_cur_tab[i], &a_saved_tab[i])) ++ return 1 ; ++ } ++ return 0 ; ++} ++ ++BuiltinAliasPtr ++BuiltinAliasesDup (const BuiltinAliasPtr a_aliases, ++ int a_aliases_len) ++{ ++ BuiltinAliasPtr aliases=NULL ; ++ int i=0 ; ++ ++ if (!a_aliases) ++ return NULL ; ++ ++ aliases = xcalloc (a_aliases_len, sizeof (BuiltinAliasRec)) ; ++ if (!aliases) ++ return NULL ; ++ ++ for (i=0; i < a_aliases_len; i++) { ++ int len = strlen (a_aliases[i].font_name) ; ++ aliases[i].font_name = xcalloc (1, len) ; ++ memmove (aliases[i].font_name, a_aliases[i].font_name, len); ++ } ++ return aliases ; ++} ++ ++/** ++ * Copy a_save back into a_cur ++ * @param a_cur the instance of BuiltinAlias to restore ++ * @param a_saved the saved instance of BuiltinAlias to copy into a_cur ++ * @return 0 if went okay, 1 otherwise. ++ */ ++int ++BuiltinAliasRestore (BuiltinAliasPtr a_cur, ++ const BuiltinAliasPtr a_save) ++{ ++ if (!a_cur) ++ return 1 ; ++ if (!a_save) ++ return 0 ; ++ if (a_save->alias_name) ++ memmove (a_cur->alias_name, a_save->alias_name, strlen (a_save->alias_name)) ; ++ if (a_save->font_name) ++ memmove (a_cur->font_name, a_save->font_name, strlen (a_save->font_name)) ; ++ return 0 ; ++} ++ ++int ++BuiltinAliasesRestore (BuiltinAliasPtr a_cur_tab, ++ const BuiltinAliasPtr a_saved_tab, ++ int a_tab_len) ++{ ++ int i=0 ; ++ ++ if (!a_cur_tab) ++ return 1 ; ++ if (!a_saved_tab) ++ return 0 ; ++ ++ for (i=0 ; i < a_tab_len; i++) { ++ if (BuiltinAliasRestore (&a_cur_tab[i], &a_saved_tab[i])) ++ return 1 ; ++ } ++ return 0 ; ++} ++ + int + BuiltinReadDirectory (char *directory, FontDirectoryPtr *pdir) + { +@@ -36,6 +163,34 @@ BuiltinReadDirectory (char *directory, FontDirectoryPtr *pdir) + int i; + + dir = FontFileMakeDir ("", builtin_dir_count); ++ static BuiltinDirPtr saved_builtin_dir ; ++ static BuiltinAliasPtr saved_builtin_alias ; ++ ++ ++ if (saved_builtin_dir) ++ { ++ BuiltinDirsRestore ((BuiltinDirPtr) builtin_dir, ++ saved_builtin_dir, ++ builtin_dir_count) ; ++ } ++ else ++ { ++ saved_builtin_dir = BuiltinDirsDup ((const BuiltinDirPtr) builtin_dir, ++ builtin_dir_count) ; ++ } ++ ++ if (saved_builtin_alias) ++ { ++ BuiltinAliasesRestore ((BuiltinAliasPtr) builtin_alias, ++ saved_builtin_alias, ++ builtin_alias_count) ; ++ } ++ else ++ { ++ saved_builtin_alias = BuiltinAliasesDup ((const BuiltinAliasPtr) builtin_alias, ++ builtin_alias_count) ; ++ } ++ + for (i = 0; i < builtin_dir_count; i++) + { + if (!FontFileAddFontFile (dir, diff --git a/recipes/obsolete/xorg/xorg-lib/libxfont/no-scalable-crash.patch b/recipes/obsolete/xorg/xorg-lib/libxfont/no-scalable-crash.patch new file mode 100644 index 0000000000..90bded6fba --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libxfont/no-scalable-crash.patch @@ -0,0 +1,22 @@ +--- /tmp/fontdir.c 2006-08-01 16:17:22.000000000 +0200 ++++ libXfont-1.2.0/src/fontfile/fontdir.c 2006-08-01 16:20:37.248306000 +0200 +@@ -695,6 +695,11 @@ + */ + if (isscale) + { ++ /* If the fontname says it is scalable, make sure that the ++ * renderer supports OpenScalable and GetInfoScalable. ++ */ ++ if (renderer->OpenScalable && renderer->GetInfoScalable) ++ { + if (vals.values_supplied & SIZE_SPECIFY_MASK) + { + bzero((char *)&zeroVals, sizeof(zeroVals)); +@@ -794,6 +799,7 @@ + bitmap->name.name); + } + } ++ } + } + return TRUE; + } diff --git a/recipes/obsolete/xorg/xorg-lib/libxfont_1.2.7.bb b/recipes/obsolete/xorg/xorg-lib/libxfont_1.2.7.bb new file mode 100644 index 0000000000..b470c8bd99 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libxfont_1.2.7.bb @@ -0,0 +1,15 @@ +require xorg-lib-common.inc +DESCRIPTION = "X font library (used by the X server)." +PRIORITY = "optional" +LICENSE = "BSD-X" +DEPENDS += " freetype fontcacheproto zlib xproto xtrans fontsproto libfontenc" +PE = "1" +PR = "${INC_PR}.0" + +SRC_URI += "file://no-scalable-crash.patch" +SRC_URI[archive.md5sum] = "2f2085310f75900044d9dcd469637d26" +SRC_URI[archive.sha256sum] = "2f8c004c0b914d460e6fd2b48d8b425cf4778d415467fc1f1d938b200462d18b" + +BBCLASSEXTEND = "native" + +XORG_PN = "libXfont" diff --git a/recipes/obsolete/xorg/xorg-lib/libxfont_1.2.8.bb b/recipes/obsolete/xorg/xorg-lib/libxfont_1.2.8.bb new file mode 100644 index 0000000000..3794cf2055 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libxfont_1.2.8.bb @@ -0,0 +1,15 @@ +require xorg-lib-common.inc +DESCRIPTION = "X font library (used by the X server)." +PRIORITY = "optional" +LICENSE = "BSD-X" +DEPENDS += " freetype fontcacheproto zlib xproto xtrans fontsproto libfontenc" +PE = "1" +PR = "${INC_PR}.0" + +SRC_URI += "file://no-scalable-crash.patch" +SRC_URI[archive.md5sum] = "83b8e21f6ee22512a8f72ba51e2d74f6" +SRC_URI[archive.sha256sum] = "374a2ca12f62a4d9f09a17a34765a5289cefa9db7f9f0913e1c3731b4088aad8" + +BBCLASSEXTEND = "native" + +XORG_PN = "libXfont" diff --git a/recipes/obsolete/xorg/xorg-lib/libxfont_1.3.0.bb b/recipes/obsolete/xorg/xorg-lib/libxfont_1.3.0.bb new file mode 100644 index 0000000000..c3c9377867 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libxfont_1.3.0.bb @@ -0,0 +1,15 @@ +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 += "file://no-scalable-crash.patch \ + file://builtinreaddirectory-no-side-effect.patch" +SRC_URI[archive.md5sum] = "d1d3fa170d74b066f1f23ca8574e7c90" +SRC_URI[archive.sha256sum] = "07567b9880f28d1a404389c024a185419bfe81136aef3d9eda52407f34c3d3dd" + +BBCLASSEXTEND = "native" + +XORG_PN = "libXfont" diff --git a/recipes/obsolete/xorg/xorg-lib/libxfont_1.3.1.bb b/recipes/obsolete/xorg/xorg-lib/libxfont_1.3.1.bb new file mode 100644 index 0000000000..671fd58b92 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libxfont_1.3.1.bb @@ -0,0 +1,14 @@ +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 += "file://no-scalable-crash.patch" +SRC_URI[archive.md5sum] = "b2f396b62633819bbdd9748383876e21" +SRC_URI[archive.sha256sum] = "dcfb7dc980a16ad98ac984b98321148864ea8b4637d3dd3773e483a14158a9b1" + +BBCLASSEXTEND = "native" + +XORG_PN = "libXfont" diff --git a/recipes/obsolete/xorg/xorg-lib/libxfont_1.3.2.bb b/recipes/obsolete/xorg/xorg-lib/libxfont_1.3.2.bb new file mode 100644 index 0000000000..250433aa77 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libxfont_1.3.2.bb @@ -0,0 +1,14 @@ +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 += "file://no-scalable-crash.patch" +SRC_URI[archive.md5sum] = "64f510ebf9679f3a97a3d633cbee4f50" +SRC_URI[archive.sha256sum] = "c167cfd529b7c67f496ee0bed3c0b43e0107de0f689d387c1c0e23ef7cf3d2f2" + +BBCLASSEXTEND = "native" + +XORG_PN = "libXfont" diff --git a/recipes/obsolete/xorg/xorg-lib/libxfont_1.3.3.bb b/recipes/obsolete/xorg/xorg-lib/libxfont_1.3.3.bb new file mode 100644 index 0000000000..65b5415068 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libxfont_1.3.3.bb @@ -0,0 +1,13 @@ +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] = "4f174b9613f87cf00d731da428a1b194" +SRC_URI[archive.sha256sum] = "6171e6bca4bd6333611bd9c63cccc8e8e412d876c72097f0dddc490a9df51d5a" + +BBCLASSEXTEND = "native" + +XORG_PN = "libXfont" diff --git a/recipes/obsolete/xorg/xorg-lib/libxfontcache_1.0.4.bb b/recipes/obsolete/xorg/xorg-lib/libxfontcache_1.0.4.bb new file mode 100644 index 0000000000..f4a079e8c8 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libxfontcache_1.0.4.bb @@ -0,0 +1,10 @@ +require xorg-lib-common.inc +DESCRIPTION = "X-TrueType font cache extension client library" +DEPENDS += "libxext fontcacheproto" +PE = "1" +PR = "${INC_PR}.0" + +SRC_URI[archive.md5sum] = "1adca018aa7bf2d215f20a69c10828ad" +SRC_URI[archive.sha256sum] = "ffe747cfbf81cdd862af1b05d021ad1ab83b623eab5b32b0a618efb4c0f3e01c" + +XORG_PN = "libXfontcache" diff --git a/recipes/obsolete/xorg/xorg-lib/libxft_2.1.12.bb b/recipes/obsolete/xorg/xorg-lib/libxft_2.1.12.bb new file mode 100644 index 0000000000..14beef3991 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libxft_2.1.12.bb @@ -0,0 +1,21 @@ +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[archive.md5sum] = "1309301e2d979bd475dc58325cb8c056" +SRC_URI[archive.sha256sum] = "68b46f85caaf0b30c876bd983abe144c25755bee7532e8738ab7ebe29a428986" + +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/xorg-lib/libxft_2.1.13.bb b/recipes/obsolete/xorg/xorg-lib/libxft_2.1.13.bb new file mode 100644 index 0000000000..a2219c94a4 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libxft_2.1.13.bb @@ -0,0 +1,21 @@ +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[archive.md5sum] = "bc8881851f3bd8dcc625fac37350a1c6" +SRC_URI[archive.sha256sum] = "ce7688258af34c14af421bcfb306d4310245b727d2417ac968b7f6b2facfde8c" + +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/xorg-lib/libxi_1.0.2.bb b/recipes/obsolete/xorg/xorg-lib/libxi_1.0.2.bb new file mode 100644 index 0000000000..12e49f036b --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libxi_1.0.2.bb @@ -0,0 +1,10 @@ +require xorg-lib-common.inc +DESCRIPTION = "X Input extension library." +DEPENDS += " xproto virtual/libx11 xextproto libxext inputproto" +PE = "1" +PR = "${INC_PR}.0" + +SRC_URI[archive.md5sum] = "4a5207a29a6b220e5462129854689844" +SRC_URI[archive.sha256sum] = "7e6339539d3d0a4fc95cc23ca2b13ae67dd783e011b3cc5ca76040e376bff57f" + +XORG_PN = "libXi" diff --git a/recipes/obsolete/xorg/xorg-lib/libxi_1.1.0.bb b/recipes/obsolete/xorg/xorg-lib/libxi_1.1.0.bb new file mode 100644 index 0000000000..3ad5dfc1ac --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libxi_1.1.0.bb @@ -0,0 +1,10 @@ +require xorg-lib-common.inc +DESCRIPTION = "X Input extension library." +DEPENDS += " xproto virtual/libx11 xextproto libxext inputproto" +PE = "1" +PR = "${INC_PR}.0" + +SRC_URI[archive.md5sum] = "c25abbe604029855eb11a3a75fb1f386" +SRC_URI[archive.sha256sum] = "0f90d7e27d8a7d6bccf9350b6283ffe122e5347fa51d4ea9055653b297339989" + +XORG_PN = "libXi" diff --git a/recipes/obsolete/xorg/xorg-lib/libxi_1.1.2.bb b/recipes/obsolete/xorg/xorg-lib/libxi_1.1.2.bb new file mode 100644 index 0000000000..bff8ba47fe --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libxi_1.1.2.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] = "9c4dd85f3e2a75bfb60bd288502bc288" +SRC_URI[archive.sha256sum] = "4deda13613f03e4524d3cf0ac14b9e20be5044d415cb8478713ecbe47f4de862" + +XORG_PN = "libXi" diff --git a/recipes/obsolete/xorg/xorg-lib/libxi_1.1.3.bb b/recipes/obsolete/xorg/xorg-lib/libxi_1.1.3.bb new file mode 100644 index 0000000000..039bfc8d8b --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libxi_1.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] = "7c510abb0cad8dc20493fb27ff7859d8" +SRC_URI[archive.sha256sum] = "c77a5bbe97d0d0a6493adefcf1bd57aca91bc33279633b3f6cf1d2bb8812153f" + +XORG_PN = "libXi" diff --git a/recipes/obsolete/xorg/xorg-lib/libxi_1.2.0.bb b/recipes/obsolete/xorg/xorg-lib/libxi_1.2.0.bb new file mode 100644 index 0000000000..e6b3da7868 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libxi_1.2.0.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] = "4b88e07d7dd77ca1e786f09066b58c02" +SRC_URI[archive.sha256sum] = "7c0125ffb864e121ebfb5a20b1cfdff60562c2f2dfbb4e77c5eac81f36e15f3a" + +XORG_PN = "libXi" diff --git a/recipes/obsolete/xorg/xorg-lib/libxinerama_1.0.2.bb b/recipes/obsolete/xorg/xorg-lib/libxinerama_1.0.2.bb new file mode 100644 index 0000000000..786c294f77 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libxinerama_1.0.2.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] = "f6fb08eafd3c2909d515f1a07bfca8fd" +SRC_URI[archive.sha256sum] = "d245d7ae4c766ecbc4e5cc2666e2e78198d8386dbaa06b35c3d1b1457ee5d03d" + +XORG_PN = "libXinerama" diff --git a/recipes/obsolete/xorg/xorg-lib/libxinerama_1.0.3.bb b/recipes/obsolete/xorg/xorg-lib/libxinerama_1.0.3.bb new file mode 100644 index 0000000000..4e7cc916de --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libxinerama_1.0.3.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] = "cd9f7c46439ac40e0517a302d2434d2c" +SRC_URI[archive.sha256sum] = "07b3564cd56154c20580b56230b7a95d74fe6582c80cedf0550d8d7955181219" + +XORG_PN = "libXinerama" diff --git a/recipes/obsolete/xorg/xorg-lib/libxkbfile_1.0.4.bb b/recipes/obsolete/xorg/xorg-lib/libxkbfile_1.0.4.bb new file mode 100644 index 0000000000..d02cec5892 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libxkbfile_1.0.4.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] = "12b4ceb5d42b520228b5fb40a96ae6c5" +SRC_URI[archive.sha256sum] = "468ade4eaa3951a7c34b6ae1c290ab1a1d364ee36c5c455ef0df15550825b8ae" + +BBCLASSEXTEND = "native" diff --git a/recipes/obsolete/xorg/xorg-lib/libxkbfile_1.0.5.bb b/recipes/obsolete/xorg/xorg-lib/libxkbfile_1.0.5.bb new file mode 100644 index 0000000000..60d3a1b86b --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libxkbfile_1.0.5.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] = "0726a845fe5a56551de2718c9f6b0e35" +SRC_URI[archive.sha256sum] = "0ab628271fc9cb6d05f861d9823573088d81d510aca95b87ac0504b2e558965f" + +BBCLASSEXTEND = "native" diff --git a/recipes/obsolete/xorg/xorg-lib/libxmu_1.0.3.bb b/recipes/obsolete/xorg/xorg-lib/libxmu_1.0.3.bb new file mode 100644 index 0000000000..b5bc535bf4 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libxmu_1.0.3.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] = "b926b95b811ece3e19cd590db85ee615" +SRC_URI[archive.sha256sum] = "b56e308e36da8d9cb48433ddb81fd04e26b4f1c695586ac8106ac48a35466d66" + +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/xorg-lib/libxmu_1.0.4.bb b/recipes/obsolete/xorg/xorg-lib/libxmu_1.0.4.bb new file mode 100644 index 0000000000..7ebe4c818c --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libxmu_1.0.4.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] = "fb372a5f3ab42b5ba16d7af4d833a0cb" +SRC_URI[archive.sha256sum] = "f83c00d6ed8f4c08effa9dcc2d7f1ff6f5a753f2b9fe1babda16618c2afa18f0" + +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/xorg-lib/libxpm_3.5.6.bb b/recipes/obsolete/xorg/xorg-lib/libxpm_3.5.6.bb new file mode 100644 index 0000000000..977f0155c0 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libxpm_3.5.6.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] = "37b7d1826c6a02107269632a93b8791f" +SRC_URI[archive.sha256sum] = "2d5c5242b8417db6aa758e5be387de33385d9960ff21c801af7d6a4730b4fd0d" + +PACKAGES =+ "sxpm cxpm" + +FILES_cxpm = "${bindir}/cxpm" +FILES_sxpm = "${bindir}/sxpm" + +XORG_PN = "libXpm" diff --git a/recipes/obsolete/xorg/xorg-lib/libxpm_3.5.7.bb b/recipes/obsolete/xorg/xorg-lib/libxpm_3.5.7.bb new file mode 100644 index 0000000000..b8ed813029 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libxpm_3.5.7.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] = "cd15ee542d9f515538b4462a6f79d977" +SRC_URI[archive.sha256sum] = "64701ae67ce5b0797307b75d8255bec3a0d371d0c50715ea618f5a68bcc92baa" + +PACKAGES =+ "sxpm cxpm" + +FILES_cxpm = "${bindir}/cxpm" +FILES_sxpm = "${bindir}/sxpm" + +XORG_PN = "libXpm" diff --git a/recipes/obsolete/xorg/xorg-lib/libxrandr_1.1.2.bb b/recipes/obsolete/xorg/xorg-lib/libxrandr_1.1.2.bb new file mode 100644 index 0000000000..4fb614c1ac --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libxrandr_1.1.2.bb @@ -0,0 +1,13 @@ +require xorg-lib-common.inc +DESCRIPTION = "X Resize and Rotate extension library." +LICENSE = "BSD-X" +DEPENDS += " virtual/libx11 randrproto libxext xextproto libxrender renderproto" +PE = "1" +PR = "${INC_PR}.0" + +SRC_URI[archive.md5sum] = "962946952a01650bb43206043a3c0e12" +SRC_URI[archive.sha256sum] = "ba5adedc37da835a5c9e5a5d457dce13feead64fc364bc4719c41720ca0a3c50" + +BBCLASSEXTEND = "nativesdk" + +XORG_PN = "libXrandr" diff --git a/recipes/obsolete/xorg/xorg-lib/libxrandr_1.2.2.bb b/recipes/obsolete/xorg/xorg-lib/libxrandr_1.2.2.bb new file mode 100644 index 0000000000..2038f8aab0 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libxrandr_1.2.2.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] = "1b244b5d19f0ccab01d7083436cd3558" +SRC_URI[archive.sha256sum] = "206f8dc850f12b1213fb73dbef09fafa1bb8fb8c3ddfe4d39721c1e2dec12a98" + +BBCLASSEXTEND = "nativesdk" + +XORG_PN = "libXrandr" diff --git a/recipes/obsolete/xorg/xorg-lib/libxrandr_1.2.3.bb b/recipes/obsolete/xorg/xorg-lib/libxrandr_1.2.3.bb new file mode 100644 index 0000000000..22ab29de78 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libxrandr_1.2.3.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] = "5cd67cc02a50c9644ba0a1846ea3b08e" +SRC_URI[archive.sha256sum] = "f8edfe26b8c4c3677a3a949f81a8b09a5fad62972020bfd230401e11cc0ed267" + +BBCLASSEXTEND = "nativesdk" + +XORG_PN = "libXrandr" diff --git a/recipes/obsolete/xorg/xorg-lib/libxrender_0.9.2.bb b/recipes/obsolete/xorg/xorg-lib/libxrender_0.9.2.bb new file mode 100644 index 0000000000..c67495ae41 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libxrender_0.9.2.bb @@ -0,0 +1,13 @@ +require xorg-lib-common.inc +DESCRIPTION = "X11 Rendering Extension client library" +LICENSE = "BSD-X" +DEPENDS += "virtual/libx11 renderproto xproto" +PE = "1" +PR = "${INC_PR}.0" + +SRC_URI[archive.md5sum] = "2f1b2c6e8dcbcb6d760e59f445abd92c" +SRC_URI[archive.sha256sum] = "0f749183ab1a0ece14d33c3299b3f70893122349c0bfa9d7bd0e66ce19d1802a" + +BBCLASSEXTEND = "native nativesdk" + +XORG_PN = "libXrender" diff --git a/recipes/obsolete/xorg/xorg-lib/libxrender_0.9.3.bb b/recipes/obsolete/xorg/xorg-lib/libxrender_0.9.3.bb new file mode 100644 index 0000000000..82b0143000 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libxrender_0.9.3.bb @@ -0,0 +1,13 @@ +require xorg-lib-common.inc +DESCRIPTION = "X11 Rendering Extension client library" +LICENSE = "BSD-X" +DEPENDS += "virtual/libx11 renderproto xproto" +PE = "1" +PR = "${INC_PR}.0" + +SRC_URI[archive.md5sum] = "307132fce2e551ad2c641bddf8480f16" +SRC_URI[archive.sha256sum] = "9882ba2d74e9ca5cfd0c2231ac8eba14d8fc59d538c787fa639f8d77c996bbef" + +BBCLASSEXTEND = "native nativesdk" + +XORG_PN = "libXrender" diff --git a/recipes/obsolete/xorg/xorg-lib/libxrender_0.9.4.bb b/recipes/obsolete/xorg/xorg-lib/libxrender_0.9.4.bb new file mode 100644 index 0000000000..4543a9ed80 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libxrender_0.9.4.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] = "dc266e850c51368f964e0d67bf5fb5e6" +SRC_URI[archive.sha256sum] = "5682d343dd4e7ef291a6577e956c331946ce5801d8fa076284a01b41de3017ec" + +BBCLASSEXTEND = "native nativesdk" + +XORG_PN = "libXrender" diff --git a/recipes/obsolete/xorg/xorg-lib/libxres_1.0.3.bb b/recipes/obsolete/xorg/xorg-lib/libxres_1.0.3.bb new file mode 100644 index 0000000000..9a1aa01c78 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libxres_1.0.3.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] = "de66ffb657aba64c9d6dbdeabb757f3e" +SRC_URI[archive.sha256sum] = "a6d5ba7573f5ec0f091095f01b51d1e671dd0f14acb5b8559cdf366e398a0230" + +XORG_PN = "libXres" diff --git a/recipes/obsolete/xorg/xorg-lib/libxscrnsaver_1.1.2.bb b/recipes/obsolete/xorg/xorg-lib/libxscrnsaver_1.1.2.bb new file mode 100644 index 0000000000..db164d229a --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libxscrnsaver_1.1.2.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] = "ac2d697dd02f51e5c15f7104f4be5328" +SRC_URI[archive.sha256sum] = "6c75debca746060e0c2408a6ca119613ae02d1054adebd4b26ff8beee79bcc67" + +RREPLACES_${PN} = "libxss" + +XORG_PN = "libXScrnSaver" diff --git a/recipes/obsolete/xorg/xorg-lib/libxscrnsaver_1.1.3.bb b/recipes/obsolete/xorg/xorg-lib/libxscrnsaver_1.1.3.bb new file mode 100644 index 0000000000..2cc2c81ee2 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libxscrnsaver_1.1.3.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] = "93f84b6797f2f29cae1ce23b0355d00d" +SRC_URI[archive.sha256sum] = "4b90245093c15a24aaaf2fc6e09f075137aad994f72043e098597997d9b2c988" + +RREPLACES_${PN} = "libxss" + +XORG_PN = "libXScrnSaver" diff --git a/recipes/obsolete/xorg/xorg-lib/libxt/pr10970-header-fix.patch b/recipes/obsolete/xorg/xorg-lib/libxt/pr10970-header-fix.patch new file mode 100644 index 0000000000..2acafb8b34 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libxt/pr10970-header-fix.patch @@ -0,0 +1,512 @@ +diff --git a/include/X11/CallbackI.h b/include/X11/CallbackI.h +index 4ae08ab..64e8152 100644 +--- a/include/X11/CallbackI.h ++++ b/include/X11/CallbackI.h +@@ -58,6 +58,8 @@ typedef XrmResource **CallbackTable; + #define _XtCBCalling 1 + #define _XtCBFreeAfterCalling 2 + ++_XFUNCPROTOBEGIN ++ + typedef struct internalCallbackRec { + unsigned short count; + char is_padded; /* contains NULL padding for external form */ +@@ -115,3 +117,5 @@ extern void _XtCallConditionalCallbackList( + XtPointer /* call_data */, + _XtConditionProc /* cond_proc */ + ); ++ ++_XFUNCPROTOEND +diff --git a/include/X11/CompositeP.h b/include/X11/CompositeP.h +index ed055b2..e93275a 100644 +--- a/include/X11/CompositeP.h ++++ b/include/X11/CompositeP.h +@@ -52,6 +52,8 @@ SOFTWARE. + + #include <X11/Composite.h> + ++_XFUNCPROTOBEGIN ++ + /************************************************************************ + * + * Additional instance fields for widgets of (sub)class 'Composite' +@@ -101,6 +103,8 @@ typedef struct _CompositeClassRec { + + externalref CompositeClassRec compositeClassRec; + ++_XFUNCPROTOEND ++ + #define XtCompositeExtensionVersion 2L + #define XtInheritGeometryManager ((XtGeometryHandler) _XtInherit) + #define XtInheritChangeManaged ((XtWidgetProc) _XtInherit) +diff --git a/include/X11/ConstrainP.h b/include/X11/ConstrainP.h +index a90d19a..7030a34 100644 +--- a/include/X11/ConstrainP.h ++++ b/include/X11/ConstrainP.h +@@ -52,6 +52,8 @@ SOFTWARE. + + #include <X11/Constraint.h> + ++_XFUNCPROTOBEGIN ++ + typedef struct _ConstraintPart { + XtPointer mumble; /* No new fields, keep C compiler happy */ + } ConstraintPart; +@@ -88,6 +90,8 @@ typedef struct _ConstraintClassRec { + + externalref ConstraintClassRec constraintClassRec; + ++_XFUNCPROTOEND ++ + #define XtConstraintExtensionVersion 1L + + #endif /* _XtConstraintP_h */ +diff --git a/include/X11/Constraint.h b/include/X11/Constraint.h +index 9bb962e..b8bd902 100644 +--- a/include/X11/Constraint.h ++++ b/include/X11/Constraint.h +@@ -50,11 +50,15 @@ SOFTWARE. + #ifndef _XtConstraint_h + #define _XtConstraint_h + ++_XFUNCPROTOBEGIN ++ + typedef struct _ConstraintClassRec *ConstraintWidgetClass; + + #ifndef CONSTRAINT + externalref WidgetClass constraintWidgetClass; + #endif + ++_XFUNCPROTOEND ++ + #endif /* _XtConstraint_h */ + /* DON'T ADD STUFF AFTER THIS #endif */ +diff --git a/include/X11/ConvertI.h b/include/X11/ConvertI.h +index 02c0e5c..f3f7fb0 100644 +--- a/include/X11/ConvertI.h ++++ b/include/X11/ConvertI.h +@@ -48,6 +48,8 @@ SOFTWARE. + ******************************************************************/ + /* $XFree86: xc/lib/Xt/ConvertI.h,v 1.3 2001/12/14 19:56:09 dawes Exp $ */ + ++_XFUNCPROTOBEGIN ++ + /* Representation types */ + + extern XrmQuark _XtQString; +@@ -94,3 +96,4 @@ extern Boolean _XtConvert( + + void _XtConvertInitialize(void); + ++_XFUNCPROTOEND +diff --git a/include/X11/Core.h b/include/X11/Core.h +index ff6cb75..e1a7c28 100644 +--- a/include/X11/Core.h ++++ b/include/X11/Core.h +@@ -53,6 +53,8 @@ SOFTWARE. + #ifndef _XtCore_h + #define _XtCore_h + ++_XFUNCPROTOBEGIN ++ + typedef struct _WidgetClassRec *CoreWidgetClass; + typedef struct _WidgetRec *CoreWidget; + externalref WidgetClass coreWidgetClass; +@@ -62,5 +64,7 @@ externalref WidgetClass widgetClass; + + #endif + ++_XFUNCPROTOEND ++ + #endif /* _XtCore_h */ + /* DON'T ADD STUFF AFTER THIS #endif */ +diff --git a/include/X11/CoreP.h b/include/X11/CoreP.h +index e07f085..57836e6 100644 +--- a/include/X11/CoreP.h ++++ b/include/X11/CoreP.h +@@ -55,6 +55,8 @@ SOFTWARE. + + #include <X11/Core.h> + ++_XFUNCPROTOBEGIN ++ + externalref int _XtInheritTranslations; + + #define XtInheritTranslations ((String) &_XtInheritTranslations) +@@ -167,5 +169,7 @@ typedef struct _WidgetClassRec { + externalref WidgetClassRec widgetClassRec; + #define coreClassRec widgetClassRec + ++_XFUNCPROTOEND ++ + #endif /* _XtCoreP_h */ + /* DON'T ADD STUFF AFTER THIS #endif */ +diff --git a/include/X11/CreateI.h b/include/X11/CreateI.h +index 87abb1d..e0ca9a3 100644 +--- a/include/X11/CreateI.h ++++ b/include/X11/CreateI.h +@@ -3,6 +3,8 @@ + #ifndef _XtcreateI_h + #define _XtcreateI_h + ++_XFUNCPROTOBEGIN ++ + extern Widget _XtCreateWidget(String name, WidgetClass widget_class, + Widget parent, ArgList args, Cardinal num_args, + XtTypedArgList typed_args, +@@ -18,9 +20,12 @@ extern Widget _XtAppCreateShell(String name, String class, + Cardinal num_typed_args); + extern Widget _XtCreateHookObj(Screen *screen); + ++_XFUNCPROTOEND + + #include <stdarg.h> + ++_XFUNCPROTOBEGIN ++ + /* VarCreate.c */ + extern Widget _XtVaOpenApplication(XtAppContext *app_context_return, + _Xconst char* application_class, +@@ -34,4 +39,6 @@ extern Widget _XtVaAppInitialize(XtAppContext *app_context_return, + int *argc_in_out, String *argv_in_out, + String *fallback_resources, va_list var_args); + ++_XFUNCPROTOEND ++ + #endif /* _XtcreateI_h */ +diff --git a/include/X11/EventI.h b/include/X11/EventI.h +index 00858e7..d2d1d0f 100644 +--- a/include/X11/EventI.h ++++ b/include/X11/EventI.h +@@ -65,6 +65,8 @@ typedef struct _XtGrabRec *XtGrabList; + + #include "PassivGraI.h" + ++_XFUNCPROTOBEGIN ++ + extern void _XtEventInitialize( + void + ); +@@ -131,4 +133,6 @@ extern void _XtFillAncestorList(Widget **listPtr, int *maxElemsPtr, + /* NextEvent.c */ + extern Boolean XtAppPeekEvent_SkipTimer; + ++_XFUNCPROTOEND ++ + #endif /* _Event_h_ */ +diff --git a/include/X11/HookObjI.h b/include/X11/HookObjI.h +index c9a22a2..c0858c2 100644 +--- a/include/X11/HookObjI.h ++++ b/include/X11/HookObjI.h +@@ -29,6 +29,8 @@ in this Software without prior written authorization from The Open Group. + #ifndef _XtHookObjI_h + #define _XtHookObjI_h + ++_XFUNCPROTOBEGIN ++ + /* This object is implementation-dependent and private to the library. */ + + typedef struct _HookObjRec *HookObject; +@@ -66,6 +68,8 @@ typedef struct _HookObjClassRec { + + externalref HookObjClassRec hookObjClassRec; + ++_XFUNCPROTOEND ++ + #endif /* ifndef _Xt_HookObjI_h */ + + +diff --git a/include/X11/InitialI.h b/include/X11/InitialI.h +index c2fe47c..2ae9b74 100644 +--- a/include/X11/InitialI.h ++++ b/include/X11/InitialI.h +@@ -84,6 +84,8 @@ SOFTWARE. + #include <X11/Xos.h> + #include <X11/Xpoll.h> + ++_XFUNCPROTOBEGIN ++ + typedef struct _TimerEventRec { + struct timeval te_timer_value; + struct _TimerEventRec *te_next; +@@ -426,4 +428,6 @@ extern XrmDatabase _XtPreparseCommandLine(XrmOptionDescRec *urlist, + String *applName, String *displayName, + String *language); + ++_XFUNCPROTOEND ++ + #endif /* _XtinitialI_h */ +diff --git a/include/X11/IntrinsicI.h b/include/X11/IntrinsicI.h +index d749867..d88166f 100644 +--- a/include/X11/IntrinsicI.h ++++ b/include/X11/IntrinsicI.h +@@ -194,6 +194,8 @@ SOFTWARE. + #define ERRORDB "/usr/lib/X11/XtErrorDB" + #endif + ++_XFUNCPROTOBEGIN ++ + extern String XtCXtToolkitError; + + extern void _XtAllocError( +@@ -257,5 +259,7 @@ extern char* __XtCalloc ( + #define __XtCalloc XtCalloc + #endif + ++_XFUNCPROTOEND ++ + #endif /* _XtintrinsicI_h */ + /* DON'T ADD STUFF AFTER THIS #endif */ +diff --git a/include/X11/Object.h b/include/X11/Object.h +index 96723b1..2c84aaf 100644 +--- a/include/X11/Object.h ++++ b/include/X11/Object.h +@@ -50,11 +50,16 @@ SOFTWARE. + #ifndef _XtObject_h + #define _XtObject_h + ++_XFUNCPROTOBEGIN ++ + typedef struct _ObjectRec *Object; + typedef struct _ObjectClassRec *ObjectClass; + + #ifndef OBJECT + externalref WidgetClass objectClass; + #endif ++ ++_XFUNCPROTOEND ++ + #endif /* _XtObject_h */ + /* DON'T ADD STUFF AFTER THIS #endif */ +diff --git a/include/X11/ObjectP.h b/include/X11/ObjectP.h +index a24564e..0f484d2 100644 +--- a/include/X11/ObjectP.h ++++ b/include/X11/ObjectP.h +@@ -52,6 +52,8 @@ SOFTWARE. + + #include <X11/Object.h> + ++_XFUNCPROTOBEGIN ++ + /********************************************************** + * Object Instance Data Structures + * +@@ -132,6 +134,8 @@ typedef struct _ObjectClassRec { + + externalref ObjectClassRec objectClassRec; + ++_XFUNCPROTOEND ++ + #define XtObjectExtensionVersion 1L + #define XtInheritAllocate ((XtAllocateProc) _XtInherit) + #define XtInheritDeallocate ((XtDeallocateProc) _XtInherit) +diff --git a/include/X11/PassivGraI.h b/include/X11/PassivGraI.h +index 02e2964..10591ac 100644 +--- a/include/X11/PassivGraI.h ++++ b/include/X11/PassivGraI.h +@@ -60,6 +60,8 @@ in this Software without prior written authorization from The Open Group. + #define KEYBOARD TRUE + #define POINTER FALSE + ++_XFUNCPROTOBEGIN ++ + typedef enum { + XtNoServerGrab, + XtPassiveServerGrab, +@@ -183,4 +185,6 @@ extern void _XtClearAncestorCache( + Widget /* widget */ + ); + ++_XFUNCPROTOEND ++ + #endif /* _PDI_h_ */ +diff --git a/include/X11/RectObj.h b/include/X11/RectObj.h +index 07615fa..dced5c3 100644 +--- a/include/X11/RectObj.h ++++ b/include/X11/RectObj.h +@@ -50,11 +50,16 @@ SOFTWARE. + #ifndef _XtRect_h + #define _XtRect_h + ++_XFUNCPROTOBEGIN ++ + typedef struct _RectObjRec *RectObj; + typedef struct _RectObjClassRec *RectObjClass; + + #ifndef RECTOBJ + externalref WidgetClass rectObjClass; + #endif ++ ++_XFUNCPROTOEND ++ + #endif /* _XtRect_h */ + /* DON'T ADD STUFF AFTER THIS #endif */ +diff --git a/include/X11/RectObjP.h b/include/X11/RectObjP.h +index ca3b8ad..d6ffb78 100644 +--- a/include/X11/RectObjP.h ++++ b/include/X11/RectObjP.h +@@ -53,6 +53,8 @@ SOFTWARE. + #include <X11/RectObj.h> + #include <X11/ObjectP.h> + ++_XFUNCPROTOBEGIN ++ + /********************************************************** + * Rectangle Object Instance Data Structures + * +@@ -126,4 +128,6 @@ typedef struct _RectObjClassRec { + + externalref RectObjClassRec rectObjClassRec; + ++_XFUNCPROTOEND ++ + #endif /*_Xt_RectObjP_h_*/ +diff --git a/include/X11/ResourceI.h b/include/X11/ResourceI.h +index d6ed1df..3db97f8 100644 +--- a/include/X11/ResourceI.h ++++ b/include/X11/ResourceI.h +@@ -61,6 +61,8 @@ SOFTWARE. + #define StringToName(string) XrmStringToName(string) + #define StringToClass(string) XrmStringToClass(string) + ++_XFUNCPROTOBEGIN ++ + extern void _XtDependencies( + XtResourceList * /* class_resp */, + Cardinal * /* class_num_resp */, +@@ -96,5 +98,6 @@ extern XrmResourceList* _XtCreateIndirectionTable(XtResourceList resources, + Cardinal num_resources); + extern void _XtResourceListInitialize(void); + ++_XFUNCPROTOEND + + #endif /* _XtresourceI_h */ +diff --git a/include/X11/ShellP.h b/include/X11/ShellP.h +index 2b08c3f..7297d33 100644 +--- a/include/X11/ShellP.h ++++ b/include/X11/ShellP.h +@@ -67,6 +67,8 @@ SOFTWARE. + * ***** + */ + ++_XFUNCPROTOBEGIN ++ + /*********************************************************************** + * + * Shell Widget Private Data +@@ -214,8 +216,12 @@ typedef struct { + WMShellPart wm; + } WMShellRec, *WMShellWidget; + ++_XFUNCPROTOEND ++ + #include <X11/VendorP.h> + ++_XFUNCPROTOBEGIN ++ + /*********************************************************************** + * + * TransientShell Widget Private Data +@@ -425,4 +431,6 @@ typedef struct { + SessionShellPart session; + } SessionShellRec, *SessionShellWidget; + ++_XFUNCPROTOEND ++ + #endif /* _XtShellPrivate_h */ +diff --git a/include/X11/ThreadsI.h b/include/X11/ThreadsI.h +index 1492d77..28cbc98 100644 +--- a/include/X11/ThreadsI.h ++++ b/include/X11/ThreadsI.h +@@ -81,6 +81,8 @@ typedef void (*ThreadAppRestoreLockProc)( + Boolean* /* pushed_thread */ + ); + ++_XFUNCPROTOBEGIN ++ + extern void (*_XtProcessLock)( + void + ); +@@ -93,6 +95,8 @@ extern void (*_XtInitAppLock)( + XtAppContext /* app */ + ); + ++_XFUNCPROTOEND ++ + #define INIT_APP_LOCK(app) if(_XtInitAppLock) (*_XtInitAppLock)(app) + #define FREE_APP_LOCK(app) if(app && app->free_lock)(*app->free_lock)(app) + +diff --git a/include/X11/TranslateI.h b/include/X11/TranslateI.h +index 1224875..6cc3099 100644 +--- a/include/X11/TranslateI.h ++++ b/include/X11/TranslateI.h +@@ -342,6 +342,8 @@ typedef struct _TMGlobalRec{ + #endif /* TRACE_TM */ + }TMGlobalRec; + ++_XFUNCPROTOBEGIN ++ + extern TMGlobalRec _XtGlobalTM; + + #define TM_MOD_SEGMENT_SIZE 16 +@@ -604,3 +606,4 @@ extern void _XtUnmergeTranslations( + /* TMKey.c */ + extern void _XtAllocTMContext(XtPerDisplay pd); + ++_XFUNCPROTOEND +diff --git a/include/X11/VarargsI.h b/include/X11/VarargsI.h +index e15404a..76ce9bc 100644 +--- a/include/X11/VarargsI.h ++++ b/include/X11/VarargsI.h +@@ -34,6 +34,8 @@ in this Software without prior written authorization from The Open Group. + + /* private routines */ + ++_XFUNCPROTOBEGIN ++ + extern void _XtCountVaList( + va_list /*var*/, int* /*total_count*/, int* /*typed_count*/ + ); +@@ -62,4 +64,6 @@ extern void _XtGetSubresources( + Widget /*w*/, XtPointer /*base*/, const char* /*name*/, const char* /*class*/, XtResourceList /*resources*/, Cardinal /*num_resources*/, ArgList /*args*/, Cardinal /*num_args*/, XtTypedArgList /*typed_args*/, Cardinal /*num_typed_args*/ + ); + ++_XFUNCPROTOEND ++ + #endif /* _VarargsI_h_ */ +diff --git a/include/X11/Vendor.h b/include/X11/Vendor.h +index 65e7c38..633d17a 100644 +--- a/include/X11/Vendor.h ++++ b/include/X11/Vendor.h +@@ -65,7 +65,11 @@ SOFTWARE. + + typedef struct _VendorShellClassRec *VendorShellWidgetClass; + ++_XFUNCPROTOBEGIN ++ + externalref WidgetClass vendorShellWidgetClass; + ++_XFUNCPROTOEND ++ + #endif /* _XtVendor_h */ + /* DON'T ADD STUFF AFTER THIS #endif */ +diff --git a/include/X11/VendorP.h b/include/X11/VendorP.h +index 08bf689..e60857d 100644 +--- a/include/X11/VendorP.h ++++ b/include/X11/VendorP.h +@@ -72,6 +72,8 @@ SOFTWARE. + + /* New fields for the VendorShell widget class record */ + ++_XFUNCPROTOBEGIN ++ + typedef struct { + XtPointer extension; /* pointer to extension record */ + } VendorShellClassPart; +@@ -100,4 +102,6 @@ typedef struct { + VendorShellPart vendor; + } VendorShellRec, *VendorShellWidget; + ++_XFUNCPROTOEND ++ + #endif /* _XtVendorPrivate_h */ diff --git a/recipes/obsolete/xorg/xorg-lib/libxt_1.0.4.bb b/recipes/obsolete/xorg/xorg-lib/libxt_1.0.4.bb new file mode 100644 index 0000000000..7dd98632ae --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libxt_1.0.4.bb @@ -0,0 +1,24 @@ +require xorg-lib-common.inc +DESCRIPTION = "X Toolkit Intrinsics" +PRIORITY = "optional" +DEPENDS += " libsm virtual/libx11 xproto kbproto" +PE = "1" +PR = "${INC_PR}.0" + +SRC_URI += "file://pr10970-header-fix.patch" +SRC_URI[archive.md5sum] = "937735f342c046db239852fec0413f6c" +SRC_URI[archive.sha256sum] = "ec7088b2ffe8f56c177525283601fb048decaf6f175d9ee5db01e12810a4d345" + +EXTRA_OECONF = "--enable-malloc0returnsnull --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 ${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/xorg-lib/libxt_1.0.5.bb b/recipes/obsolete/xorg/xorg-lib/libxt_1.0.5.bb new file mode 100644 index 0000000000..7bdf252071 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libxt_1.0.5.bb @@ -0,0 +1,23 @@ +require xorg-lib-common.inc +DESCRIPTION = "X11 toolkit intrinsics library" +DEPENDS += "libsm virtual/libx11 kbproto" +PE = "1" +PR = "${INC_PR}.0" + +SRC_URI += "file://pr10970-header-fix.patch" +SRC_URI[archive.md5sum] = "f3bdd67785ace8cd0b23249e9d8c9975" +SRC_URI[archive.sha256sum] = "43c472ada59a04428a463225cd4cd42cb81bc43eb687cc1890f2f1c81a3e9cf4" + +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/xorg-lib/libxtst_1.0.2.bb b/recipes/obsolete/xorg/xorg-lib/libxtst_1.0.2.bb new file mode 100644 index 0000000000..ff87f7ce65 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libxtst_1.0.2.bb @@ -0,0 +1,10 @@ +require xorg-lib-common.inc +DESCRIPTION = "X Test Extension: client side library" +DEPENDS += "libxext recordproto inputproto" +PE = "1" +PR = "${INC_PR}.0" + +SRC_URI[archive.md5sum] = "032d5c1d3914fc0224837328c88aef96" +SRC_URI[archive.sha256sum] = "eef98ad3d35254384c3714cd63826fc2009f9b394f2b489718aba9be7be0a10b" + +XORG_PN = "libXtst" diff --git a/recipes/obsolete/xorg/xorg-lib/libxtst_1.0.3.bb b/recipes/obsolete/xorg/xorg-lib/libxtst_1.0.3.bb new file mode 100644 index 0000000000..56dfae5f95 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libxtst_1.0.3.bb @@ -0,0 +1,10 @@ +require xorg-lib-common.inc +DESCRIPTION = "X Test Extension: client side library" +DEPENDS += "libxext recordproto inputproto" +PE = "1" +PR = "${INC_PR}.0" + +SRC_URI[archive.md5sum] = "090c1ad04e34982eada5cf3b1a0792fd" +SRC_URI[archive.sha256sum] = "b4a8dd3d9ceb04cd7322c1f7e5d2320d6ccf85ba8c81d736fd6d6c83c658c905" + +XORG_PN = "libXtst" diff --git a/recipes/obsolete/xorg/xorg-lib/libxv_1.0.3.bb b/recipes/obsolete/xorg/xorg-lib/libxv_1.0.3.bb new file mode 100644 index 0000000000..4f19126589 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libxv_1.0.3.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] = "f1c4109fa804aeaf7188b66c5cdd9f57" +SRC_URI[archive.sha256sum] = "f87ae65be39a3c26dc3c87159d9126daf2af1b8c5e7f2ffc38b9f72b9236261b" + +XORG_PN = "libXv" diff --git a/recipes/obsolete/xorg/xorg-lib/libxv_1.0.4.bb b/recipes/obsolete/xorg/xorg-lib/libxv_1.0.4.bb new file mode 100644 index 0000000000..be5a50c495 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libxv_1.0.4.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] = "723a0275227165383e967a1ca8899b52" +SRC_URI[archive.sha256sum] = "4d3cc49b6f4da6d396196054eca23a91df1a41001c736dcfd22fec5a5c7428c8" + +XORG_PN = "libXv" diff --git a/recipes/obsolete/xorg/xorg-lib/libxvmc/drm.patch b/recipes/obsolete/xorg/xorg-lib/libxvmc/drm.patch new file mode 100644 index 0000000000..d48cdb3d0b --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libxvmc/drm.patch @@ -0,0 +1,9 @@ +--- XvMC/hw/via/Makefile.am.old 2005-03-06 11:25:11.000000000 +0000 ++++ XvMC/hw/via/Makefile.am 2005-03-06 11:25:22.000000000 +0000 +@@ -1,5 +1,5 @@ + AM_CFLAGS = $(XVMC_CFLAGS) +-libviaXvMC_la_LIBADD = $(XVMC_LIBS) -lxf86drm ++libviaXvMC_la_LIBADD = $(XVMC_LIBS) -ldrm + + lib_LTLIBRARIES = libviaXvMC.la + diff --git a/recipes/obsolete/xorg/xorg-lib/libxvmc/true.patch b/recipes/obsolete/xorg/xorg-lib/libxvmc/true.patch new file mode 100644 index 0000000000..7059295007 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libxvmc/true.patch @@ -0,0 +1,11 @@ +--- XvMC/hw/via/viaXvMC.c.old 2004-10-18 20:54:49.000000000 +0100 ++++ XvMC/hw/via/viaXvMC.c 2004-10-18 20:55:03.000000000 +0100 +@@ -43,6 +43,8 @@ + #include <xf86drm.h> + #include <pthread.h> + #include "vldXvMC.h" ++ ++#define TRUE 1 + + #define SAREAPTR(ctx) ((ViaXvMCSAreaPriv *) \ + (((CARD8 *)(ctx)->sAreaAddress) + \ diff --git a/recipes/obsolete/xorg/xorg-lib/libxvmc/via.patch b/recipes/obsolete/xorg/xorg-lib/libxvmc/via.patch new file mode 100644 index 0000000000..21cdfbdd6b --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libxvmc/via.patch @@ -0,0 +1,23 @@ +--- XvMC/configure.ac.old 2004-09-18 13:16:31.000000000 +0100 ++++ XvMC/configure.ac 2004-09-18 13:16:32.000000000 +0100 +@@ -14,4 +14,5 @@ + AC_OUTPUT([Makefile + hw/Makefile + hw/i810/Makefile ++ hw/via/Makefile + xvmc.pc]) +--- /dev/null 2004-06-13 02:32:19.000000000 +0100 ++++ XvMC/hw/via/Makefile.am 2004-09-18 13:16:01.000000000 +0100 +@@ -0,0 +1,7 @@ ++AM_CFLAGS = $(XVMC_CFLAGS) ++libviaXvMC_la_LIBADD = $(XVMC_LIBS) -lxf86drm ++ ++lib_LTLIBRARIES = libviaXvMC.la ++ ++libviaXvMC_la_SOURCES = viaXvMC.c viaXvMC.h viaLowLevel.c viaLowLevel.h \ ++ viaXvMCPriv.h +--- XvMC/hw/Makefile.am.old 2004-10-17 22:34:27.000000000 +0100 ++++ XvMC/hw/Makefile.am 2004-10-17 22:34:31.000000000 +0100 +@@ -1 +1 @@ +-SUBDIRS = i810 ++SUBDIRS = i810 via diff --git a/recipes/obsolete/xorg/xorg-lib/libxvmc_1.0.4.bb b/recipes/obsolete/xorg/xorg-lib/libxvmc_1.0.4.bb new file mode 100644 index 0000000000..003c5bec1a --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libxvmc_1.0.4.bb @@ -0,0 +1,10 @@ +require xorg-lib-common.inc +DESCRIPTION = "X Video Motion Compensation extension library" +DEPENDS += "libxext libxv videoproto" +PE = "1" +PR = "${INC_PR}.0" + +SRC_URI[archive.md5sum] = "b54600573daf9d1a29b952e8d35b389e" +SRC_URI[archive.sha256sum] = "1217825ba8d66198466ee8306d0d6d237d2dd80d0f0783c98701296791833abb" + +XORG_PN = "libXvMC" diff --git a/recipes/obsolete/xorg/xorg-lib/libxvmc_1.0.5.bb b/recipes/obsolete/xorg/xorg-lib/libxvmc_1.0.5.bb new file mode 100644 index 0000000000..cdd965a3fa --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libxvmc_1.0.5.bb @@ -0,0 +1,10 @@ +require xorg-lib-common.inc +DESCRIPTION = "X Video Motion Compensation extension library" +DEPENDS += "libxext libxv videoproto" +PE = "1" +PR = "${INC_PR}.0" + +SRC_URI[archive.md5sum] = "16c3a11add14979beb7510e44623cac6" +SRC_URI[archive.sha256sum] = "0644c768d28343af0efe0cb09fc9e0220b8ad755642bb498a3038cee328fde7f" + +XORG_PN = "libXvMC" diff --git a/recipes/obsolete/xorg/xorg-lib/libxxf86dga_1.0.1.bb b/recipes/obsolete/xorg/xorg-lib/libxxf86dga_1.0.1.bb new file mode 100644 index 0000000000..6d51967057 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libxxf86dga_1.0.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] = "5b0e752c71a23e9d1290cad44a7c7c75" +SRC_URI[archive.sha256sum] = "8c68f429942b1258cff0fb27505645a463690374ecf318ae660ff4cde7a03db9" + +XORG_PN = "libXxf86dga" diff --git a/recipes/obsolete/xorg/xorg-lib/libxxf86dga_1.0.2.bb b/recipes/obsolete/xorg/xorg-lib/libxxf86dga_1.0.2.bb new file mode 100644 index 0000000000..b3115379b3 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libxxf86dga_1.0.2.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] = "6f5f621804ee652b6cc6f2025c517c78" +SRC_URI[archive.sha256sum] = "59175230a00a1fb359148f36eadb50fc6cb080849379ccb0e43c6cbb97309a25" + +XORG_PN = "libXxf86dga" diff --git a/recipes/obsolete/xorg/xorg-lib/libxxf86misc_1.0.1.bb b/recipes/obsolete/xorg/xorg-lib/libxxf86misc_1.0.1.bb new file mode 100644 index 0000000000..91a7123af4 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libxxf86misc_1.0.1.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] = "7cee0df63903cef7f7a3fb68cdd99eef" +SRC_URI[archive.sha256sum] = "2122d67d49aaa06eeaeb3db173ea8a7048f3b52665e5135874bc5cadada91289" + +XORG_PN = "libXxf86misc" diff --git a/recipes/obsolete/xorg/xorg-lib/libxxf86vm_1.0.1.bb b/recipes/obsolete/xorg/xorg-lib/libxxf86vm_1.0.1.bb new file mode 100644 index 0000000000..b13707ceb0 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libxxf86vm_1.0.1.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] = "8de1ca6c55aaad7d8cae19b4f0b3da32" +SRC_URI[archive.sha256sum] = "e08fc2c1611c422f751ed02810491b45bf7faa4207d762a11f11815263c9285a" + +XORG_PN = "libXxf86vm" diff --git a/recipes/obsolete/xorg/xorg-lib/libxxf86vm_1.0.2.bb b/recipes/obsolete/xorg/xorg-lib/libxxf86vm_1.0.2.bb new file mode 100644 index 0000000000..e6933624be --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/libxxf86vm_1.0.2.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] = "304d37bd0a10d9b58aa9b64469ad73e5" +SRC_URI[archive.sha256sum] = "3cb3c3c6552a4fbc686ba6c2dbeb6e4ba2a27103279908831d56363de73951de" + +XORG_PN = "libXxf86vm" diff --git a/recipes/obsolete/xorg/xorg-lib/pixman-0.17.8/0003-Generic-C-implementation-of-pixman_blt-with-overlapp.patch b/recipes/obsolete/xorg/xorg-lib/pixman-0.17.8/0003-Generic-C-implementation-of-pixman_blt-with-overlapp.patch new file mode 100644 index 0000000000..25ce7ee3b8 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/pixman-0.17.8/0003-Generic-C-implementation-of-pixman_blt-with-overlapp.patch @@ -0,0 +1,114 @@ +From c29c9fa826b7112156fd6150b5f1564227935c05 Mon Sep 17 00:00:00 2001 +From: Siarhei Siamashka <siarhei.siamashka@nokia.com> +Date: Thu, 22 Oct 2009 05:27:33 +0300 +Subject: [PATCH 3/6] 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 c96a3f9..d71a299 100644 +--- a/pixman/pixman-general.c ++++ b/pixman/pixman-general.c +@@ -300,9 +300,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 5000f91..8c5d4fd 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 "pixman-compiler.h" +@@ -794,4 +795,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.2.4 + diff --git a/recipes/obsolete/xorg/xorg-lib/pixman-0.17.8/0004-Support-of-overlapping-src-dst-for-pixman_blt_mmx.patch b/recipes/obsolete/xorg/xorg-lib/pixman-0.17.8/0004-Support-of-overlapping-src-dst-for-pixman_blt_mmx.patch new file mode 100644 index 0000000000..74c7b45bc4 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/pixman-0.17.8/0004-Support-of-overlapping-src-dst-for-pixman_blt_mmx.patch @@ -0,0 +1,91 @@ +From 7ca32542c957ff308a6ca7e3715e6552a65ae395 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 4/6] 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 819e3a0..dcccadb 100644 +--- a/pixman/pixman-mmx.c ++++ b/pixman/pixman-mmx.c +@@ -3002,34 +3002,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--) +@@ -3039,7 +3048,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.2.4 + diff --git a/recipes/obsolete/xorg/xorg-lib/pixman-0.17.8/0005-Support-of-overlapping-src-dst-for-pixman_blt_sse2.patch b/recipes/obsolete/xorg/xorg-lib/pixman-0.17.8/0005-Support-of-overlapping-src-dst-for-pixman_blt_sse2.patch new file mode 100644 index 0000000000..3704fbf1cf --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/pixman-0.17.8/0005-Support-of-overlapping-src-dst-for-pixman_blt_sse2.patch @@ -0,0 +1,91 @@ +From edc80b41c6480b7c80ec5f7c835c92b2debb3774 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 5/6] 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 78b0ad1..b84636b 100644 +--- a/pixman/pixman-sse2.c ++++ b/pixman/pixman-sse2.c +@@ -5300,34 +5300,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); +@@ -5340,7 +5349,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.2.4 + diff --git a/recipes/obsolete/xorg/xorg-lib/pixman-0.17.8/0006-Support-of-overlapping-src-dst-for-pixman_blt_neon.patch b/recipes/obsolete/xorg/xorg-lib/pixman-0.17.8/0006-Support-of-overlapping-src-dst-for-pixman_blt_neon.patch new file mode 100644 index 0000000000..7c22483a2e --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/pixman-0.17.8/0006-Support-of-overlapping-src-dst-for-pixman_blt_neon.patch @@ -0,0 +1,94 @@ +From 86870ff530b5e435034bd80207e5758466d96cff 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 6/6] Support of overlapping src/dst for pixman_blt_neon + +--- + pixman/pixman-arm-neon.c | 63 ++++++++++++++++++++++++++++++++++++++------- + 1 files changed, 53 insertions(+), 10 deletions(-) + +diff --git a/pixman/pixman-arm-neon.c b/pixman/pixman-arm-neon.c +index 495fda4..c632ff5 100644 +--- a/pixman/pixman-arm-neon.c ++++ b/pixman/pixman-arm-neon.c +@@ -357,26 +357,66 @@ + 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.2.4 + diff --git a/recipes/obsolete/xorg/xorg-lib/pixman-0.17.8/1-composite.patch b/recipes/obsolete/xorg/xorg-lib/pixman-0.17.8/1-composite.patch new file mode 100644 index 0000000000..31bfa39cc4 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/pixman-0.17.8/1-composite.patch @@ -0,0 +1,161 @@ +From 78652135f48c6a304fc2e75bc0e440b8b2034a4d Mon Sep 17 00:00:00 2001 +From: Siarhei Siamashka <siarhei.siamashka@nokia.com> +Date: Tue, 23 Feb 2010 23:44:00 +0000 +Subject: ARM: added 'neon_composite_over_n_8888_8888_ca' fast path + +This fast path function improves performance of 'firefox-talos-gfx' +cairo-perf trace. + +Benchmark from ARM Cortex-A8 @720MHz + +before: + +[ # ] backend test min(s) median(s) stddev. count +[ 0] image firefox-talos-gfx 139.969 141.176 0.35% 6/6 + +after: + +[ # ] backend test min(s) median(s) stddev. count +[ 0] image firefox-talos-gfx 111.810 112.196 0.23% 6/6 +--- +diff --git a/pixman/pixman-arm-neon-asm.S b/pixman/pixman-arm-neon-asm.S +index 2986884..e90d662 100644 +--- a/pixman/pixman-arm-neon-asm.S ++++ b/pixman/pixman-arm-neon-asm.S +@@ -1026,6 +1026,111 @@ generate_composite_function \ + + /******************************************************************************/ + ++.macro pixman_composite_over_n_8888_8888_ca_process_pixblock_head ++ /* ++ * 'combine_mask_ca' replacement ++ * ++ * input: solid src (n) in {d8, d9, d10, d11} ++ * dest in {d4, d5, d6, d7 } ++ * mask in {d24, d25, d26, d27} ++ * output: updated src in {d0, d1, d2, d3 } ++ * updated mask in {d24, d25, d26, d3 } ++ */ ++ vmull.u8 q0, d24, d8 ++ vmull.u8 q1, d25, d9 ++ vmull.u8 q6, d26, d10 ++ vmull.u8 q7, d27, d11 ++ vmull.u8 q9, d11, d25 ++ vmull.u8 q12, d11, d24 ++ vmull.u8 q13, d11, d26 ++ vrshr.u16 q8, q0, #8 ++ vrshr.u16 q10, q1, #8 ++ vrshr.u16 q11, q6, #8 ++ vraddhn.u16 d0, q0, q8 ++ vraddhn.u16 d1, q1, q10 ++ vraddhn.u16 d2, q6, q11 ++ vrshr.u16 q11, q12, #8 ++ vrshr.u16 q8, q9, #8 ++ vrshr.u16 q6, q13, #8 ++ vrshr.u16 q10, q7, #8 ++ vraddhn.u16 d24, q12, q11 ++ vraddhn.u16 d25, q9, q8 ++ vraddhn.u16 d26, q13, q6 ++ vraddhn.u16 d3, q7, q10 ++ /* ++ * 'combine_over_ca' replacement ++ * ++ * output: updated dest in {d28, d29, d30, d31} ++ */ ++ vmvn.8 d24, d24 ++ vmvn.8 d25, d25 ++ vmull.u8 q8, d24, d4 ++ vmull.u8 q9, d25, d5 ++ vmvn.8 d26, d26 ++ vmvn.8 d27, d3 ++ vmull.u8 q10, d26, d6 ++ vmull.u8 q11, d27, d7 ++.endm ++ ++.macro pixman_composite_over_n_8888_8888_ca_process_pixblock_tail ++ /* ... continue 'combine_over_ca' replacement */ ++ vrshr.u16 q14, q8, #8 ++ vrshr.u16 q15, q9, #8 ++ vrshr.u16 q6, q10, #8 ++ vrshr.u16 q7, q11, #8 ++ vraddhn.u16 d28, q14, q8 ++ vraddhn.u16 d29, q15, q9 ++ vraddhn.u16 d30, q6, q10 ++ vraddhn.u16 d31, q7, q11 ++ vqadd.u8 q14, q0, q14 ++ vqadd.u8 q15, q1, q15 ++.endm ++ ++.macro pixman_composite_over_n_8888_8888_ca_process_pixblock_tail_head ++ vrshr.u16 q14, q8, #8 ++ vrshr.u16 q15, q9, #8 ++ vld4.8 {d4, d5, d6, d7}, [DST_R, :128]! ++ vrshr.u16 q6, q10, #8 ++ vrshr.u16 q7, q11, #8 ++ vraddhn.u16 d28, q14, q8 ++ vraddhn.u16 d29, q15, q9 ++ vraddhn.u16 d30, q6, q10 ++ vraddhn.u16 d31, q7, q11 ++ vld4.8 {d24, d25, d26, d27}, [MASK]! ++ vqadd.u8 q14, q0, q14 ++ vqadd.u8 q15, q1, q15 ++ cache_preload 8, 8 ++ pixman_composite_over_n_8888_8888_ca_process_pixblock_head ++ vst4.8 {d28, d29, d30, d31}, [DST_W, :128]! ++.endm ++ ++.macro pixman_composite_over_n_8888_8888_ca_init ++ add DUMMY, sp, #ARGS_STACK_OFFSET ++ vpush {d8-d15} ++ vld1.32 {d11[0]}, [DUMMY] ++ vdup.8 d8, d11[0] ++ vdup.8 d9, d11[1] ++ vdup.8 d10, d11[2] ++ vdup.8 d11, d11[3] ++.endm ++ ++.macro pixman_composite_over_n_8888_8888_ca_cleanup ++ vpop {d8-d15} ++.endm ++ ++generate_composite_function \ ++ pixman_composite_over_n_8888_8888_ca_asm_neon, 0, 32, 32, \ ++ FLAG_DST_READWRITE | FLAG_DEINTERLEAVE_32BPP, \ ++ 8, /* number of pixels, processed in a single block */ \ ++ 5, /* prefetch distance */ \ ++ pixman_composite_over_n_8888_8888_ca_init, \ ++ pixman_composite_over_n_8888_8888_ca_cleanup, \ ++ pixman_composite_over_n_8888_8888_ca_process_pixblock_head, \ ++ pixman_composite_over_n_8888_8888_ca_process_pixblock_tail, \ ++ pixman_composite_over_n_8888_8888_ca_process_pixblock_tail_head ++ ++/******************************************************************************/ ++ + .macro pixman_composite_add_n_8_8_process_pixblock_head + /* expecting source data in {d8, d9, d10, d11} */ + /* d8 - blue, d9 - green, d10 - red, d11 - alpha */ +diff --git a/pixman/pixman-arm-neon.c b/pixman/pixman-arm-neon.c +index 557301e..3f0e18e 100644 +--- a/pixman/pixman-arm-neon.c ++++ b/pixman/pixman-arm-neon.c +@@ -269,6 +269,7 @@ BIND_SRC_NULL_DST(over_8888_8888, uint32_t, 1, uint32_t, 1) + + BIND_N_MASK_DST(over_n_8_0565, uint8_t, 1, uint16_t, 1) + BIND_N_MASK_DST(over_n_8_8888, uint8_t, 1, uint32_t, 1) ++BIND_N_MASK_DST(over_n_8888_8888_ca, uint32_t, 1, uint32_t, 1) + BIND_N_MASK_DST(add_n_8_8, uint8_t, 1, uint8_t, 1) + + BIND_SRC_N_DST(over_8888_n_8888, uint32_t, 1, uint32_t, 1) +@@ -412,6 +413,10 @@ static const pixman_fast_path_t arm_neon_fast_paths[] = + PIXMAN_STD_FAST_PATH (OVER, solid, null, r5g6b5, neon_composite_over_n_0565), + PIXMAN_STD_FAST_PATH (OVER, solid, null, a8r8g8b8, neon_composite_over_n_8888), + PIXMAN_STD_FAST_PATH (OVER, solid, null, x8r8g8b8, neon_composite_over_n_8888), ++ PIXMAN_STD_FAST_PATH_CA (OVER, solid, a8r8g8b8, a8r8g8b8, neon_composite_over_n_8888_8888_ca), ++ PIXMAN_STD_FAST_PATH_CA (OVER, solid, a8r8g8b8, x8r8g8b8, neon_composite_over_n_8888_8888_ca), ++ PIXMAN_STD_FAST_PATH_CA (OVER, solid, a8b8g8r8, a8b8g8r8, neon_composite_over_n_8888_8888_ca), ++ PIXMAN_STD_FAST_PATH_CA (OVER, solid, a8b8g8r8, x8b8g8r8, neon_composite_over_n_8888_8888_ca), + PIXMAN_STD_FAST_PATH (OVER, a8r8g8b8, solid, a8r8g8b8, neon_composite_over_8888_n_8888), + PIXMAN_STD_FAST_PATH (OVER, a8r8g8b8, solid, x8r8g8b8, neon_composite_over_8888_n_8888), + PIXMAN_STD_FAST_PATH (OVER, a8r8g8b8, a8, a8r8g8b8, neon_composite_over_8888_8_8888), +-- +cgit v0.8.3-6-g21f6 diff --git a/recipes/obsolete/xorg/xorg-lib/pixman-0.17.8/2-composite.patch b/recipes/obsolete/xorg/xorg-lib/pixman-0.17.8/2-composite.patch new file mode 100644 index 0000000000..84d4d9c961 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/pixman-0.17.8/2-composite.patch @@ -0,0 +1,102 @@ +From 6e0df74dbfca26f92a18d968e1bf410bae134c8a Mon Sep 17 00:00:00 2001 +From: Siarhei Siamashka <siarhei.siamashka@nokia.com> +Date: Wed, 24 Feb 2010 00:26:57 +0000 +Subject: ARM: added 'neon_composite_src_x888_8888' fast path + +This fast path function improves performance of 'gnome-system-monitor' +cairo-perf trace. + +Benchmark from ARM Cortex-A8 @720MHz + +before: + +[ # ] backend test min(s) median(s) stddev. count +[ 0] image gnome-system-monitor 68.838 68.899 0.05% 5/6 + +after: + +[ # ] backend test min(s) median(s) stddev. count +[ 0] image gnome-system-monitor 53.336 53.384 0.09% 6/6 +--- +diff --git a/pixman/pixman-arm-neon-asm.S b/pixman/pixman-arm-neon-asm.S +index e90d662..f2643de 100644 +--- a/pixman/pixman-arm-neon-asm.S ++++ b/pixman/pixman-arm-neon-asm.S +@@ -947,6 +947,44 @@ generate_composite_function \ + + /******************************************************************************/ + ++.macro pixman_composite_src_x888_8888_process_pixblock_head ++ vorr q0, q0, q2 ++ vorr q1, q1, q2 ++.endm ++ ++.macro pixman_composite_src_x888_8888_process_pixblock_tail ++.endm ++ ++.macro pixman_composite_src_x888_8888_process_pixblock_tail_head ++ vst1.32 {d0, d1, d2, d3}, [DST_W, :128]! ++ vld1.32 {d0, d1, d2, d3}, [SRC]! ++ vorr q0, q0, q2 ++ vorr q1, q1, q2 ++ cache_preload 8, 8 ++.endm ++ ++.macro pixman_composite_src_x888_8888_init ++ vmov.u8 q2, #0xFF ++ vshl.u32 q2, q2, #24 ++.endm ++ ++generate_composite_function \ ++ pixman_composite_src_x888_8888_asm_neon, 32, 0, 32, \ ++ FLAG_DST_WRITEONLY, \ ++ 8, /* number of pixels, processed in a single block */ \ ++ 10, /* prefetch distance */ \ ++ pixman_composite_src_x888_8888_init, \ ++ default_cleanup, \ ++ pixman_composite_src_x888_8888_process_pixblock_head, \ ++ pixman_composite_src_x888_8888_process_pixblock_tail, \ ++ pixman_composite_src_x888_8888_process_pixblock_tail_head, \ ++ 0, /* dst_w_basereg */ \ ++ 0, /* dst_r_basereg */ \ ++ 0, /* src_basereg */ \ ++ 0 /* mask_basereg */ ++ ++/******************************************************************************/ ++ + .macro pixman_composite_over_n_8_8888_process_pixblock_head + /* expecting deinterleaved source data in {d8, d9, d10, d11} */ + /* d8 - blue, d9 - green, d10 - red, d11 - alpha */ +diff --git a/pixman/pixman-arm-neon.c b/pixman/pixman-arm-neon.c +index 3f0e18e..0a7ac31 100644 +--- a/pixman/pixman-arm-neon.c ++++ b/pixman/pixman-arm-neon.c +@@ -251,6 +251,7 @@ neon_composite_##name (pixman_implementation_t *imp, \ + + + BIND_SRC_NULL_DST(src_8888_8888, uint32_t, 1, uint32_t, 1) ++BIND_SRC_NULL_DST(src_x888_8888, uint32_t, 1, uint32_t, 1) + BIND_SRC_NULL_DST(src_0565_0565, uint16_t, 1, uint16_t, 1) + BIND_SRC_NULL_DST(src_0888_0888, uint8_t, 3, uint8_t, 3) + BIND_SRC_NULL_DST(src_8888_0565, uint32_t, 1, uint16_t, 1) +@@ -400,6 +401,10 @@ static const pixman_fast_path_t arm_neon_fast_paths[] = + PIXMAN_STD_FAST_PATH (SRC, x8r8g8b8, null, x8r8g8b8, neon_composite_src_8888_8888), + PIXMAN_STD_FAST_PATH (SRC, a8b8g8r8, null, x8b8g8r8, neon_composite_src_8888_8888), + PIXMAN_STD_FAST_PATH (SRC, x8b8g8r8, null, x8b8g8r8, neon_composite_src_8888_8888), ++ PIXMAN_STD_FAST_PATH (SRC, a8r8g8b8, null, a8r8g8b8, neon_composite_src_8888_8888), ++ PIXMAN_STD_FAST_PATH (SRC, a8b8g8r8, null, a8b8g8r8, neon_composite_src_8888_8888), ++ PIXMAN_STD_FAST_PATH (SRC, x8r8g8b8, null, a8r8g8b8, neon_composite_src_x888_8888), ++ PIXMAN_STD_FAST_PATH (SRC, x8b8g8r8, null, a8b8g8r8, neon_composite_src_x888_8888), + PIXMAN_STD_FAST_PATH (SRC, r8g8b8, null, r8g8b8, neon_composite_src_0888_0888), + PIXMAN_STD_FAST_PATH (SRC, b8g8r8, null, x8r8g8b8, neon_composite_src_0888_8888_rev), + PIXMAN_STD_FAST_PATH (SRC, b8g8r8, null, r5g6b5, neon_composite_src_0888_0565_rev), +@@ -430,6 +435,7 @@ static const pixman_fast_path_t arm_neon_fast_paths[] = + PIXMAN_STD_FAST_PATH (OVER, a8r8g8b8, null, x8r8g8b8, neon_composite_over_8888_8888), + PIXMAN_STD_FAST_PATH (OVER, a8b8g8r8, null, a8b8g8r8, neon_composite_over_8888_8888), + PIXMAN_STD_FAST_PATH (OVER, a8b8g8r8, null, x8b8g8r8, neon_composite_over_8888_8888), ++ PIXMAN_STD_FAST_PATH (OVER, x8r8g8b8, null, a8r8g8b8, neon_composite_src_x888_8888), + PIXMAN_STD_FAST_PATH (ADD, solid, a8, a8, neon_composite_add_n_8_8), + PIXMAN_STD_FAST_PATH (ADD, a8, a8, a8, neon_composite_add_8_8_8), + PIXMAN_STD_FAST_PATH (ADD, a8r8g8b8, a8r8g8b8, a8r8g8b8, neon_composite_add_8888_8888_8888), +-- +cgit v0.8.3-6-g21f6 diff --git a/recipes/obsolete/xorg/xorg-lib/pixman-0.17.8/3-composite.patch b/recipes/obsolete/xorg/xorg-lib/pixman-0.17.8/3-composite.patch new file mode 100644 index 0000000000..06e40fe869 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/pixman-0.17.8/3-composite.patch @@ -0,0 +1,108 @@ +From 19fc0c4c8d28796f0fbc2c8f47edc130851ae3a5 Mon Sep 17 00:00:00 2001 +From: Siarhei Siamashka <siarhei.siamashka@nokia.com> +Date: Wed, 24 Feb 2010 02:14:45 +0000 +Subject: ARM: added 'neon_composite_over_reverse_n_8888' fast path + +This fast path function improves performance of 'poppler' cairo-perf trace. + +Benchmark from ARM Cortex-A8 @720MHz + +before: + +[ # ] backend test min(s) median(s) stddev. count +[ 0] image poppler 38.986 39.158 0.23% 6/6 + +after: + +[ # ] backend test min(s) median(s) stddev. count +[ 0] image poppler 24.981 25.136 0.28% 6/6 +--- +diff --git a/pixman/pixman-arm-neon-asm.S b/pixman/pixman-arm-neon-asm.S +index f2643de..eb8cc4c 100644 +--- a/pixman/pixman-arm-neon-asm.S ++++ b/pixman/pixman-arm-neon-asm.S +@@ -680,6 +680,61 @@ generate_composite_function \ + + /******************************************************************************/ + ++.macro pixman_composite_over_reverse_n_8888_process_pixblock_tail_head ++ 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 ++ vqadd.u8 q14, q0, q14 ++ vqadd.u8 q15, q1, q15 ++ vld4.8 {d0, d1, d2, d3}, [DST_R, :128]! ++ 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 ++ vmull.u8 q10, d22, d6 ++ PF ldrgeb DUMMY, [PF_DST, DST_STRIDE, lsl #dst_bpp_shift]! ++ vmull.u8 q11, d22, d7 ++.endm ++ ++.macro pixman_composite_over_reverse_n_8888_init ++ add DUMMY, sp, #ARGS_STACK_OFFSET ++ vld1.32 {d7[0]}, [DUMMY] ++ vdup.8 d4, d7[0] ++ vdup.8 d5, d7[1] ++ vdup.8 d6, d7[2] ++ vdup.8 d7, d7[3] ++.endm ++ ++generate_composite_function \ ++ pixman_composite_over_reverse_n_8888_asm_neon, 0, 0, 32, \ ++ FLAG_DST_READWRITE | FLAG_DEINTERLEAVE_32BPP, \ ++ 8, /* number of pixels, processed in a single block */ \ ++ 5, /* prefetch distance */ \ ++ pixman_composite_over_reverse_n_8888_init, \ ++ default_cleanup, \ ++ pixman_composite_over_8888_8888_process_pixblock_head, \ ++ pixman_composite_over_8888_8888_process_pixblock_tail, \ ++ pixman_composite_over_reverse_n_8888_process_pixblock_tail_head, \ ++ 28, /* dst_w_basereg */ \ ++ 0, /* dst_r_basereg */ \ ++ 4, /* src_basereg */ \ ++ 24 /* mask_basereg */ ++ ++/******************************************************************************/ ++ + .macro pixman_composite_over_n_8_0565_process_pixblock_head + /* in */ + vmull.u8 q0, d24, d8 +diff --git a/pixman/pixman-arm-neon.c b/pixman/pixman-arm-neon.c +index 0a7ac31..30c5056 100644 +--- a/pixman/pixman-arm-neon.c ++++ b/pixman/pixman-arm-neon.c +@@ -264,6 +264,7 @@ BIND_SRC_NULL_DST(add_8888_8888, uint32_t, 1, uint32_t, 1) + + BIND_N_NULL_DST(over_n_0565, uint16_t, 1) + BIND_N_NULL_DST(over_n_8888, uint32_t, 1) ++BIND_N_NULL_DST(over_reverse_n_8888, uint32_t, 1) + + BIND_SRC_NULL_DST(over_8888_0565, uint32_t, 1, uint16_t, 1) + BIND_SRC_NULL_DST(over_8888_8888, uint32_t, 1, uint32_t, 1) +@@ -442,6 +443,8 @@ static const pixman_fast_path_t arm_neon_fast_paths[] = + PIXMAN_STD_FAST_PATH (ADD, a8, null, a8, neon_composite_add_8000_8000), + PIXMAN_STD_FAST_PATH (ADD, a8r8g8b8, null, a8r8g8b8, neon_composite_add_8888_8888), + PIXMAN_STD_FAST_PATH (ADD, a8b8g8r8, null, a8b8g8r8, neon_composite_add_8888_8888), ++ PIXMAN_STD_FAST_PATH (OVER_REVERSE, solid, null, a8r8g8b8, neon_composite_over_reverse_n_8888), ++ PIXMAN_STD_FAST_PATH (OVER_REVERSE, solid, null, a8b8g8r8, neon_composite_over_reverse_n_8888), + + { PIXMAN_OP_NONE }, + }; +-- +cgit v0.8.3-6-g21f6 diff --git a/recipes/obsolete/xorg/xorg-lib/pixman-0.18.0/0001-Generic-C-implementation-of-pixman_blt-with-overlapp.patch b/recipes/obsolete/xorg/xorg-lib/pixman-0.18.0/0001-Generic-C-implementation-of-pixman_blt-with-overlapp.patch new file mode 100644 index 0000000000..06b07a3b4d --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/pixman-0.18.0/0001-Generic-C-implementation-of-pixman_blt-with-overlapp.patch @@ -0,0 +1,114 @@ +From 5234e3c2c161ed5fc92caa336ae78f89112c7d77 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/5] 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/xorg-lib/pixman-0.18.0/0002-Support-of-overlapping-src-dst-for-pixman_blt_mmx.patch b/recipes/obsolete/xorg/xorg-lib/pixman-0.18.0/0002-Support-of-overlapping-src-dst-for-pixman_blt_mmx.patch new file mode 100644 index 0000000000..bf6e58c9e4 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/pixman-0.18.0/0002-Support-of-overlapping-src-dst-for-pixman_blt_mmx.patch @@ -0,0 +1,91 @@ +From f607cd0250d398077b0c51201258775e372cb3c3 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/5] 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 e084e7f..6212b31 100644 +--- a/pixman/pixman-mmx.c ++++ b/pixman/pixman-mmx.c +@@ -2994,34 +2994,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--) +@@ -3031,7 +3040,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/xorg-lib/pixman-0.18.0/0003-Support-of-overlapping-src-dst-for-pixman_blt_sse2.patch b/recipes/obsolete/xorg/xorg-lib/pixman-0.18.0/0003-Support-of-overlapping-src-dst-for-pixman_blt_sse2.patch new file mode 100644 index 0000000000..c1f3b2ead4 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/pixman-0.18.0/0003-Support-of-overlapping-src-dst-for-pixman_blt_sse2.patch @@ -0,0 +1,91 @@ +From 45a9a537f94a7feab47bd82171c7d620f0d34e3f 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/5] 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 946e7ba..66053ae 100644 +--- a/pixman/pixman-sse2.c ++++ b/pixman/pixman-sse2.c +@@ -5299,34 +5299,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); +@@ -5339,7 +5348,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/xorg-lib/pixman-0.18.0/0004-Support-of-overlapping-src-dst-for-pixman_blt_neon.patch b/recipes/obsolete/xorg/xorg-lib/pixman-0.18.0/0004-Support-of-overlapping-src-dst-for-pixman_blt_neon.patch new file mode 100644 index 0000000000..c37673e52b --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/pixman-0.18.0/0004-Support-of-overlapping-src-dst-for-pixman_blt_neon.patch @@ -0,0 +1,94 @@ +From 4cf5bfc72a724fb653c48338b93e91dccea238af 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/5] 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/xorg-lib/pixman-0.18.0/0005-ARM-added-NEON-optimizations-for-fetch-store-r5g6b5-.patch b/recipes/obsolete/xorg/xorg-lib/pixman-0.18.0/0005-ARM-added-NEON-optimizations-for-fetch-store-r5g6b5-.patch new file mode 100644 index 0000000000..d776574628 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/pixman-0.18.0/0005-ARM-added-NEON-optimizations-for-fetch-store-r5g6b5-.patch @@ -0,0 +1,169 @@ +From d1410558827fce8aac354274a7150fa915881c50 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/5] 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/xorg-lib/pixman-0.18.0/565-scanline.patch b/recipes/obsolete/xorg/xorg-lib/pixman-0.18.0/565-scanline.patch new file mode 100644 index 0000000000..8461a46a12 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/pixman-0.18.0/565-scanline.patch @@ -0,0 +1,257 @@ +From deef1daf5896062f47fa61b94e1e77c7c0041820 Mon Sep 17 00:00:00 2001 +From: Siarhei Siamashka <siarhei.siamashka@nokia.com> +Date: Fri, 04 Dec 2009 16:49:19 +0000 +Subject: A copy-paste version of 16bpp bilinear scanline fetcher + +--- +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 + { +-- +cgit v0.8.3-6-g21f6 diff --git a/recipes/obsolete/xorg/xorg-lib/pixman-0.18.0/missing-cache-preload.diff b/recipes/obsolete/xorg/xorg-lib/pixman-0.18.0/missing-cache-preload.diff new file mode 100644 index 0000000000..475bb35495 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/pixman-0.18.0/missing-cache-preload.diff @@ -0,0 +1,28 @@ +From 4f45c7688e6b767a5f7b7f5cced51b4797a3c288 Mon Sep 17 00:00:00 2001 +From: Siarhei Siamashka <siarhei.siamashka@nokia.com> +Date: Fri, 21 May 2010 13:31:03 +0000 +Subject: ARM: added missing cache preload + +--- +diff --git a/pixman/pixman-arm-neon-asm.S b/pixman/pixman-arm-neon-asm.S +index 51bc347..a99555a 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 +@@ -660,6 +661,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 +-- +cgit v0.8.3-6-g21f6 diff --git a/recipes/obsolete/xorg/xorg-lib/pixman-0.9.5/dont-copy-unused-bits-to-alpha-channel.patch b/recipes/obsolete/xorg/xorg-lib/pixman-0.9.5/dont-copy-unused-bits-to-alpha-channel.patch new file mode 100644 index 0000000000..05fe829a82 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/pixman-0.9.5/dont-copy-unused-bits-to-alpha-channel.patch @@ -0,0 +1,29 @@ +From: Carl Worth <cworth@cworth.org> + +Don't copy unused bits to an alpha channel + +This bug was identified by cairo's rgb24-ignore-alpha test which +blends RGB24 over ARGB32 and notices that "alpha" values are +making it from the source to the destination. + +Index: a/pixman/pixman-pict.c +=================================================================== +--- a/pixman/pixman-pict.c b8b7b767b3ed1fc57ba177c38187e1eb3daf4de8 ++++ b/pixman/pixman-pict.c c7d73fc532c2da313041906ac0f48dba1b10d3bc +@@ -1778,7 +1778,6 @@ pixman_image_composite (pixman_op_t + break; + case PIXMAN_x8r8g8b8: + switch (pDst->bits.format) { +- case PIXMAN_a8r8g8b8: + case PIXMAN_x8r8g8b8: + #ifdef USE_MMX + if (pixman_have_mmx()) +@@ -1790,7 +1789,6 @@ pixman_image_composite (pixman_op_t + } + case PIXMAN_x8b8g8r8: + switch (pDst->bits.format) { +- case PIXMAN_a8b8g8r8: + case PIXMAN_x8b8g8r8: + #ifdef USE_MMX + if (pixman_have_mmx()) + diff --git a/recipes/obsolete/xorg/xorg-lib/pixman/0001-Generic-C-implementation-of-pixman_blt-with-overlapp.patch b/recipes/obsolete/xorg/xorg-lib/pixman/0001-Generic-C-implementation-of-pixman_blt-with-overlapp.patch new file mode 100644 index 0000000000..a2cda2438e --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/pixman/0001-Generic-C-implementation-of-pixman_blt-with-overlapp.patch @@ -0,0 +1,114 @@ +From 8ea1a333de202018a862a7b04b94479d3109274b 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/5] 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/xorg-lib/pixman/0002-Support-of-overlapping-src-dst-for-pixman_blt_mmx.patch b/recipes/obsolete/xorg/xorg-lib/pixman/0002-Support-of-overlapping-src-dst-for-pixman_blt_mmx.patch new file mode 100644 index 0000000000..003337f48d --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/pixman/0002-Support-of-overlapping-src-dst-for-pixman_blt_mmx.patch @@ -0,0 +1,91 @@ +From 3170d9f5e927681a2516bcec52b317d1d4785e25 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/5] 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 e084e7f..6212b31 100644 +--- a/pixman/pixman-mmx.c ++++ b/pixman/pixman-mmx.c +@@ -2994,34 +2994,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--) +@@ -3031,7 +3040,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/xorg-lib/pixman/0003-Support-of-overlapping-src-dst-for-pixman_blt_sse2.patch b/recipes/obsolete/xorg/xorg-lib/pixman/0003-Support-of-overlapping-src-dst-for-pixman_blt_sse2.patch new file mode 100644 index 0000000000..7e8f34f6bd --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/pixman/0003-Support-of-overlapping-src-dst-for-pixman_blt_sse2.patch @@ -0,0 +1,91 @@ +From f07cd58c643b490dcb1ef7be2642926cfeca1e69 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/5] 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 946e7ba..66053ae 100644 +--- a/pixman/pixman-sse2.c ++++ b/pixman/pixman-sse2.c +@@ -5299,34 +5299,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); +@@ -5339,7 +5348,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/xorg-lib/pixman/0004-Support-of-overlapping-src-dst-for-pixman_blt_neon.patch b/recipes/obsolete/xorg/xorg-lib/pixman/0004-Support-of-overlapping-src-dst-for-pixman_blt_neon.patch new file mode 100644 index 0000000000..0ba5b843b5 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/pixman/0004-Support-of-overlapping-src-dst-for-pixman_blt_neon.patch @@ -0,0 +1,94 @@ +From e0542866c466ad512d69292df098d4b880e35e52 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/5] 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 24ceeeb..134493d 100644 +--- a/pixman/pixman-arm-neon.c ++++ b/pixman/pixman-arm-neon.c +@@ -360,26 +360,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/xorg-lib/pixman/0005-ARM-added-NEON-optimizations-for-fetch-store-r5g6b5-.patch b/recipes/obsolete/xorg/xorg-lib/pixman/0005-ARM-added-NEON-optimizations-for-fetch-store-r5g6b5-.patch new file mode 100644 index 0000000000..769ed2e7d0 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/pixman/0005-ARM-added-NEON-optimizations-for-fetch-store-r5g6b5-.patch @@ -0,0 +1,169 @@ +From d51b10a2750d99543a0c92ca44802aa7a4d70e54 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/5] 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 eb8cc4c..6ab3301 100644 +--- a/pixman/pixman-arm-neon-asm.S ++++ b/pixman/pixman-arm-neon-asm.S +@@ -454,6 +454,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 +@@ -489,6 +499,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 134493d..2245b52 100644 +--- a/pixman/pixman-arm-neon.c ++++ b/pixman/pixman-arm-neon.c +@@ -567,6 +567,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) + { +@@ -577,6 +614,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/xorg-lib/pixman/0006-Revert-ARM-SIMD-Try-without-any-CFLAGS-before-forcin.patch b/recipes/obsolete/xorg/xorg-lib/pixman/0006-Revert-ARM-SIMD-Try-without-any-CFLAGS-before-forcin.patch new file mode 100644 index 0000000000..3d8d4e8292 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/pixman/0006-Revert-ARM-SIMD-Try-without-any-CFLAGS-before-forcin.patch @@ -0,0 +1,53 @@ +From 7f0adaef68c5b0bb1c5eb9f5db5792b71b8b8beb Mon Sep 17 00:00:00 2001 +From: Koen Kooi <koen@dominion.thruhere.net> +Date: Fri, 19 Mar 2010 10:44:09 +0100 +Subject: [PATCH 6/6] Revert "ARM: SIMD: Try without any CFLAGS before forcing -mcpu=" + +This forces -marm that results in runtime SIGILL on thumb userspace + +This reverts commit 18f0de452dc7e12e4cb544d761a626d5c6031663. +--- + configure.ac | 20 +++++--------------- + 1 files changed, 5 insertions(+), 15 deletions(-) + +diff --git a/configure.ac b/configure.ac +index fc3ee24..f84a4dc 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -363,28 +363,18 @@ AM_CONDITIONAL(USE_VMX, test $have_vmx_intrinsics = yes) + + dnl =========================================================================== + dnl Check for ARM SIMD instructions +-ARM_SIMD_CFLAGS="" ++ARM_SIMD_CFLAGS="-mcpu=arm1136j-s" + + have_arm_simd=no + AC_MSG_CHECKING(whether to use ARM SIMD assembler) +-# check with default CFLAGS in case the toolchain turns on a sufficiently recent -mcpu= ++xserver_save_CFLAGS=$CFLAGS ++CFLAGS="$ARM_SIMD_CFLAGS $CFLAGS" + AC_COMPILE_IFELSE([ + int main () { + asm("uqadd8 r1, r1, r2"); + return 0; +-}], have_arm_simd=yes, +- # check again with an explicit -mcpu= in case the toolchain defaults to an +- # older one; note that uqadd8 isn't available in Thumb mode on arm1136j-s +- # so we force ARM mode +- ARM_SIMD_CFLAGS="-mcpu=arm1136j-s -marm" +- xserver_save_CFLAGS=$CFLAGS +- CFLAGS="$ARM_SIMD_CFLAGS $CFLAGS" +- AC_COMPILE_IFELSE([ +- int main () { +- asm("uqadd8 r1, r1, r2"); +- return 0; +- }], have_arm_simd=yes) +- CFLAGS=$xserver_save_CFLAGS) ++}], have_arm_simd=yes) ++CFLAGS=$xserver_save_CFLAGS + + AC_ARG_ENABLE(arm-simd, + [AC_HELP_STRING([--disable-arm-simd], +-- +1.6.6.1 + diff --git a/recipes/obsolete/xorg/xorg-lib/pixman/calloc.patch b/recipes/obsolete/xorg/xorg-lib/pixman/calloc.patch new file mode 100644 index 0000000000..4a60d7ef9a --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/pixman/calloc.patch @@ -0,0 +1,23 @@ +From 634ba33b5b1fcfd5a0e7910f9991b4ed4f674549 Mon Sep 17 00:00:00 2001 +From: Søren Sandmann Pedersen <ssp@redhat.com> +Date: Wed, 07 Apr 2010 05:39:14 +0000 +Subject: Fix uninitialized cache when pthreads are used + +The thread local cache is allocated with malloc(), but we rely on it +being initialized to zero, so allocate it with calloc() instead. +--- +diff --git a/pixman/pixman-compiler.h b/pixman/pixman-compiler.h +index a4e3f88..cdac0d8 100644 +--- a/pixman/pixman-compiler.h ++++ b/pixman/pixman-compiler.h +@@ -101,7 +101,7 @@ + static type * \ + tls_ ## name ## _alloc (key) \ + { \ +- type *value = malloc (sizeof (type)); \ ++ type *value = calloc (1, sizeof (type)); \ + if (value) \ + pthread_setspecific (key, value); \ + return value; \ +-- +cgit v0.8.3-6-g21f6 diff --git a/recipes/obsolete/xorg/xorg-lib/pixman/nearest-neighbour.patch b/recipes/obsolete/xorg/xorg-lib/pixman/nearest-neighbour.patch new file mode 100644 index 0000000000..29b140faf9 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/pixman/nearest-neighbour.patch @@ -0,0 +1,1040 @@ +From: Siarhei Siamashka <siarhei.siamashka@nokia.com> +Date: Fri, 17 Jul 2009 10:22:23 +0000 (+0300) +Subject: Fastpath for nearest neighbour scaled compositing operations. +X-Git-Url: http://siarhei.siamashka.name/gitweb/?p=pixman.git;a=commitdiff_plain;h=247531c6978725a88fd3706129b9d3e339026f54 + +Fastpath for nearest neighbour scaled compositing operations. + +OVER 8888x8888, OVER 8888x0565, SRC 8888x8888, SRC 8888x0565 +and SRC 0565x0565 cases are supported. +--- + +diff --git a/pixman/pixman-fast-path.c b/pixman/pixman-fast-path.c +index 7f80578..7f3a6ad 100644 +--- a/pixman/pixman-fast-path.c ++++ b/pixman/pixman-fast-path.c +@@ -1261,6 +1261,993 @@ fast_composite_src_scale_nearest (pixman_implementation_t *imp, + } + } + ++/* ++ * Functions, which implement the core inner loops for the nearest neighbour ++ * scaled fastpath compositing operations. The do not need to do clipping ++ * checks, also the loops are unrolled to process two pixels per iteration ++ * for better performance on most CPU architectures (superscalar processors ++ * can issue several operations simultaneously, other processors can hide ++ * instructions latencies by pipelining operations). Unrolling more ++ * does not make much sense because the compiler will start running out ++ * of spare registers soon. ++ */ ++ ++#undef READ ++#undef WRITE ++#define READ(img,x) (*(x)) ++#define WRITE(img,ptr,v) ((*(ptr)) = (v)) ++ ++#define UN8x4_MUL_UN8_ADD_UN8x4_store_r5g6b5(x, a, y) do { \ ++ UN8x4_MUL_UN8_ADD_UN8x4(x, a, y); \ ++ x = CONVERT_8888_TO_0565(x); \ ++ } while (0) ++ ++static void fbCompositeTransformNearestNonrotatedAffineTrivialclipOver_8888x0565 ( ++ pixman_image_t *pSrc, pixman_image_t *pDst, int xSrc, int ySrc, int xDst, int yDst, ++ int width, int height, int32_t vx, int32_t vy, int32_t unit_x, int32_t unit_y) ++{ ++ uint16_t *dstLine; ++ uint32_t *srcFirstLine; ++ uint32_t d; ++ uint32_t s1, s2; ++ uint8_t a1, a2; ++ int w; ++ int x1, x2, y; ++ int32_t orig_vx = vx; ++ ++ uint32_t *src; ++ uint16_t *dst; ++ int srcStride, dstStride; ++ PIXMAN_IMAGE_GET_LINE (pDst, xDst, yDst, uint16_t, dstStride, dstLine, 1); ++ /* pass in 0 instead of xSrc and ySrc because xSrc and ySrc need to be ++ * transformed from destination space to source space */ ++ PIXMAN_IMAGE_GET_LINE (pSrc, 0, 0, uint32_t, srcStride, srcFirstLine, 1); ++ ++ while (--height >= 0) ++ { ++ dst = dstLine; ++ dstLine += dstStride; ++ ++ y = vy >> 16; ++ vy += unit_y; ++ ++ if ((y < 0) || (y >= pSrc->bits.height)) { ++ continue; ++ } ++ ++ src = srcFirstLine + srcStride * y; ++ ++ w = width; ++ vx = orig_vx; ++ while ((w -= 2) >= 0) ++ { ++ x1 = vx >> 16; ++ vx += unit_x; ++ s1 = READ(pSrc, src + x1); ++ ++ x2 = vx >> 16; ++ vx += unit_x; ++ s2 = READ(pSrc, src + x2); ++ ++ a1 = s1 >> 24; ++ a2 = s2 >> 24; ++ ++ if (a1 == 0xff) ++ WRITE(pDst, dst, CONVERT_8888_TO_0565(s1)); ++ else if (s1) { ++ d = CONVERT_0565_TO_0888(READ(pDst, dst)); ++ a1 ^= 0xff; ++ UN8x4_MUL_UN8_ADD_UN8x4_store_r5g6b5(d, a1, s1); ++ WRITE(pDst, dst, d); ++ } ++ dst++; ++ ++ if (a2 == 0xff) ++ WRITE(pDst, dst, CONVERT_8888_TO_0565(s2)); ++ else if (s2) { ++ d = CONVERT_0565_TO_0888(READ(pDst, dst)); ++ a2 ^= 0xff; ++ UN8x4_MUL_UN8_ADD_UN8x4_store_r5g6b5(d, a2, s2); ++ WRITE(pDst, dst, d); ++ } ++ dst++; ++ } ++ if (w & 1) { ++ x1 = vx >> 16; ++ vx += unit_x; ++ s1 = READ(pSrc, src + x1); ++ ++ a1 = s1 >> 24; ++ if (a1 == 0xff) ++ WRITE(pDst, dst, CONVERT_8888_TO_0565(s1)); ++ else if (s1) { ++ d = CONVERT_0565_TO_0888(READ(pDst, dst)); ++ a1 ^= 0xff; ++ UN8x4_MUL_UN8_ADD_UN8x4_store_r5g6b5(d, a1, s1); ++ WRITE(pDst, dst, d); ++ } ++ dst++; ++ } ++ } ++} ++ ++static void fbCompositeTransformNearestNonrotatedAffineTrivialclipRepeatOver_8888x0565 ( ++ pixman_image_t *pSrc, pixman_image_t *pDst, int xSrc, int ySrc, int xDst, int yDst, ++ int width, int height, int32_t vx, int32_t vy, int32_t unit_x, int32_t unit_y) ++{ ++ uint16_t *dstLine; ++ uint32_t *srcFirstLine; ++ uint32_t d; ++ uint32_t s1, s2; ++ uint8_t a1, a2; ++ int w; ++ int x1, x2, y; ++ int32_t orig_vx = vx; ++ int32_t max_vx, max_vy; ++ ++ uint32_t *src; ++ uint16_t *dst; ++ int srcStride, dstStride; ++ PIXMAN_IMAGE_GET_LINE (pDst, xDst, yDst, uint16_t, dstStride, dstLine, 1); ++ /* pass in 0 instead of xSrc and ySrc because xSrc and ySrc need to be ++ * transformed from destination space to source space */ ++ PIXMAN_IMAGE_GET_LINE (pSrc, 0, 0, uint32_t, srcStride, srcFirstLine, 1); ++ ++ max_vx = pSrc->bits.width << 16; ++ max_vy = pSrc->bits.height << 16; ++ ++ while (orig_vx < 0) orig_vx += max_vx; ++ while (vy < 0) vy += max_vy; ++ while (orig_vx >= max_vx) orig_vx -= max_vx; ++ while (vy >= max_vy) vy -= max_vy; ++ ++ while (--height >= 0) ++ { ++ dst = dstLine; ++ dstLine += dstStride; ++ ++ y = vy >> 16; ++ vy += unit_y; ++ while (vy >= max_vy) vy -= max_vy; ++ ++ src = srcFirstLine + srcStride * y; ++ ++ w = width; ++ vx = orig_vx; ++ while ((w -= 2) >= 0) ++ { ++ x1 = vx >> 16; ++ vx += unit_x; ++ while (vx >= max_vx) vx -= max_vx; ++ s1 = READ(pSrc, src + x1); ++ ++ x2 = vx >> 16; ++ vx += unit_x; ++ while (vx >= max_vx) vx -= max_vx; ++ s2 = READ(pSrc, src + x2); ++ ++ a1 = s1 >> 24; ++ a2 = s2 >> 24; ++ ++ if (a1 == 0xff) ++ WRITE(pDst, dst, CONVERT_8888_TO_0565(s1)); ++ else if (s1) { ++ d = CONVERT_0565_TO_0888(READ(pDst, dst)); ++ a1 ^= 0xff; ++ UN8x4_MUL_UN8_ADD_UN8x4_store_r5g6b5(d, a1, s1); ++ WRITE(pDst, dst, d); ++ } ++ dst++; ++ ++ if (a2 == 0xff) ++ WRITE(pDst, dst, CONVERT_8888_TO_0565(s2)); ++ else if (s2) { ++ d = CONVERT_0565_TO_0888(READ(pDst, dst)); ++ a2 ^= 0xff; ++ UN8x4_MUL_UN8_ADD_UN8x4_store_r5g6b5(d, a2, s2); ++ WRITE(pDst, dst, d); ++ } ++ dst++; ++ } ++ if (w & 1) { ++ x1 = vx >> 16; ++ vx += unit_x; ++ while (vx >= max_vx) vx -= max_vx; ++ s1 = READ(pSrc, src + x1); ++ ++ a1 = s1 >> 24; ++ if (a1 == 0xff) ++ WRITE(pDst, dst, CONVERT_8888_TO_0565(s1)); ++ else if (s1) { ++ d = CONVERT_0565_TO_0888(READ(pDst, dst)); ++ a1 ^= 0xff; ++ UN8x4_MUL_UN8_ADD_UN8x4_store_r5g6b5(d, a1, s1); ++ WRITE(pDst, dst, d); ++ } ++ dst++; ++ } ++ } ++} ++ ++static void fbCompositeTransformNearestNonrotatedAffineTrivialclipOver_8888x8888 ( ++ pixman_image_t *pSrc, pixman_image_t *pDst, int xSrc, int ySrc, int xDst, int yDst, ++ int width, int height, int32_t vx, int32_t vy, int32_t unit_x, int32_t unit_y) ++{ ++ uint32_t *dstLine; ++ uint32_t *srcFirstLine; ++ uint32_t d; ++ uint32_t s1, s2; ++ uint8_t a1, a2; ++ int w; ++ int x1, x2, y; ++ int32_t orig_vx = vx; ++ ++ uint32_t *src, *dst; ++ int srcStride, dstStride; ++ PIXMAN_IMAGE_GET_LINE (pDst, xDst, yDst, uint32_t, dstStride, dstLine, 1); ++ /* pass in 0 instead of xSrc and ySrc because xSrc and ySrc need to be ++ * transformed from destination space to source space */ ++ PIXMAN_IMAGE_GET_LINE (pSrc, 0, 0, uint32_t, srcStride, srcFirstLine, 1); ++ ++ while (--height >= 0) ++ { ++ dst = dstLine; ++ dstLine += dstStride; ++ ++ y = vy >> 16; ++ vy += unit_y; ++ ++ if ((y < 0) || (y >= pSrc->bits.height)) { ++ continue; ++ } ++ ++ src = srcFirstLine + srcStride * y; ++ ++ w = width; ++ vx = orig_vx; ++ while ((w -= 2) >= 0) ++ { ++ x1 = vx >> 16; ++ vx += unit_x; ++ s1 = READ(pSrc, src + x1); ++ ++ x2 = vx >> 16; ++ vx += unit_x; ++ s2 = READ(pSrc, src + x2); ++ ++ a1 = s1 >> 24; ++ a2 = s2 >> 24; ++ ++ if (a1 == 0xff) ++ WRITE(pDst, dst, s1); ++ else if (s1) { ++ d = READ(pDst, dst); ++ a1 ^= 0xff; ++ UN8x4_MUL_UN8_ADD_UN8x4(d, a1, s1); ++ WRITE(pDst, dst, d); ++ } ++ dst++; ++ ++ if (a2 == 0xff) ++ WRITE(pDst, dst, s2); ++ else if (s2) { ++ d = READ(pDst, dst); ++ a2 ^= 0xff; ++ UN8x4_MUL_UN8_ADD_UN8x4(d, a2, s2); ++ WRITE(pDst, dst, d); ++ } ++ dst++; ++ } ++ if (w & 1) { ++ x1 = vx >> 16; ++ vx += unit_x; ++ s1 = READ(pSrc, src + x1); ++ ++ a1 = s1 >> 24; ++ if (a1 == 0xff) ++ WRITE(pDst, dst, s1); ++ else if (s1) { ++ d = READ(pDst, dst); ++ a1 ^= 0xff; ++ UN8x4_MUL_UN8_ADD_UN8x4(d, a1, s1); ++ WRITE(pDst, dst, d); ++ } ++ dst++; ++ } ++ } ++} ++ ++static void fbCompositeTransformNearestNonrotatedAffineTrivialclipRepeatOver_8888x8888 ( ++ pixman_image_t *pSrc, pixman_image_t *pDst, int xSrc, int ySrc, int xDst, int yDst, ++ int width, int height, int32_t vx, int32_t vy, int32_t unit_x, int32_t unit_y) ++{ ++ uint32_t *dstLine; ++ uint32_t *srcFirstLine; ++ uint32_t d; ++ uint32_t s1, s2; ++ uint8_t a1, a2; ++ int w; ++ int x1, x2, y; ++ int32_t orig_vx = vx; ++ int32_t max_vx, max_vy; ++ ++ uint32_t *src, *dst; ++ int srcStride, dstStride; ++ PIXMAN_IMAGE_GET_LINE (pDst, xDst, yDst, uint32_t, dstStride, dstLine, 1); ++ /* pass in 0 instead of xSrc and ySrc because xSrc and ySrc need to be ++ * transformed from destination space to source space */ ++ PIXMAN_IMAGE_GET_LINE (pSrc, 0, 0, uint32_t, srcStride, srcFirstLine, 1); ++ ++ max_vx = pSrc->bits.width << 16; ++ max_vy = pSrc->bits.height << 16; ++ ++ while (orig_vx < 0) orig_vx += max_vx; ++ while (vy < 0) vy += max_vy; ++ while (orig_vx >= max_vx) orig_vx -= max_vx; ++ while (vy >= max_vy) vy -= max_vy; ++ ++ while (--height >= 0) ++ { ++ dst = dstLine; ++ dstLine += dstStride; ++ ++ y = vy >> 16; ++ vy += unit_y; ++ while (vy >= max_vy) vy -= max_vy; ++ ++ src = srcFirstLine + srcStride * y; ++ ++ w = width; ++ vx = orig_vx; ++ while ((w -= 2) >= 0) ++ { ++ x1 = vx >> 16; ++ vx += unit_x; ++ while (vx >= max_vx) vx -= max_vx; ++ s1 = READ(pSrc, src + x1); ++ ++ x2 = vx >> 16; ++ vx += unit_x; ++ while (vx >= max_vx) vx -= max_vx; ++ s2 = READ(pSrc, src + x2); ++ ++ a1 = s1 >> 24; ++ a2 = s2 >> 24; ++ ++ if (a1 == 0xff) ++ WRITE(pDst, dst, s1); ++ else if (s1) { ++ d = READ(pDst, dst); ++ a1 ^= 0xff; ++ UN8x4_MUL_UN8_ADD_UN8x4(d, a1, s1); ++ WRITE(pDst, dst, d); ++ } ++ dst++; ++ ++ if (a2 == 0xff) ++ WRITE(pDst, dst, s2); ++ else if (s2) { ++ d = READ(pDst, dst); ++ a2 ^= 0xff; ++ UN8x4_MUL_UN8_ADD_UN8x4(d, a2, s2); ++ WRITE(pDst, dst, d); ++ } ++ dst++; ++ } ++ if (w & 1) { ++ x1 = vx >> 16; ++ vx += unit_x; ++ while (vx >= max_vx) vx -= max_vx; ++ s1 = READ(pSrc, src + x1); ++ ++ a1 = s1 >> 24; ++ if (a1 == 0xff) ++ WRITE(pDst, dst, s1); ++ else if (s1) { ++ d = READ(pDst, dst); ++ a1 ^= 0xff; ++ UN8x4_MUL_UN8_ADD_UN8x4(d, a1, s1); ++ WRITE(pDst, dst, d); ++ } ++ dst++; ++ } ++ } ++} ++ ++static void fbCompositeTransformNearestNonrotatedAffineTrivialclipSrc_8888x8888 ( ++ pixman_image_t *pSrc, pixman_image_t *pDst, int xSrc, int ySrc, int xDst, int yDst, ++ int width, int height, int32_t vx, int32_t vy, int32_t unit_x, int32_t unit_y) ++{ ++ uint32_t *dstLine; ++ uint32_t *srcFirstLine; ++ uint32_t s1, s2; ++ int w; ++ int x1, x2, y; ++ int32_t orig_vx = vx; ++ ++ uint32_t *src, *dst; ++ int srcStride, dstStride; ++ PIXMAN_IMAGE_GET_LINE (pDst, xDst, yDst, uint32_t, dstStride, dstLine, 1); ++ /* pass in 0 instead of xSrc and ySrc because xSrc and ySrc need to be ++ * transformed from destination space to source space */ ++ PIXMAN_IMAGE_GET_LINE (pSrc, 0, 0, uint32_t, srcStride, srcFirstLine, 1); ++ ++ while (--height >= 0) ++ { ++ dst = dstLine; ++ dstLine += dstStride; ++ ++ y = vy >> 16; ++ vy += unit_y; ++ ++ if ((y < 0) || (y >= pSrc->bits.height)) { ++ memset(dst, 0, width * sizeof(*dst)); ++ continue; ++ } ++ ++ src = srcFirstLine + srcStride * y; ++ ++ w = width; ++ vx = orig_vx; ++ while ((w -= 2) >= 0) ++ { ++ x1 = vx >> 16; ++ vx += unit_x; ++ s1 = READ(pSrc, src + x1); ++ ++ x2 = vx >> 16; ++ vx += unit_x; ++ s2 = READ(pSrc, src + x2); ++ ++ WRITE(pDst, dst, s1); ++ dst++; ++ WRITE(pDst, dst, s2); ++ dst++; ++ } ++ if (w & 1) { ++ x1 = vx >> 16; ++ vx += unit_x; ++ s1 = READ(pSrc, src + x1); ++ WRITE(pDst, dst, s1); ++ dst++; ++ } ++ } ++} ++ ++static void fbCompositeTransformNearestNonrotatedAffineTrivialclipRepeatSrc_8888x8888 ( ++ pixman_image_t *pSrc, pixman_image_t *pDst, int xSrc, int ySrc, int xDst, int yDst, ++ int width, int height, int32_t vx, int32_t vy, int32_t unit_x, int32_t unit_y) ++{ ++ uint32_t *dstLine; ++ uint32_t *srcFirstLine; ++ uint32_t s1, s2; ++ int w; ++ int x1, x2, y; ++ int32_t orig_vx = vx; ++ int32_t max_vx, max_vy; ++ ++ uint32_t *src, *dst; ++ int srcStride, dstStride; ++ PIXMAN_IMAGE_GET_LINE (pDst, xDst, yDst, uint32_t, dstStride, dstLine, 1); ++ /* pass in 0 instead of xSrc and ySrc because xSrc and ySrc need to be ++ * transformed from destination space to source space */ ++ PIXMAN_IMAGE_GET_LINE (pSrc, 0, 0, uint32_t, srcStride, srcFirstLine, 1); ++ ++ max_vx = pSrc->bits.width << 16; ++ max_vy = pSrc->bits.height << 16; ++ ++ while (orig_vx < 0) orig_vx += max_vx; ++ while (vy < 0) vy += max_vy; ++ while (orig_vx >= max_vx) orig_vx -= max_vx; ++ while (vy >= max_vy) vy -= max_vy; ++ ++ while (--height >= 0) ++ { ++ dst = dstLine; ++ dstLine += dstStride; ++ ++ y = vy >> 16; ++ vy += unit_y; ++ while (vy >= max_vy) vy -= max_vy; ++ ++ src = srcFirstLine + srcStride * y; ++ ++ w = width; ++ vx = orig_vx; ++ while ((w -= 2) >= 0) ++ { ++ x1 = vx >> 16; ++ vx += unit_x; ++ while (vx >= max_vx) vx -= max_vx; ++ s1 = READ(pSrc, src + x1); ++ ++ x2 = vx >> 16; ++ vx += unit_x; ++ while (vx >= max_vx) vx -= max_vx; ++ s2 = READ(pSrc, src + x2); ++ ++ WRITE(pDst, dst, s1); ++ dst++; ++ WRITE(pDst, dst, s2); ++ dst++; ++ } ++ if (w & 1) { ++ x1 = vx >> 16; ++ vx += unit_x; ++ while (vx >= max_vx) vx -= max_vx; ++ s1 = READ(pSrc, src + x1); ++ ++ WRITE(pDst, dst, s1); ++ dst++; ++ } ++ } ++} ++ ++static void fbCompositeTransformNearestNonrotatedAffineTrivialclipSrc_0565x0565 ( ++ pixman_image_t *pSrc, pixman_image_t *pDst, int xSrc, int ySrc, int xDst, int yDst, ++ int width, int height, int32_t vx, int32_t vy, int32_t unit_x, int32_t unit_y) ++{ ++ uint16_t *dstLine; ++ uint16_t *srcFirstLine; ++ uint16_t s1, s2; ++ int w; ++ int x1, x2, y; ++ int32_t orig_vx = vx; ++ ++ uint16_t *src, *dst; ++ int srcStride, dstStride; ++ PIXMAN_IMAGE_GET_LINE (pDst, xDst, yDst, uint16_t, dstStride, dstLine, 1); ++ /* pass in 0 instead of xSrc and ySrc because xSrc and ySrc need to be ++ * transformed from destination space to source space */ ++ PIXMAN_IMAGE_GET_LINE (pSrc, 0, 0, uint16_t, srcStride, srcFirstLine, 1); ++ ++ while (--height >= 0) ++ { ++ dst = dstLine; ++ dstLine += dstStride; ++ ++ y = vy >> 16; ++ vy += unit_y; ++ ++ if ((y < 0) || (y >= pSrc->bits.height)) { ++ memset(dst, 0, width * sizeof(*dst)); ++ continue; ++ } ++ ++ src = srcFirstLine + srcStride * y; ++ ++ w = width; ++ vx = orig_vx; ++ while ((w -= 2) >= 0) ++ { ++ x1 = vx >> 16; ++ vx += unit_x; ++ s1 = READ(pSrc, src + x1); ++ ++ x2 = vx >> 16; ++ vx += unit_x; ++ s2 = READ(pSrc, src + x2); ++ ++ WRITE(pDst, dst, s1); ++ dst++; ++ WRITE(pDst, dst, s2); ++ dst++; ++ } ++ if (w & 1) { ++ x1 = vx >> 16; ++ vx += unit_x; ++ s1 = READ(pSrc, src + x1); ++ WRITE(pDst, dst, s1); ++ dst++; ++ } ++ } ++} ++ ++static void fbCompositeTransformNearestNonrotatedAffineTrivialclipRepeatSrc_0565x0565 ( ++ pixman_image_t *pSrc, pixman_image_t *pDst, int xSrc, int ySrc, int xDst, int yDst, ++ int width, int height, int32_t vx, int32_t vy, int32_t unit_x, int32_t unit_y) ++{ ++ uint16_t *dstLine; ++ uint16_t *srcFirstLine; ++ uint16_t s1, s2; ++ int w; ++ int x1, x2, y; ++ int32_t orig_vx = vx; ++ int32_t max_vx, max_vy; ++ ++ uint16_t *src, *dst; ++ int srcStride, dstStride; ++ PIXMAN_IMAGE_GET_LINE (pDst, xDst, yDst, uint16_t, dstStride, dstLine, 1); ++ /* pass in 0 instead of xSrc and ySrc because xSrc and ySrc need to be ++ * transformed from destination space to source space */ ++ PIXMAN_IMAGE_GET_LINE (pSrc, 0, 0, uint16_t, srcStride, srcFirstLine, 1); ++ ++ max_vx = pSrc->bits.width << 16; ++ max_vy = pSrc->bits.height << 16; ++ ++ while (orig_vx < 0) orig_vx += max_vx; ++ while (vy < 0) vy += max_vy; ++ while (orig_vx >= max_vx) orig_vx -= max_vx; ++ while (vy >= max_vy) vy -= max_vy; ++ ++ while (--height >= 0) ++ { ++ dst = dstLine; ++ dstLine += dstStride; ++ ++ y = vy >> 16; ++ vy += unit_y; ++ while (vy >= max_vy) vy -= max_vy; ++ ++ src = srcFirstLine + srcStride * y; ++ ++ w = width; ++ vx = orig_vx; ++ while ((w -= 2) >= 0) ++ { ++ x1 = vx >> 16; ++ vx += unit_x; ++ while (vx >= max_vx) vx -= max_vx; ++ s1 = READ(pSrc, src + x1); ++ ++ x2 = vx >> 16; ++ vx += unit_x; ++ while (vx >= max_vx) vx -= max_vx; ++ s2 = READ(pSrc, src + x2); ++ ++ WRITE(pDst, dst, s1); ++ dst++; ++ WRITE(pDst, dst, s2); ++ dst++; ++ } ++ if (w & 1) { ++ x1 = vx >> 16; ++ vx += unit_x; ++ while (vx >= max_vx) vx -= max_vx; ++ s1 = READ(pSrc, src + x1); ++ ++ WRITE(pDst, dst, s1); ++ dst++; ++ } ++ } ++} ++ ++static void fbCompositeTransformNearestNonrotatedAffineTrivialclipSrc_8888x0565 ( ++ pixman_image_t *pSrc, pixman_image_t *pDst, int xSrc, int ySrc, int xDst, int yDst, ++ int width, int height, int32_t vx, int32_t vy, int32_t unit_x, int32_t unit_y) ++{ ++ uint16_t *dstLine; ++ uint32_t *srcFirstLine; ++ uint32_t s1, s2; ++ int w; ++ int x1, x2, y; ++ int32_t orig_vx = vx; ++ ++ uint32_t *src; ++ uint16_t *dst; ++ int srcStride, dstStride; ++ PIXMAN_IMAGE_GET_LINE (pDst, xDst, yDst, uint16_t, dstStride, dstLine, 1); ++ /* pass in 0 instead of xSrc and ySrc because xSrc and ySrc need to be ++ * transformed from destination space to source space */ ++ PIXMAN_IMAGE_GET_LINE (pSrc, 0, 0, uint32_t, srcStride, srcFirstLine, 1); ++ ++ while (--height >= 0) ++ { ++ dst = dstLine; ++ dstLine += dstStride; ++ ++ y = vy >> 16; ++ vy += unit_y; ++ ++ if ((y < 0) || (y >= pSrc->bits.height)) { ++ memset(dst, 0, width * sizeof(*dst)); ++ continue; ++ } ++ ++ src = srcFirstLine + srcStride * y; ++ ++ w = width; ++ vx = orig_vx; ++ while ((w -= 2) >= 0) ++ { ++ x1 = vx >> 16; ++ vx += unit_x; ++ s1 = READ(pSrc, src + x1); ++ ++ x2 = vx >> 16; ++ vx += unit_x; ++ s2 = READ(pSrc, src + x2); ++ ++ WRITE(pDst, dst, CONVERT_8888_TO_0565(s1)); ++ dst++; ++ WRITE(pDst, dst, CONVERT_8888_TO_0565(s2)); ++ dst++; ++ } ++ if (w & 1) { ++ x1 = vx >> 16; ++ vx += unit_x; ++ s1 = READ(pSrc, src + x1); ++ WRITE(pDst, dst, CONVERT_8888_TO_0565(s1)); ++ dst++; ++ } ++ } ++} ++ ++static void fbCompositeTransformNearestNonrotatedAffineTrivialclipRepeatSrc_8888x0565 ( ++ pixman_image_t *pSrc, pixman_image_t *pDst, int xSrc, int ySrc, int xDst, int yDst, ++ int width, int height, int32_t vx, int32_t vy, int32_t unit_x, int32_t unit_y) ++{ ++ uint16_t *dstLine; ++ uint32_t *srcFirstLine; ++ uint32_t s1, s2; ++ int w; ++ int x1, x2, y; ++ int32_t orig_vx = vx; ++ int32_t max_vx, max_vy; ++ ++ uint32_t *src; ++ uint16_t *dst; ++ int srcStride, dstStride; ++ PIXMAN_IMAGE_GET_LINE (pDst, xDst, yDst, uint16_t, dstStride, dstLine, 1); ++ /* pass in 0 instead of xSrc and ySrc because xSrc and ySrc need to be ++ * transformed from destination space to source space */ ++ PIXMAN_IMAGE_GET_LINE (pSrc, 0, 0, uint32_t, srcStride, srcFirstLine, 1); ++ ++ max_vx = pSrc->bits.width << 16; ++ max_vy = pSrc->bits.height << 16; ++ ++ while (orig_vx < 0) orig_vx += max_vx; ++ while (vy < 0) vy += max_vy; ++ while (orig_vx >= max_vx) orig_vx -= max_vx; ++ while (vy >= max_vy) vy -= max_vy; ++ ++ while (--height >= 0) ++ { ++ dst = dstLine; ++ dstLine += dstStride; ++ ++ y = vy >> 16; ++ vy += unit_y; ++ while (vy >= max_vy) vy -= max_vy; ++ ++ src = srcFirstLine + srcStride * y; ++ ++ w = width; ++ vx = orig_vx; ++ while ((w -= 2) >= 0) ++ { ++ x1 = vx >> 16; ++ vx += unit_x; ++ while (vx >= max_vx) vx -= max_vx; ++ s1 = READ(pSrc, src + x1); ++ ++ x2 = vx >> 16; ++ vx += unit_x; ++ while (vx >= max_vx) vx -= max_vx; ++ s2 = READ(pSrc, src + x2); ++ ++ WRITE(pDst, dst, CONVERT_8888_TO_0565(s1)); ++ dst++; ++ WRITE(pDst, dst, CONVERT_8888_TO_0565(s2)); ++ dst++; ++ } ++ if (w & 1) { ++ x1 = vx >> 16; ++ vx += unit_x; ++ while (vx >= max_vx) vx -= max_vx; ++ s1 = READ(pSrc, src + x1); ++ ++ WRITE(pDst, dst, CONVERT_8888_TO_0565(s1)); ++ dst++; ++ } ++ } ++} ++ ++/* ++ * Check if the clipping boundary is crossed on horizontal scaling ++ */ ++static inline pixman_bool_t ++fbTransformVerifyHorizontalClipping(pixman_image_t *pict, int width, int32_t vx, int32_t unit_x) ++{ ++ while (--width >= 0) { ++ int x = vx >> 16; ++ if ((x < 0) || (x >= pict->bits.width)) return 1; ++ vx += unit_x; ++ } ++ return 0; ++} ++ ++/* ++ * Check if the clipping boundary is crossed on vertical scaling ++ */ ++static inline pixman_bool_t ++fbTransformVerifyVerticalClipping(pixman_image_t *pict, int height, int32_t vy, int32_t unit_y) ++{ ++ while (--height >= 0) { ++ int y = vy >> 16; ++ if ((y < 0) || (y >= pict->bits.height)) return 1; ++ vy += unit_y; ++ } ++ return 0; ++} ++ ++/* ++ * Easy case of transform without rotation or complex clipping ++ * Returns 1 in the case if it was able to handle this operation and 0 otherwise ++ */ ++static pixman_bool_t ++fbCompositeTransformNonrotatedAffineTrivialclip ( ++ 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) ++{ ++ pixman_vector_t v, unit; ++ int skipdst_x = 0, skipdst_y = 0; ++ ++ /* Handle destination clipping */ ++ if (xDst < pDst->common.clip_region.extents.x1) { ++ skipdst_x = pDst->common.clip_region.extents.x1 - xDst; ++ if (skipdst_x >= (int)width) ++ return 1; ++ xDst = pDst->common.clip_region.extents.x1; ++ width -= skipdst_x; ++ } ++ ++ if (yDst < pDst->common.clip_region.extents.y1) { ++ skipdst_y = pDst->common.clip_region.extents.y1 - yDst; ++ if (skipdst_y >= (int)height) ++ return 1; ++ yDst = pDst->common.clip_region.extents.y1; ++ height -= skipdst_y; ++ } ++ ++ if (xDst >= pDst->common.clip_region.extents.x2 || ++ yDst >= pDst->common.clip_region.extents.y2) ++ { ++ return 1; ++ } ++ ++ if (xDst + width > pDst->common.clip_region.extents.x2) ++ width = pDst->common.clip_region.extents.x2 - xDst; ++ if (yDst + height > pDst->common.clip_region.extents.y2) ++ height = pDst->common.clip_region.extents.y2 - yDst; ++ ++ /* reference point is the center of the pixel */ ++ v.vector[0] = pixman_int_to_fixed(xSrc) + pixman_fixed_1 / 2; ++ v.vector[1] = pixman_int_to_fixed(ySrc) + pixman_fixed_1 / 2; ++ v.vector[2] = pixman_fixed_1; ++ ++ if (!pixman_transform_point_3d (pSrc->common.transform, &v)) ++ return 0; ++ ++ /* Round down to closest integer, ensuring that 0.5 rounds to 0, not 1 */ ++ v.vector[0] -= pixman_fixed_e; ++ v.vector[1] -= pixman_fixed_e; ++ ++ unit.vector[0] = pSrc->common.transform->matrix[0][0]; ++ unit.vector[1] = pSrc->common.transform->matrix[1][1]; ++ ++ v.vector[0] += unit.vector[0] * skipdst_x; ++ v.vector[1] += unit.vector[1] * skipdst_y; ++ ++ /* Check for possible fixed point arithmetics problems/overflows */ ++ if (unit.vector[0] <= 0 || unit.vector[1] <= 0) ++ return 0; ++ if (width == 0 || height == 0) ++ return 0; ++ if ((uint32_t)width + (unit.vector[0] >> 16) >= 0x7FFF) ++ return 0; ++ if ((uint32_t)height + (unit.vector[1] >> 16) >= 0x7FFF) ++ return 0; ++ ++ /* Horizontal source clipping is only supported for NORMAL repeat */ ++ if (pSrc->common.repeat != PIXMAN_REPEAT_NORMAL ++ && fbTransformVerifyHorizontalClipping(pSrc, width, v.vector[0], unit.vector[0])) { ++ return 0; ++ } ++ ++ /* Vertical source clipping is only supported for NONE and NORMAL repeat */ ++ if (pSrc->common.repeat != PIXMAN_REPEAT_NONE && pSrc->common.repeat != PIXMAN_REPEAT_NORMAL ++ && fbTransformVerifyVerticalClipping(pSrc, height, v.vector[1], unit.vector[1])) { ++ return 0; ++ } ++ ++ if (op == PIXMAN_OP_OVER && pSrc->bits.format == PIXMAN_a8r8g8b8 ++ && (pDst->bits.format == PIXMAN_x8r8g8b8 || pDst->bits.format == PIXMAN_a8r8g8b8)) ++ { ++ if (pSrc->common.filter == PIXMAN_FILTER_NEAREST && pSrc->common.repeat != PIXMAN_REPEAT_NORMAL) { ++ fbCompositeTransformNearestNonrotatedAffineTrivialclipOver_8888x8888( ++ pSrc, pDst, xSrc, ySrc, xDst, yDst, width, height, ++ v.vector[0], v.vector[1], unit.vector[0], unit.vector[1]); ++ return 1; ++ } ++ if (pSrc->common.filter == PIXMAN_FILTER_NEAREST && pSrc->common.repeat == PIXMAN_REPEAT_NORMAL) { ++ fbCompositeTransformNearestNonrotatedAffineTrivialclipRepeatOver_8888x8888( ++ pSrc, pDst, xSrc, ySrc, xDst, yDst, width, height, ++ v.vector[0], v.vector[1], unit.vector[0], unit.vector[1]); ++ return 1; ++ } ++ } ++ ++ if (op == PIXMAN_OP_SRC && (pSrc->bits.format == PIXMAN_x8r8g8b8 || pSrc->bits.format == PIXMAN_a8r8g8b8) ++ && (pDst->bits.format == PIXMAN_x8r8g8b8 || pDst->bits.format == pSrc->bits.format)) ++ { ++ if (pSrc->common.filter == PIXMAN_FILTER_NEAREST && pSrc->common.repeat != PIXMAN_REPEAT_NORMAL) { ++ fbCompositeTransformNearestNonrotatedAffineTrivialclipSrc_8888x8888( ++ pSrc, pDst, xSrc, ySrc, xDst, yDst, width, height, ++ v.vector[0], v.vector[1], unit.vector[0], unit.vector[1]); ++ return 1; ++ } ++ if (pSrc->common.filter == PIXMAN_FILTER_NEAREST && pSrc->common.repeat == PIXMAN_REPEAT_NORMAL) { ++ fbCompositeTransformNearestNonrotatedAffineTrivialclipRepeatSrc_8888x8888( ++ pSrc, pDst, xSrc, ySrc, xDst, yDst, width, height, ++ v.vector[0], v.vector[1], unit.vector[0], unit.vector[1]); ++ return 1; ++ } ++ } ++ ++ if (op == PIXMAN_OP_OVER && pSrc->bits.format == PIXMAN_a8r8g8b8 && pDst->bits.format == PIXMAN_r5g6b5) ++ { ++ if (pSrc->common.filter == PIXMAN_FILTER_NEAREST && pSrc->common.repeat != PIXMAN_REPEAT_NORMAL) { ++ fbCompositeTransformNearestNonrotatedAffineTrivialclipOver_8888x0565( ++ pSrc, pDst, xSrc, ySrc, xDst, yDst, width, height, ++ v.vector[0], v.vector[1], unit.vector[0], unit.vector[1]); ++ return 1; ++ } ++ if (pSrc->common.filter == PIXMAN_FILTER_NEAREST && pSrc->common.repeat == PIXMAN_REPEAT_NORMAL) { ++ fbCompositeTransformNearestNonrotatedAffineTrivialclipRepeatOver_8888x0565( ++ pSrc, pDst, xSrc, ySrc, xDst, yDst, width, height, ++ v.vector[0], v.vector[1], unit.vector[0], unit.vector[1]); ++ return 1; ++ } ++ } ++ ++ if (op == PIXMAN_OP_SRC && pSrc->bits.format == PIXMAN_r5g6b5 && pDst->bits.format == PIXMAN_r5g6b5) ++ { ++ if (pSrc->common.filter == PIXMAN_FILTER_NEAREST && pSrc->common.repeat != PIXMAN_REPEAT_NORMAL) { ++ fbCompositeTransformNearestNonrotatedAffineTrivialclipSrc_0565x0565( ++ pSrc, pDst, xSrc, ySrc, xDst, yDst, width, height, ++ v.vector[0], v.vector[1], unit.vector[0], unit.vector[1]); ++ return 1; ++ } ++ if (pSrc->common.filter == PIXMAN_FILTER_NEAREST && pSrc->common.repeat == PIXMAN_REPEAT_NORMAL) { ++ fbCompositeTransformNearestNonrotatedAffineTrivialclipRepeatSrc_0565x0565( ++ pSrc, pDst, xSrc, ySrc, xDst, yDst, width, height, ++ v.vector[0], v.vector[1], unit.vector[0], unit.vector[1]); ++ return 1; ++ } ++ } ++ ++ if (op == PIXMAN_OP_SRC && (pSrc->bits.format == PIXMAN_x8r8g8b8 || pSrc->bits.format == PIXMAN_a8r8g8b8) ++ && pDst->bits.format == PIXMAN_r5g6b5) ++ { ++ if (pSrc->common.filter == PIXMAN_FILTER_NEAREST && pSrc->common.repeat != PIXMAN_REPEAT_NORMAL) { ++ fbCompositeTransformNearestNonrotatedAffineTrivialclipSrc_8888x0565( ++ pSrc, pDst, xSrc, ySrc, xDst, yDst, width, height, ++ v.vector[0], v.vector[1], unit.vector[0], unit.vector[1]); ++ return 1; ++ } ++ if (pSrc->common.filter == PIXMAN_FILTER_NEAREST && pSrc->common.repeat == PIXMAN_REPEAT_NORMAL) { ++ fbCompositeTransformNearestNonrotatedAffineTrivialclipRepeatSrc_8888x0565( ++ pSrc, pDst, xSrc, ySrc, xDst, yDst, width, height, ++ v.vector[0], v.vector[1], unit.vector[0], unit.vector[1]); ++ return 1; ++ } ++ } ++ ++ /* No fastpath scaling implemented for this case */ ++ return 0; ++} ++ + static void + fast_path_composite (pixman_implementation_t *imp, + pixman_op_t op, +@@ -1279,6 +2266,30 @@ fast_path_composite (pixman_implementation_t *imp, + if (src->type == BITS + && src->common.transform + && !mask ++ && !src->common.alpha_map && !dest->common.alpha_map ++ && (src->common.filter == PIXMAN_FILTER_NEAREST) ++ && !src->bits.read_func && !src->bits.write_func ++ && !dest->bits.read_func && !dest->bits.write_func) ++ { ++ /* ensure that the transform matrix only has a scale */ ++ if (src->common.transform->matrix[0][1] == 0 && ++ src->common.transform->matrix[1][0] == 0 && ++ src->common.transform->matrix[2][0] == 0 && ++ src->common.transform->matrix[2][1] == 0 && ++ src->common.transform->matrix[2][2] == pixman_fixed_1 && ++ dest->common.clip_region.data == NULL) ++ { ++ if (fbCompositeTransformNonrotatedAffineTrivialclip (op, src, mask, dest, ++ src_x, src_y, mask_x, mask_y, dest_x, dest_y, width, height)) ++ { ++ return; ++ } ++ } ++ } ++ ++ if (src->type == BITS ++ && src->common.transform ++ && !mask + && op == PIXMAN_OP_SRC + && !src->common.alpha_map && !dest->common.alpha_map + && (src->common.filter == PIXMAN_FILTER_NEAREST) diff --git a/recipes/obsolete/xorg/xorg-lib/pixman/over-n-8-0565.patch b/recipes/obsolete/xorg/xorg-lib/pixman/over-n-8-0565.patch new file mode 100644 index 0000000000..3911068d94 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/pixman/over-n-8-0565.patch @@ -0,0 +1,231 @@ +From de2221a32d0b6628116565563f7b4ccd0a44e8b6 Mon Sep 17 00:00:00 2001 +From: Siarhei Siamashka <siarhei.siamashka@nokia.com> +Date: Thu, 04 Mar 2010 23:20:25 +0000 +Subject: ARM: added 'armv6_composite_over_n_8_0565' fast path + +Provides ~3x performance improvement when working with +data in L1 cache and memory. This fast path is important +for fonts rendering when using 16bpp desktop. + +Microbenchmark from N800 (ARM11 @ 400MHz), measured in MPix/s: + +before: + + over_n_8_0565 = L1: 2.99 M: 2.86 + +after: + + over_n_8_0565 = L1: 9.07 M: 8.05 +--- +diff --git a/pixman/pixman-arm-simd.c b/pixman/pixman-arm-simd.c +index 09a2888..c375c01 100644 +--- a/pixman/pixman-arm-simd.c ++++ b/pixman/pixman-arm-simd.c +@@ -419,6 +419,193 @@ arm_composite_over_n_8_8888 (pixman_implementation_t * impl, + } + } + ++#if defined(__ARM_EABI__) && defined(__linux__) ++/* ++ * ARMv6 assembly optimized version of 'composite_over_n_8_0565'. It is ++ * a bare metal 'naked' function which uses all the available CPU registers ++ * and is compatible with ARM EABI. It might (or might not) break when used ++ * with a different ABI, anyway it is better to be safe than sorry. ++ */ ++static void __attribute__((naked)) armv6_composite_over_n_8_0565_asm ( ++ uint16_t *dst, uint8_t *mask, uint32_t src, int w, ++ int dst_stride_delta, int mask_stride_delta, int h) ++{ ++ asm volatile ( ++ ".macro composite_internal_armv6_asm opaque_flag\n" ++ /* save all registers (8 words) to stack */ ++ "stmdb sp!, {r4-r11, ip, lr}\n" ++ /* some register aliases for better readability */ ++ "DST .req r0\n" ++ "MASK .req r1\n" ++ "S .req r2\n" ++ "W .req r3\n" ++ "A .req r8\n" ++ "D .req r10\n" ++ "C0000FF .req r11\n" ++ "C00001F .req r9\n" ++ "C800080 .req ip\n" ++ "CE000E0 .req lr\n" ++ /* precalculate some stuff and put it on stack */ ++ "mov r6, #0xF8\n" ++ "mov r7, #0xFC\n" ++ ++ "str W, [sp, #-8]!\n" ++ ++ ".if \\opaque_flag\n" ++ /* precalculate and save it to stack for later use: ++ * ((src >> 3) & 0x001F) | ++ * ((src >> 5) & 0x07E0) | ++ * ((src >> 8) & 0xF800) ++ */ ++ "mov A, #0x1F\n" ++ "and D, A, S, lsr #3\n" ++ "and r4, S, #0xF80000\n" ++ "and r5, S, #0xFC00\n" ++ "orr D, r4, lsr #8\n" ++ "orr D, r5, lsr #5\n" ++ "str D, [sp, #4]\n" ++ ".endif\n" ++ ++ "ldr D, [sp, #(8 + 10*4 + 8)]\n" /* h */ ++ "ldr A, =0xFF00FF\n" ++ "ldr C800080, =0x800080\n" ++ "ldr CE000E0, =0xE000E0\n" ++ "ldr C0000FF, =0xFF\n" ++ "ldr C00001F, =0x1F\n" ++ "and r4, A, S\n" /* r4 = src & 0x00FF00FF */ ++ "and r5, A, S, lsr #8\n" /* r5 = (src >> 8) & 0x00FF00FF */ ++ "stmdb sp!, {r4, r5, r6, r7}\n" ++ "0:\n" ++ "subs D, D, #1\n" ++ "blt 6f\n" ++ "1:\n" ++ "subs W, W, #1\n" ++ "blt 5f\n" ++ "2:\n" ++ "ldrb A, [MASK], #1\n" ++ "ldmia sp, {r4, r5, r6, r7}\n" /* load constants from stack */ ++ "add DST, DST, #2\n" ++ "cmp A, #0\n" ++ "beq 1b\n" ++ ++ ".if \\opaque_flag\n" ++ "cmp A, #0xFF\n" ++ "bne 3f\n" ++ "ldr D, [sp, #(4*4 + 4)]\n" /* load precalculated value */ ++ "subs W, #1\n" ++ "strh D, [DST, #-2]\n" ++ "bge 2b\n" ++ ".endif\n" ++ ++ "3:\n" ++ "ldrh D, [DST, #-2]\n" ++ "mla r4, A, r4, C800080\n" ++ "mla r5, A, r5, C800080\n" ++ "and r6, r6, D, lsl #3\n" /* & 0xF8 */ ++ "and r7, r7, D, lsr #3\n" /* & 0xFC */ ++ "and D, D, #0xF800\n" ++ "bic S, r4, #0xFF0000\n" ++ "bic A, r5, #0xFF0000\n" ++ "add r4, r4, S, lsr #8\n" ++ "add r5, r5, A, lsr #8\n" ++ ++ "and S, r7, #0xC0\n" ++ "orr r6, r6, D, lsl #8\n" ++ "and D, r6, CE000E0\n" ++ "eor A, C0000FF, r5, lsr #24\n" ++ "orr r6, D, lsr #5\n" ++ "orr r7, S, lsr #6\n" ++ ++ "mla r6, A, r6, C800080\n" ++ "mla r7, A, r7, C800080\n" ++ "subs W, #1\n" ++ "bic D, r6, #0xFF0000\n" ++ "bic A, r7, #0xFF0000\n" ++ "add r6, r6, D, lsr #8\n" ++ "uqadd8 r4, r4, r6\n" ++ "add r7, r7, A, lsr #8\n" ++ "uqadd8 r5, r5, r7\n" ++ "and D, C00001F, r4, lsr #11\n" ++ "and r4, r4, #0xF8000000\n" ++ "and r5, r5, #0xFC00\n" ++ "orr D, r4, lsr #16\n" ++ "orr D, r5, lsr #5\n" ++ "strh D, [DST, #-2]\n" ++ "bge 2b\n" ++ "5:\n" ++ "ldr r6, [sp, #(4*4 + 8 + 10*4 + 8)]\n" /* h */ ++ "ldr r4, [sp, #(4*4 + 8 + 10*4 + 4)]\n" /* mask stride */ ++ "ldr r5, [sp, #(4*4 + 8 + 10*4 + 0)]\n" /* dst stride */ ++ "ldr W, [sp, #(4*4)]\n" ++ "subs r6, r6, #1\n" /* h */ ++ "str r6, [sp, #(4*4 + 8 + 10*4 + 8)]\n" /* h */ ++ "add MASK, MASK, r4\n" ++ "add DST, DST, r5, lsl #1\n" ++ "bgt 1b\n" ++ "6:\n" ++ "add sp, sp, #(4*4 + 8)\n" ++ /* restore all registers and return */ ++ "ldmia sp!, {r4-r11, ip, pc}\n" ++ ".unreq DST\n" ++ ".unreq MASK\n" ++ ".unreq S\n" ++ ".unreq W\n" ++ ".unreq A\n" ++ ".unreq D\n" ++ ".unreq C0000FF\n" ++ ".unreq C00001F\n" ++ ".unreq C800080\n" ++ ".unreq CE000E0\n" ++ ".endm\n" ++ ++ "mov ip, r2, lsr #24\n" ++ "cmp ip, #0xFF\n" ++ "beq 9f\n" ++ "composite_internal_armv6_asm 0\n" ++ "9:\n" ++ "composite_internal_armv6_asm 1\n" ++ ".ltorg\n" ++ ".purgem composite_internal_armv6_asm\n" ++ ); ++} ++ ++static void ++armv6_composite_over_n_8_0565 (pixman_implementation_t * impl, ++ pixman_op_t op, ++ pixman_image_t * src_image, ++ pixman_image_t * mask_image, ++ pixman_image_t * dst_image, ++ int32_t src_x, ++ int32_t src_y, ++ int32_t mask_x, ++ int32_t mask_y, ++ int32_t dest_x, ++ int32_t dest_y, ++ int32_t width, ++ int32_t height) ++{ ++ uint32_t src; ++ uint16_t *dst; ++ uint8_t *mask; ++ int dst_stride, mask_stride; ++ ++ src = _pixman_image_get_solid (src_image, dst_image->bits.format); ++ ++ /* bail out if fully transparent */ ++ if (src == 0) ++ return; ++ ++ PIXMAN_IMAGE_GET_LINE (dst_image, dest_x, dest_y, uint16_t, ++ dst_stride, dst, 1); ++ PIXMAN_IMAGE_GET_LINE (mask_image, mask_x, mask_y, uint8_t, ++ mask_stride, mask, 1); ++ ++ armv6_composite_over_n_8_0565_asm (dst, mask, src, width, ++ dst_stride - width, mask_stride - width, height); ++} ++ ++#endif ++ + static const pixman_fast_path_t arm_simd_fast_paths[] = + { + PIXMAN_STD_FAST_PATH (OVER, a8r8g8b8, null, a8r8g8b8, arm_composite_over_8888_8888), +@@ -434,7 +621,10 @@ static const pixman_fast_path_t arm_simd_fast_paths[] = + PIXMAN_STD_FAST_PATH (OVER, solid, a8, x8r8g8b8, arm_composite_over_n_8_8888), + PIXMAN_STD_FAST_PATH (OVER, solid, a8, a8b8g8r8, arm_composite_over_n_8_8888), + PIXMAN_STD_FAST_PATH (OVER, solid, a8, x8b8g8r8, arm_composite_over_n_8_8888), +- ++#if defined(__ARM_EABI__) && defined(__linux__) ++ PIXMAN_STD_FAST_PATH (OVER, solid, a8, r5g6b5, armv6_composite_over_n_8_0565), ++ PIXMAN_STD_FAST_PATH (OVER, solid, a8, b5g6r5, armv6_composite_over_n_8_0565), ++#endif + { PIXMAN_OP_NONE }, + }; + +-- +cgit v0.8.3-6-g21f6 diff --git a/recipes/obsolete/xorg/xorg-lib/pixman/pixman-28986.patch b/recipes/obsolete/xorg/xorg-lib/pixman/pixman-28986.patch new file mode 100644 index 0000000000..f5ba4c302e --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/pixman/pixman-28986.patch @@ -0,0 +1,32 @@ +From 7b7860d61fb1526acdf010dd8fd644bbf1396b9e Mon Sep 17 00:00:00 2001 +From: Siarhei Siamashka <siarhei.siamashka@nokia.com> +Date: Fri, 28 Aug 2009 22:34:21 +0300 +Subject: [PATCH] ARM: workaround for gcc bug in vshll_n_u8 intrinsic + +Some versions of gcc (cs2009q1, 4.4.1) incorrectly reject +shift operand having value >= 8, claiming that it is out of +range. So inline assembly is used as a workaround. +--- + pixman/pixman-arm-neon.c | 6 ++++++ + 1 files changed, 6 insertions(+), 0 deletions(-) + +diff --git a/pixman/pixman-arm-neon.c b/pixman/pixman-arm-neon.c +index 4125d1b..3e7f566 100644 +--- a/pixman/pixman-arm-neon.c ++++ b/pixman/pixman-arm-neon.c +@@ -64,6 +64,12 @@ unpack0565 (uint16x8_t rgb) + return res; + } + ++#ifdef USE_GCC_INLINE_ASM ++/* Some versions of gcc have problems with vshll_n_u8 intrinsic (Bug 23576) */ ++#define vshll_n_u8(a, n) ({ uint16x8_t r; \ ++ asm ("vshll.u8 %q0, %P1, %2\n" : "=w" (r) : "w" (a), "i" (n)); r; }) ++#endif ++ + static force_inline uint16x8_t + pack0565 (uint8x8x4_t s) + { +-- +1.5.4.3 + diff --git a/recipes/obsolete/xorg/xorg-lib/pixman/prefetch.patch b/recipes/obsolete/xorg/xorg-lib/pixman/prefetch.patch new file mode 100644 index 0000000000..c2e856ec25 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/pixman/prefetch.patch @@ -0,0 +1,298 @@ +From d0044bfbd596f22ed1560579ea6537b39f3dc1af Mon Sep 17 00:00:00 2001 +From: Siarhei Siamashka <siarhei.siamashka@nokia.com> +Date: Thu, 29 Oct 2009 19:06:42 +0000 +Subject: ARM: Don't emit prefetch code if prefetch distance is set to 0 + +Also it is now possible to disable prefetch globally with +a configuration macro +--- +diff --git a/pixman/pixman-arm-neon-asm.S b/pixman/pixman-arm-neon-asm.S +index bca499a..35e6a7e 100644 +--- a/pixman/pixman-arm-neon-asm.S ++++ b/pixman/pixman-arm-neon-asm.S +@@ -219,33 +219,33 @@ + vshrn.u16 d7, q2, #3 + vsli.u16 q2, q2, #5 + vshll.u8 q14, d16, #8 +- add PF_X, PF_X, #8 ++ PF add PF_X, PF_X, #8 + vshll.u8 q8, d19, #8 +- tst PF_CTL, #0xF ++ PF tst PF_CTL, #0xF + vsri.u8 d6, d6, #5 +- addne PF_X, PF_X, #8 ++ PF addne PF_X, PF_X, #8 + vmvn.8 d3, d3 +- subne PF_CTL, PF_CTL, #1 ++ PF subne PF_CTL, PF_CTL, #1 + vsri.u8 d7, d7, #6 + vshrn.u16 d30, q2, #2 + vmull.u8 q10, d3, d6 +- pld [PF_SRC, PF_X, lsl #src_bpp_shift] ++ PF pld, [PF_SRC, PF_X, lsl #src_bpp_shift] + vmull.u8 q11, d3, d7 + vmull.u8 q12, d3, d30 +- pld [PF_DST, PF_X, lsl #dst_bpp_shift] ++ PF pld, [PF_DST, PF_X, lsl #dst_bpp_shift] + vsri.u16 q14, q8, #5 +- cmp PF_X, ORIG_W ++ PF cmp PF_X, ORIG_W + vshll.u8 q9, d18, #8 + vrshr.u16 q13, q10, #8 +- subge PF_X, PF_X, ORIG_W ++ PF subge PF_X, PF_X, ORIG_W + vrshr.u16 q3, q11, #8 + vrshr.u16 q15, q12, #8 +- subges PF_CTL, PF_CTL, #0x10 ++ PF subges PF_CTL, PF_CTL, #0x10 + vsri.u16 q14, q9, #11 +- ldrgeb DUMMY, [PF_SRC, SRC_STRIDE, lsl #src_bpp_shift]! ++ PF ldrgeb DUMMY, [PF_SRC, SRC_STRIDE, lsl #src_bpp_shift]! + vraddhn.u16 d20, q10, q13 + vraddhn.u16 d23, q11, q3 +- ldrgeb DUMMY, [PF_DST, DST_STRIDE, lsl #dst_bpp_shift]! ++ PF ldrgeb DUMMY, [PF_DST, DST_STRIDE, lsl #dst_bpp_shift]! + vraddhn.u16 d22, q12, q15 + vst1.16 {d28, d29}, [DST_W, :128]! + .endm +@@ -323,20 +323,20 @@ generate_composite_function \ + + .macro pixman_composite_src_8888_0565_process_pixblock_tail_head + vsri.u16 q14, q8, #5 +- add PF_X, PF_X, #8 +- tst PF_CTL, #0xF ++ PF add PF_X, PF_X, #8 ++ PF tst PF_CTL, #0xF + vld4.8 {d0, d1, d2, d3}, [SRC]! +- addne PF_X, PF_X, #8 +- subne PF_CTL, PF_CTL, #1 ++ PF addne PF_X, PF_X, #8 ++ PF subne PF_CTL, PF_CTL, #1 + vsri.u16 q14, q9, #11 +- cmp PF_X, ORIG_W +- pld [PF_SRC, PF_X, lsl #src_bpp_shift] ++ PF cmp PF_X, ORIG_W ++ PF pld, [PF_SRC, PF_X, lsl #src_bpp_shift] + vshll.u8 q8, d1, #8 + vst1.16 {d28, d29}, [DST_W, :128]! +- subge PF_X, PF_X, ORIG_W +- subges PF_CTL, PF_CTL, #0x10 ++ PF subge PF_X, PF_X, ORIG_W ++ PF subges PF_CTL, PF_CTL, #0x10 + vshll.u8 q14, d2, #8 +- ldrgeb DUMMY, [PF_SRC, SRC_STRIDE, lsl #src_bpp_shift]! ++ PF ldrgeb DUMMY, [PF_SRC, SRC_STRIDE, lsl #src_bpp_shift]! + vshll.u8 q9, d0, #8 + .endm + +@@ -363,20 +363,20 @@ generate_composite_function \ + + .macro pixman_composite_add_8000_8000_process_pixblock_tail_head + vld1.8 {d0, d1, d2, d3}, [SRC]! +- add PF_X, PF_X, #32 +- tst PF_CTL, #0xF ++ PF add PF_X, PF_X, #32 ++ PF tst PF_CTL, #0xF + vld1.8 {d4, d5, d6, d7}, [DST_R, :128]! +- addne PF_X, PF_X, #32 +- subne PF_CTL, PF_CTL, #1 ++ PF addne PF_X, PF_X, #32 ++ PF subne PF_CTL, PF_CTL, #1 + vst1.8 {d28, d29, d30, d31}, [DST_W, :128]! +- cmp PF_X, ORIG_W +- pld [PF_SRC, PF_X, lsl #src_bpp_shift] +- pld [PF_DST, PF_X, lsl #dst_bpp_shift] +- subge PF_X, PF_X, ORIG_W +- subges PF_CTL, PF_CTL, #0x10 ++ PF cmp PF_X, ORIG_W ++ PF pld, [PF_SRC, PF_X, lsl #src_bpp_shift] ++ PF pld, [PF_DST, PF_X, lsl #dst_bpp_shift] ++ PF subge PF_X, PF_X, ORIG_W ++ PF subges PF_CTL, PF_CTL, #0x10 + vqadd.u8 q14, q0, q2 +- ldrgeb DUMMY, [PF_SRC, SRC_STRIDE, lsl #src_bpp_shift]! +- ldrgeb DUMMY, [PF_DST, DST_STRIDE, lsl #dst_bpp_shift]! ++ PF ldrgeb DUMMY, [PF_SRC, SRC_STRIDE, lsl #src_bpp_shift]! ++ PF ldrgeb DUMMY, [PF_DST, DST_STRIDE, lsl #dst_bpp_shift]! + vqadd.u8 q15, q1, q3 + .endm + +@@ -418,32 +418,32 @@ generate_composite_function \ + .macro pixman_composite_over_8888_8888_process_pixblock_tail_head + vld4.8 {d4, d5, d6, d7}, [DST_R, :128]! + vrshr.u16 q14, q8, #8 +- add PF_X, PF_X, #8 +- tst PF_CTL, #0xF ++ 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 +- addne PF_X, PF_X, #8 +- subne PF_CTL, PF_CTL, #1 ++ PF addne PF_X, PF_X, #8 ++ PF subne PF_CTL, PF_CTL, #1 + vraddhn.u16 d28, q14, q8 + vraddhn.u16 d29, q15, q9 +- cmp PF_X, ORIG_W ++ PF cmp PF_X, ORIG_W + vraddhn.u16 d30, q12, q10 + vraddhn.u16 d31, q13, q11 + vqadd.u8 q14, q0, q14 + vqadd.u8 q15, q1, q15 + vld4.8 {d0, d1, d2, d3}, [SRC]! +- pld [PF_SRC, PF_X, lsl #src_bpp_shift] ++ PF pld, [PF_SRC, PF_X, lsl #src_bpp_shift] + vmvn.8 d22, d3 +- pld [PF_DST, PF_X, lsl #dst_bpp_shift] ++ PF pld, [PF_DST, PF_X, lsl #dst_bpp_shift] + vst4.8 {d28, d29, d30, d31}, [DST_W, :128]! +- subge PF_X, PF_X, ORIG_W ++ PF subge PF_X, PF_X, ORIG_W + vmull.u8 q8, d22, d4 +- subges PF_CTL, PF_CTL, #0x10 ++ PF subges PF_CTL, PF_CTL, #0x10 + vmull.u8 q9, d22, d5 +- ldrgeb DUMMY, [PF_SRC, SRC_STRIDE, lsl #src_bpp_shift]! ++ PF ldrgeb DUMMY, [PF_SRC, SRC_STRIDE, lsl #src_bpp_shift]! + vmull.u8 q10, d22, d6 +- ldrgeb DUMMY, [PF_DST, DST_STRIDE, lsl #dst_bpp_shift]! ++ PF ldrgeb DUMMY, [PF_DST, DST_STRIDE, lsl #dst_bpp_shift]! + vmull.u8 q11, d22, d7 + .endm + +diff --git a/pixman/pixman-arm-neon-asm.h b/pixman/pixman-arm-neon-asm.h +index d276ab9..a2941ae 100644 +--- a/pixman/pixman-arm-neon-asm.h ++++ b/pixman/pixman-arm-neon-asm.h +@@ -58,6 +58,11 @@ + #define RESPECT_STRICT_ALIGNMENT 1 + + /* ++ * If set to nonzero value, prefetch is globally disabled ++ */ ++#define PREFETCH_GLOBALLY_DISABLED 0 ++ ++/* + * Definitions of supplementary pixld/pixst macros (for partial load/store of + * pixel data) + */ +@@ -218,37 +223,43 @@ + * pixels processing like simple copy. Anyway, having prefetch is a must + * when working with graphics data. + */ ++.macro PF a, x:vararg ++.if (ADVANCED_PREFETCH_ENABLED != 0) && (PREFETCH_GLOBALLY_DISABLED == 0) ++ a x ++.endif ++.endm ++ + .macro cache_preload std_increment, boost_increment + .if (src_bpp_shift >= 0) || (dst_r_bpp != 0) || (mask_bpp_shift >= 0) + .if regs_shortage +- ldr ORIG_W, [sp] /* If we are short on regs, ORIG_W is kept on stack */ ++ PF ldr ORIG_W, [sp] /* If we are short on regs, ORIG_W is kept on stack */ + .endif + .if std_increment != 0 +- add PF_X, PF_X, #std_increment ++ PF add PF_X, PF_X, #std_increment + .endif +- tst PF_CTL, #0xF +- addne PF_X, PF_X, #boost_increment +- subne PF_CTL, PF_CTL, #1 +- cmp PF_X, ORIG_W ++ PF tst PF_CTL, #0xF ++ PF addne PF_X, PF_X, #boost_increment ++ PF subne PF_CTL, PF_CTL, #1 ++ PF cmp PF_X, ORIG_W + .if src_bpp_shift >= 0 +- pld [PF_SRC, PF_X, lsl #src_bpp_shift] ++ PF pld, [PF_SRC, PF_X, lsl #src_bpp_shift] + .endif + .if dst_r_bpp != 0 +- pld [PF_DST, PF_X, lsl #dst_bpp_shift] ++ PF pld, [PF_DST, PF_X, lsl #dst_bpp_shift] + .endif + .if mask_bpp_shift >= 0 +- pld [PF_MASK, PF_X, lsl #mask_bpp_shift] ++ PF pld, [PF_MASK, PF_X, lsl #mask_bpp_shift] + .endif +- subge PF_X, PF_X, ORIG_W +- subges PF_CTL, PF_CTL, #0x10 ++ PF subge PF_X, PF_X, ORIG_W ++ PF subges PF_CTL, PF_CTL, #0x10 + .if src_bpp_shift >= 0 +- ldrgeb DUMMY, [PF_SRC, SRC_STRIDE, lsl #src_bpp_shift]! ++ PF ldrgeb DUMMY, [PF_SRC, SRC_STRIDE, lsl #src_bpp_shift]! + .endif + .if dst_r_bpp != 0 +- ldrgeb DUMMY, [PF_DST, DST_STRIDE, lsl #dst_bpp_shift]! ++ PF ldrgeb DUMMY, [PF_DST, DST_STRIDE, lsl #dst_bpp_shift]! + .endif + .if mask_bpp_shift >= 0 +- ldrgeb DUMMY, [PF_MASK, MASK_STRIDE, lsl #mask_bpp_shift]! ++ PF ldrgeb DUMMY, [PF_MASK, MASK_STRIDE, lsl #mask_bpp_shift]! + .endif + .endif + .endm +@@ -297,6 +308,12 @@ fname: + PF_DST .req r12 + PF_MASK .req r14 + ++.if prefetch_distance == 0 ++ .set ADVANCED_PREFETCH_ENABLED, 0 ++.else ++ .set ADVANCED_PREFETCH_ENABLED, 1 ++.endif ++ + .if mask_bpp == 0 + ORIG_W .req r7 /* saved original width */ + DUMMY .req r8 /* temporary register */ +@@ -374,12 +391,12 @@ fname: + ldr MASK_STRIDE, [sp, #52] + .endif + mov DST_R, DST_W +- mov PF_SRC, SRC +- mov PF_DST, DST_R +- mov PF_MASK, MASK +- mov PF_CTL, H, lsl #4 +- /* pf_ctl = 10 | ((h - 1) << 4) */ +- add PF_CTL, #(prefetch_distance - 0x10) ++ PF mov PF_SRC, SRC ++ PF mov PF_DST, DST_R ++ PF mov PF_MASK, MASK ++ /* PF_CTL = prefetch_distance | ((h - 1) << 4) */ ++ PF mov PF_CTL, H, lsl #4 ++ PF add PF_CTL, #(prefetch_distance - 0x10) + + init + .if regs_shortage +@@ -412,7 +429,7 @@ fname: + .else + add DST_R, DST_R, #lowbit + .endif +- add PF_X, PF_X, #(lowbit * 8 / dst_w_bpp) ++ PF add PF_X, PF_X, #(lowbit * 8 / dst_w_bpp) + sub W, W, #(lowbit * 8 / dst_w_bpp) + 1: + .endif +@@ -444,7 +461,7 @@ fname: + (src_basereg - pixblock_size * src_bpp / 64), SRC + pixld pixblock_size, mask_bpp, \ + (mask_basereg - pixblock_size * mask_bpp / 64), MASK +- add PF_X, PF_X, #pixblock_size ++ PF add PF_X, PF_X, #pixblock_size + process_pixblock_head + cache_preload 0, pixblock_size + subs W, W, #(pixblock_size * 2) +@@ -468,7 +485,7 @@ fname: + pixld chunk_size, src_bpp, src_basereg, SRC + pixld chunk_size, mask_bpp, mask_basereg, MASK + pixld_a chunk_size, dst_r_bpp, dst_r_basereg, DST_R +- add PF_X, PF_X, #chunk_size ++ PF add PF_X, PF_X, #chunk_size + 1: + .endif + .endr +-- +cgit v0.8.2 diff --git a/recipes/obsolete/xorg/xorg-lib/pixman/remove-broken.patch b/recipes/obsolete/xorg/xorg-lib/pixman/remove-broken.patch new file mode 100644 index 0000000000..fd025b4bbd --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/pixman/remove-broken.patch @@ -0,0 +1,826 @@ +From: Siarhei Siamashka <siarhei.siamashka@nokia.com> +Date: Sun, 26 Jul 2009 22:21:26 +0000 (+0300) +Subject: ARM: Removal of unused/broken NEON code +X-Git-Url: http://siarhei.siamashka.name/gitweb/?p=pixman.git;a=commitdiff_plain;h=7ef2322eefcccc28a2d45c0da22c0fee88b8f464 + +ARM: Removal of unused/broken NEON code +--- + +diff --git a/pixman/pixman-arm-neon.c b/pixman/pixman-arm-neon.c +index 4125d1b..9404c70 100644 +--- a/pixman/pixman-arm-neon.c ++++ b/pixman/pixman-arm-neon.c +@@ -1895,710 +1895,6 @@ pixman_fill_neon (uint32_t *bits, + #endif + } + +-/* TODO: is there a more generic way of doing this being introduced? */ +-#define NEON_SCANLINE_BUFFER_PIXELS (1024) +- +-static inline void +-neon_quadword_copy (void * dst, +- void * src, +- uint32_t count, /* of quadwords */ +- uint32_t trailer_count /* of bytes */) +-{ +- uint8_t *t_dst = dst, *t_src = src; +- +- /* Uses aligned multi-register loads to maximise read bandwidth +- * on uncached memory such as framebuffers +- * The accesses do not have the aligned qualifiers, so that the copy +- * may convert between aligned-uncached and unaligned-cached memory. +- * It is assumed that the CPU can infer alignedness from the address. +- */ +- +-#ifdef USE_GCC_INLINE_ASM +- +- asm volatile ( +- " cmp %[count], #8 \n" +- " blt 1f @ skip oversized fragments \n" +- "0: @ start with eight quadwords at a time \n" +- " sub %[count], %[count], #8 \n" +- " vld1.8 {d16, d17, d18, d19}, [%[src]]! \n" +- " vld1.8 {d20, d21, d22, d23}, [%[src]]! \n" +- " vld1.8 {d24, d25, d26, d27}, [%[src]]! \n" +- " vld1.8 {d28, d29, d30, d31}, [%[src]]! \n" +- " cmp %[count], #8 \n" +- " vst1.8 {d16, d17, d18, d19}, [%[dst]]! \n" +- " vst1.8 {d20, d21, d22, d23}, [%[dst]]! \n" +- " vst1.8 {d24, d25, d26, d27}, [%[dst]]! \n" +- " vst1.8 {d28, d29, d30, d31}, [%[dst]]! \n" +- " bge 0b \n" +- "1: @ four quadwords \n" +- " tst %[count], #4 \n" +- " beq 2f @ skip oversized fragment \n" +- " vld1.8 {d16, d17, d18, d19}, [%[src]]! \n" +- " vld1.8 {d20, d21, d22, d23}, [%[src]]! \n" +- " vst1.8 {d16, d17, d18, d19}, [%[dst]]! \n" +- " vst1.8 {d20, d21, d22, d23}, [%[dst]]! \n" +- "2: @ two quadwords \n" +- " tst %[count], #2 \n" +- " beq 3f @ skip oversized fragment \n" +- " vld1.8 {d16, d17, d18, d19}, [%[src]]! \n" +- " vst1.8 {d16, d17, d18, d19}, [%[dst]]! \n" +- "3: @ one quadword \n" +- " tst %[count], #1 \n" +- " beq 4f @ skip oversized fragment \n" +- " vld1.8 {d16, d17}, [%[src]]! \n" +- " vst1.8 {d16, d17}, [%[dst]]! \n" +- "4: @ end \n" +- +- /* Clobbered input registers marked as input/outputs */ +- : [dst] "+r" (t_dst), [src] "+r" (t_src), [count] "+r" (count) +- +- /* No unclobbered inputs */ +- : +- +- /* Clobbered vector registers */ +- : "d16", "d17", "d18", "d19", "d20", "d21", "d22", "d23", "d24", "d25", +- "d26", "d27", "d28", "d29", "d30", "d31", "cc", "memory"); +- +-#else +- +- while (count >= 8) +- { +- uint8x16x4_t t1 = vld4q_u8 (t_src); +- uint8x16x4_t t2 = vld4q_u8 (t_src + sizeof(uint8x16x4_t)); +- +- t_src += sizeof(uint8x16x4_t) * 2; +- vst4q_u8 (t_dst, t1); +- vst4q_u8 (t_dst + sizeof(uint8x16x4_t), t2); +- t_dst += sizeof(uint8x16x4_t) * 2; +- count -= 8; +- } +- +- if (count & 4) +- { +- uint8x16x4_t t1 = vld4q_u8 (t_src); +- +- t_src += sizeof(uint8x16x4_t); +- vst4q_u8 (t_dst, t1); +- t_dst += sizeof(uint8x16x4_t); +- } +- +- if (count & 2) +- { +- uint8x8x4_t t1 = vld4_u8 (t_src); +- +- t_src += sizeof(uint8x8x4_t); +- vst4_u8 (t_dst, t1); +- t_dst += sizeof(uint8x8x4_t); +- } +- +- if (count & 1) +- { +- uint8x16_t t1 = vld1q_u8 (t_src); +- +- t_src += sizeof(uint8x16_t); +- vst1q_u8 (t_dst, t1); +- t_dst += sizeof(uint8x16_t); +- } +- +-#endif /* !USE_GCC_INLINE_ASM */ +- +- if (trailer_count) +- { +- if (trailer_count & 8) +- { +- uint8x8_t t1 = vld1_u8 (t_src); +- +- t_src += sizeof(uint8x8_t); +- vst1_u8 (t_dst, t1); +- t_dst += sizeof(uint8x8_t); +- } +- +- if (trailer_count & 4) +- { +- *((uint32_t*) t_dst) = *((uint32_t*) t_src); +- +- t_dst += 4; +- t_src += 4; +- } +- +- if (trailer_count & 2) +- { +- *((uint16_t*) t_dst) = *((uint16_t*) t_src); +- +- t_dst += 2; +- t_src += 2; +- } +- +- if (trailer_count & 1) +- { +- *t_dst++ = *t_src++; +- } +- } +-} +- +-static inline void +-solid_over_565_8_pix_neon (uint32_t glyph_colour, +- uint16_t *dest, +- uint8_t * in_mask, +- uint32_t dest_stride, /* bytes, not elements */ +- uint32_t mask_stride, +- uint32_t count /* 8-pixel groups */) +-{ +- /* Inner loop of glyph blitter (solid colour, alpha mask) */ +- +-#ifdef USE_GCC_INLINE_ASM +- +- asm volatile ( +- " vld4.8 {d20[], d21[], d22[], d23[]}, [%[glyph_colour]] @ splat solid colour components \n" +- "0: @ loop \n" +- " vld1.16 {d0, d1}, [%[dest]] @ load first pixels from framebuffer \n" +- " vld1.8 {d17}, [%[in_mask]] @ load alpha mask of glyph \n" +- " vmull.u8 q9, d17, d23 @ apply glyph colour alpha to mask \n" +- " vshrn.u16 d17, q9, #8 @ reformat it to match original mask \n" +- " vmvn d18, d17 @ we need the inverse mask for the background \n" +- " vsli.u16 q3, q0, #5 @ duplicate framebuffer blue bits \n" +- " vshrn.u16 d2, q0, #8 @ unpack red from framebuffer pixels \n" +- " vshrn.u16 d4, q0, #3 @ unpack green \n" +- " vsri.u8 d2, d2, #5 @ duplicate red bits (extend 5 to 8) \n" +- " vshrn.u16 d6, q3, #2 @ unpack extended blue (truncate 10 to 8) \n" +- " vsri.u8 d4, d4, #6 @ duplicate green bits (extend 6 to 8) \n" +- " vmull.u8 q1, d2, d18 @ apply inverse mask to background red... \n" +- " vmull.u8 q2, d4, d18 @ ...green... \n" +- " vmull.u8 q3, d6, d18 @ ...blue \n" +- " subs %[count], %[count], #1 @ decrement/test loop counter \n" +- " vmlal.u8 q1, d17, d22 @ add masked foreground red... \n" +- " vmlal.u8 q2, d17, d21 @ ...green... \n" +- " vmlal.u8 q3, d17, d20 @ ...blue \n" +- " add %[in_mask], %[in_mask], %[mask_stride] @ advance mask pointer, while we wait \n" +- " vsri.16 q1, q2, #5 @ pack green behind red \n" +- " vsri.16 q1, q3, #11 @ pack blue into pixels \n" +- " vst1.16 {d2, d3}, [%[dest]] @ store composited pixels \n" +- " add %[dest], %[dest], %[dest_stride] @ advance framebuffer pointer \n" +- " bne 0b @ next please \n" +- +- /* Clobbered registers marked as input/outputs */ +- : [dest] "+r" (dest), [in_mask] "+r" (in_mask), [count] "+r" (count) +- +- /* Inputs */ +- : [dest_stride] "r" (dest_stride), [mask_stride] "r" (mask_stride), [glyph_colour] "r" (&glyph_colour) +- +- /* Clobbers, including the inputs we modify, and potentially lots of memory */ +- : "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7", "d17", "d18", "d19", +- "d20", "d21", "d22", "d23", "d24", "d25", "cc", "memory" +- ); +- +-#else +- +- uint8x8x4_t solid_colour = vld4_dup_u8 ((uint8_t*) &glyph_colour); +- +- while (count--) +- { +- uint16x8_t pixels = vld1q_u16 (dest); +- uint8x8_t mask = vshrn_n_u16 (vmull_u8 (solid_colour.val[3], vld1_u8 (in_mask)), 8); +- uint8x8_t mask_image = vmvn_u8 (mask); +- +- uint8x8_t t_red = vshrn_n_u16 (pixels, 8); +- uint8x8_t t_green = vshrn_n_u16 (pixels, 3); +- uint8x8_t t_blue = vshrn_n_u16 (vsli_n_u8 (pixels, pixels, 5), 2); +- +- uint16x8_t s_red = vmull_u8 (vsri_n_u8 (t_red, t_red, 5), mask_image); +- uint16x8_t s_green = vmull_u8 (vsri_n_u8 (t_green, t_green, 6), mask_image); +- uint16x8_t s_blue = vmull_u8 (t_blue, mask_image); +- +- s_red = vmlal (s_red, mask, solid_colour.val[2]); +- s_green = vmlal (s_green, mask, solid_colour.val[1]); +- s_blue = vmlal (s_blue, mask, solid_colour.val[0]); +- +- pixels = vsri_n_u16 (s_red, s_green, 5); +- pixels = vsri_n_u16 (pixels, s_blue, 11); +- vst1q_u16 (dest, pixels); +- +- dest += dest_stride; +- mask += mask_stride; +- } +- +-#endif +-} +- +-#if 0 /* this is broken currently */ +-static void +-neon_composite_over_n_8_0565 (pixman_implementation_t * impl, +- pixman_op_t op, +- pixman_image_t * src_image, +- pixman_image_t * mask_image, +- pixman_image_t * dst_image, +- int32_t src_x, +- int32_t src_y, +- int32_t mask_x, +- int32_t mask_y, +- int32_t dest_x, +- int32_t dest_y, +- int32_t width, +- int32_t height) +-{ +- uint32_t src, srca; +- uint16_t *dst_line, *aligned_line; +- uint8_t *mask_line; +- uint32_t dst_stride, mask_stride; +- uint32_t kernel_count, copy_count, copy_tail; +- uint8_t kernel_offset, copy_offset; +- +- src = _pixman_image_get_solid (src_image, dst_image->bits.format); +- +- /* bail out if fully transparent or degenerate */ +- srca = src >> 24; +- if (src == 0) +- return; +- +- if (width == 0 || height == 0) +- return; +- +- if (width > NEON_SCANLINE_BUFFER_PIXELS) +- { +- /* split the blit, so we can use a fixed-size scanline buffer +- * TODO: there must be a more elegant way of doing this. +- */ +- int x; +- for (x = 0; x < width; x += NEON_SCANLINE_BUFFER_PIXELS) +- { +- neon_composite_over_n_8_0565 ( +- impl, op, +- src_image, mask_image, dst_image, +- src_x + x, src_y, mask_x + x, mask_y, dest_x + x, dest_y, +- (x + NEON_SCANLINE_BUFFER_PIXELS > width) ? width - x : NEON_SCANLINE_BUFFER_PIXELS, height); +- } +- +- return; +- } +- +- PIXMAN_IMAGE_GET_LINE (dst_image, dest_x, dest_y, uint16_t, dst_stride, dst_line, 1); +- PIXMAN_IMAGE_GET_LINE (mask_image, mask_x, mask_y, uint8_t, mask_stride, mask_line, 1); +- +- /* keep within minimum number of aligned quadwords on width +- * while also keeping the minimum number of columns to process +- */ +- { +- unsigned long aligned_left = (unsigned long)(dst_line) & ~0xF; +- unsigned long aligned_right = (((unsigned long)(dst_line + width)) + 0xF) & ~0xF; +- unsigned long ceiling_length = (((unsigned long) width) * sizeof(*dst_line) + 0xF) & ~0xF; +- +- /* the fast copy should be quadword aligned */ +- copy_offset = dst_line - ((uint16_t*) aligned_left); +- aligned_line = dst_line - copy_offset; +- copy_count = (uint32_t) ((aligned_right - aligned_left) >> 4); +- copy_tail = 0; +- +- if (aligned_right - aligned_left > ceiling_length) +- { +- /* unaligned routine is tightest */ +- kernel_count = (uint32_t) (ceiling_length >> 4); +- kernel_offset = copy_offset; +- } +- else +- { +- /* aligned routine is equally tight, so it is safer to align */ +- kernel_count = copy_count; +- kernel_offset = 0; +- } +- +- /* We should avoid reading beyond scanline ends for safety */ +- if (aligned_line < (dst_line - dest_x) || +- (aligned_line + (copy_count * 16 / sizeof(*dst_line))) > ((dst_line - dest_x) + dst_image->bits.width)) +- { +- /* switch to precise read */ +- copy_offset = kernel_offset = 0; +- aligned_line = dst_line; +- kernel_count = (uint32_t) (ceiling_length >> 4); +- copy_count = (width * sizeof(*dst_line)) >> 4; +- copy_tail = (width * sizeof(*dst_line)) & 0xF; +- } +- } +- +- { +- uint16_t scan_line[NEON_SCANLINE_BUFFER_PIXELS + 8]; /* deliberately not initialised */ +- uint8_t glyph_line[NEON_SCANLINE_BUFFER_PIXELS + 8]; +- int y = height; +- +- /* row-major order */ +- /* left edge, middle block, right edge */ +- for ( ; y--; mask_line += mask_stride, aligned_line += dst_stride, dst_line += dst_stride) +- { +- /* We don't want to overrun the edges of the glyph, +- * so realign the edge data into known buffers +- */ +- neon_quadword_copy (glyph_line + copy_offset, mask_line, width >> 4, width & 0xF); +- +- /* Uncached framebuffer access is really, really slow +- * if we do it piecemeal. It should be much faster if we +- * grab it all at once. One scanline should easily fit in +- * L1 cache, so this should not waste RAM bandwidth. +- */ +- neon_quadword_copy (scan_line, aligned_line, copy_count, copy_tail); +- +- /* Apply the actual filter */ +- solid_over_565_8_pix_neon ( +- src, scan_line + kernel_offset, +- glyph_line + kernel_offset, 8 * sizeof(*dst_line), +- 8, kernel_count); +- +- /* Copy the modified scanline back */ +- neon_quadword_copy (dst_line, scan_line + copy_offset, +- width >> 3, (width & 7) * 2); +- } +- } +-} +-#endif +- +-#ifdef USE_GCC_INLINE_ASM +- +-static inline void +-plain_over_565_8_pix_neon (uint32_t colour, +- uint16_t *dest, +- uint32_t dest_stride, /* bytes, not elements */ +- uint32_t count /* 8-pixel groups */) +-{ +- /* Inner loop for plain translucent rects +- * (solid colour without alpha mask) +- */ +- asm volatile ( +- " vld4.8 {d20[], d21[], d22[], d23[]}, [%[colour]] @ solid colour load/splat \n" +- " vmull.u8 q12, d23, d22 @ premultiply alpha red \n" +- " vmull.u8 q13, d23, d21 @ premultiply alpha green \n" +- " vmull.u8 q14, d23, d20 @ premultiply alpha blue \n" +- " vmvn d18, d23 @ inverse alpha for background \n" +- "0: @ loop\n" +- " vld1.16 {d0, d1}, [%[dest]] @ load first pixels from framebuffer \n" +- " vshrn.u16 d2, q0, #8 @ unpack red from framebuffer pixels \n" +- " vshrn.u16 d4, q0, #3 @ unpack green \n" +- " vsli.u16 q3, q0, #5 @ duplicate framebuffer blue bits \n" +- " vsri.u8 d2, d2, #5 @ duplicate red bits (extend 5 to 8) \n" +- " vsri.u8 d4, d4, #6 @ duplicate green bits (extend 6 to 8) \n" +- " vshrn.u16 d6, q3, #2 @ unpack extended blue (truncate 10 to 8) \n" +- " vmov q0, q12 @ retrieve foreground red \n" +- " vmlal.u8 q0, d2, d18 @ blend red - my kingdom for a four-operand MLA \n" +- " vmov q1, q13 @ retrieve foreground green \n" +- " vmlal.u8 q1, d4, d18 @ blend green \n" +- " vmov q2, q14 @ retrieve foreground blue \n" +- " vmlal.u8 q2, d6, d18 @ blend blue \n" +- " subs %[count], %[count], #1 @ decrement/test loop counter \n" +- " vsri.16 q0, q1, #5 @ pack green behind red \n" +- " vsri.16 q0, q2, #11 @ pack blue into pixels \n" +- " vst1.16 {d0, d1}, [%[dest]] @ store composited pixels \n" +- " add %[dest], %[dest], %[dest_stride] @ advance framebuffer pointer \n" +- " bne 0b @ next please \n" +- +- /* Clobbered registers marked as input/outputs */ +- : [dest] "+r" (dest), [count] "+r" (count) +- +- /* Inputs */ +- : [dest_stride] "r" (dest_stride), [colour] "r" (&colour) +- +- /* Clobbers, including the inputs we modify, and +- * potentially lots of memory +- */ +- : "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7", "d18", "d19", +- "d20", "d21", "d22", "d23", "d24", "d25", "d26", "d27", "d28", "d29", +- "cc", "memory" +- ); +-} +- +-static void +-neon_composite_over_n_0565 (pixman_implementation_t * impl, +- pixman_op_t op, +- pixman_image_t * src_image, +- pixman_image_t * mask_image, +- pixman_image_t * dst_image, +- int32_t src_x, +- int32_t src_y, +- int32_t mask_x, +- int32_t mask_y, +- int32_t dest_x, +- int32_t dest_y, +- int32_t width, +- int32_t height) +-{ +- uint32_t src, srca; +- uint16_t *dst_line, *aligned_line; +- uint32_t dst_stride; +- uint32_t kernel_count, copy_count, copy_tail; +- uint8_t kernel_offset, copy_offset; +- +- src = _pixman_image_get_solid (src_image, dst_image->bits.format); +- +- /* bail out if fully transparent */ +- srca = src >> 24; +- if (src == 0) +- return; +- +- if (width == 0 || height == 0) +- return; +- +- if (width > NEON_SCANLINE_BUFFER_PIXELS) +- { +- /* split the blit, so we can use a fixed-size scanline buffer * +- * TODO: there must be a more elegant way of doing this. +- */ +- int x; +- +- for (x = 0; x < width; x += NEON_SCANLINE_BUFFER_PIXELS) +- { +- neon_composite_over_n_0565 ( +- impl, op, +- src_image, mask_image, dst_image, +- src_x + x, src_y, mask_x + x, mask_y, dest_x + x, dest_y, +- (x + NEON_SCANLINE_BUFFER_PIXELS > width) ? width - x : NEON_SCANLINE_BUFFER_PIXELS, height); +- } +- return; +- } +- +- PIXMAN_IMAGE_GET_LINE (dst_image, dest_x, dest_y, uint16_t, dst_stride, dst_line, 1); +- +- /* keep within minimum number of aligned quadwords on width +- * while also keeping the minimum number of columns to process +- */ +- { +- unsigned long aligned_left = (unsigned long)(dst_line) & ~0xF; +- unsigned long aligned_right = (((unsigned long)(dst_line + width)) + 0xF) & ~0xF; +- unsigned long ceiling_length = (((unsigned long) width) * sizeof(*dst_line) + 0xF) & ~0xF; +- +- /* the fast copy should be quadword aligned */ +- copy_offset = dst_line - ((uint16_t*) aligned_left); +- aligned_line = dst_line - copy_offset; +- copy_count = (uint32_t) ((aligned_right - aligned_left) >> 4); +- copy_tail = 0; +- +- if (aligned_right - aligned_left > ceiling_length) +- { +- /* unaligned routine is tightest */ +- kernel_count = (uint32_t) (ceiling_length >> 4); +- kernel_offset = copy_offset; +- } +- else +- { +- /* aligned routine is equally tight, so it is safer to align */ +- kernel_count = copy_count; +- kernel_offset = 0; +- } +- +- /* We should avoid reading beyond scanline ends for safety */ +- if (aligned_line < (dst_line - dest_x) || +- (aligned_line + (copy_count * 16 / sizeof(*dst_line))) > ((dst_line - dest_x) + dst_image->bits.width)) +- { +- /* switch to precise read */ +- copy_offset = kernel_offset = 0; +- aligned_line = dst_line; +- kernel_count = (uint32_t) (ceiling_length >> 4); +- copy_count = (width * sizeof(*dst_line)) >> 4; +- copy_tail = (width * sizeof(*dst_line)) & 0xF; +- } +- } +- +- { +- uint16_t scan_line[NEON_SCANLINE_BUFFER_PIXELS + 8]; /* deliberately not initialised */ +- +- /* row-major order */ +- /* left edge, middle block, right edge */ +- for ( ; height--; aligned_line += dst_stride, dst_line += dst_stride) +- { +- /* Uncached framebuffer access is really, really slow if we do it piecemeal. +- * It should be much faster if we grab it all at once. +- * One scanline should easily fit in L1 cache, so this should +- * not waste RAM bandwidth. +- */ +- neon_quadword_copy (scan_line, aligned_line, copy_count, copy_tail); +- +- /* Apply the actual filter */ +- plain_over_565_8_pix_neon ( +- src, scan_line + kernel_offset, 8 * sizeof(*dst_line), kernel_count); +- +- /* Copy the modified scanline back */ +- neon_quadword_copy ( +- dst_line, scan_line + copy_offset, width >> 3, (width & 7) * 2); +- } +- } +-} +- +-static inline void +-ARGB8_over_565_8_pix_neon (uint32_t *src, +- uint16_t *dest, +- uint32_t src_stride, /* bytes, not elements */ +- uint32_t count /* 8-pixel groups */) +-{ +- asm volatile ( +- "0: @ loop\n" +- " pld [%[src], %[src_stride]] @ preload from next scanline \n" +- " vld1.16 {d0, d1}, [%[dest]] @ load pixels from framebuffer \n" +- " vld4.8 {d20, d21, d22, d23},[%[src]]! @ load source image pixels \n" +- " vsli.u16 q3, q0, #5 @ duplicate framebuffer blue bits \n" +- " vshrn.u16 d2, q0, #8 @ unpack red from framebuffer pixels \n" +- " vshrn.u16 d4, q0, #3 @ unpack green \n" +- " vmvn d18, d23 @ we need the inverse alpha for the background \n" +- " vsri.u8 d2, d2, #5 @ duplicate red bits (extend 5 to 8) \n" +- " vshrn.u16 d6, q3, #2 @ unpack extended blue (truncate 10 to 8) \n" +- " vsri.u8 d4, d4, #6 @ duplicate green bits (extend 6 to 8) \n" +- " vmull.u8 q1, d2, d18 @ apply inverse alpha to background red... \n" +- " vmull.u8 q2, d4, d18 @ ...green... \n" +- " vmull.u8 q3, d6, d18 @ ...blue \n" +- " subs %[count], %[count], #1 @ decrement/test loop counter \n" +- " vmlal.u8 q1, d23, d22 @ add blended foreground red... \n" +- " vmlal.u8 q2, d23, d21 @ ...green... \n" +- " vmlal.u8 q3, d23, d20 @ ...blue \n" +- " vsri.16 q1, q2, #5 @ pack green behind red \n" +- " vsri.16 q1, q3, #11 @ pack blue into pixels \n" +- " vst1.16 {d2, d3}, [%[dest]]! @ store composited pixels \n" +- " bne 0b @ next please \n" +- +- /* Clobbered registers marked as input/outputs */ +- : [dest] "+r" (dest), [src] "+r" (src), [count] "+r" (count) +- +- /* Inputs */ +- : [src_stride] "r" (src_stride) +- +- /* Clobbers, including the inputs we modify, and potentially lots of memory */ +- : "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7", "d17", "d18", "d20", +- "d21", "d22", "d23", "cc", "memory" +- ); +-} +- +-static void +-neon_composite_over_8888_0565 (pixman_implementation_t * impl, +- pixman_op_t op, +- pixman_image_t * src_image, +- pixman_image_t * mask_image, +- pixman_image_t * dst_image, +- int32_t src_x, +- int32_t src_y, +- int32_t mask_x, +- int32_t mask_y, +- int32_t dest_x, +- int32_t dest_y, +- int32_t width, +- int32_t height) +-{ +- uint32_t *src_line; +- uint16_t *dst_line, *aligned_line; +- uint32_t dst_stride, src_stride; +- uint32_t kernel_count, copy_count, copy_tail; +- uint8_t kernel_offset, copy_offset; +- +- /* we assume mask is opaque +- * so the only alpha to deal with is embedded in src +- */ +- if (width > NEON_SCANLINE_BUFFER_PIXELS) +- { +- /* split the blit, so we can use a fixed-size scanline buffer */ +- int x; +- for (x = 0; x < width; x += NEON_SCANLINE_BUFFER_PIXELS) +- { +- neon_composite_over_8888_0565 ( +- impl, op, +- src_image, mask_image, dst_image, +- src_x + x, src_y, mask_x + x, mask_y, dest_x + x, dest_y, +- (x + NEON_SCANLINE_BUFFER_PIXELS > width) ? width - x : NEON_SCANLINE_BUFFER_PIXELS, height); +- } +- return; +- } +- +- PIXMAN_IMAGE_GET_LINE (dst_image, dest_x, dest_y, uint16_t, dst_stride, dst_line, 1); +- PIXMAN_IMAGE_GET_LINE (src_image, src_x, src_y, uint32_t, src_stride, src_line, 1); +- +- /* keep within minimum number of aligned quadwords on width +- * while also keeping the minimum number of columns to process +- */ +- { +- unsigned long aligned_left = (unsigned long)(dst_line) & ~0xF; +- unsigned long aligned_right = (((unsigned long)(dst_line + width)) + 0xF) & ~0xF; +- unsigned long ceiling_length = (((unsigned long) width) * sizeof(*dst_line) + 0xF) & ~0xF; +- +- /* the fast copy should be quadword aligned */ +- copy_offset = dst_line - ((uint16_t*) aligned_left); +- aligned_line = dst_line - copy_offset; +- copy_count = (uint32_t) ((aligned_right - aligned_left) >> 4); +- copy_tail = 0; +- +- if (aligned_right - aligned_left > ceiling_length) +- { +- /* unaligned routine is tightest */ +- kernel_count = (uint32_t) (ceiling_length >> 4); +- kernel_offset = copy_offset; +- } +- else +- { +- /* aligned routine is equally tight, so it is safer to align */ +- kernel_count = copy_count; +- kernel_offset = 0; +- } +- +- /* We should avoid reading beyond scanline ends for safety */ +- if (aligned_line < (dst_line - dest_x) || +- (aligned_line + (copy_count * 16 / sizeof(*dst_line))) > ((dst_line - dest_x) + dst_image->bits.width)) +- { +- /* switch to precise read */ +- copy_offset = kernel_offset = 0; +- aligned_line = dst_line; +- kernel_count = (uint32_t) (ceiling_length >> 4); +- copy_count = (width * sizeof(*dst_line)) >> 4; +- copy_tail = (width * sizeof(*dst_line)) & 0xF; +- } +- } +- +- /* Preload the first input scanline */ +- { +- uint8_t *src_ptr = (uint8_t*) src_line; +- uint32_t count = (width + 15) / 16; +- +-#ifdef USE_GCC_INLINE_ASM +- asm volatile ( +- "0: @ loop \n" +- " subs %[count], %[count], #1 \n" +- " pld [%[src]] \n" +- " add %[src], %[src], #64 \n" +- " bgt 0b \n" +- +- /* Clobbered input registers marked as input/outputs */ +- : [src] "+r" (src_ptr), [count] "+r" (count) +- : /* no unclobbered inputs */ +- : "cc" +- ); +-#else +- do +- { +- __pld (src_ptr); +- src_ptr += 64; +- } +- while (--count); +-#endif +- } +- +- { +- uint16_t scan_line[NEON_SCANLINE_BUFFER_PIXELS + 8]; /* deliberately not initialised */ +- +- /* row-major order */ +- /* left edge, middle block, right edge */ +- for ( ; height--; src_line += src_stride, aligned_line += dst_stride) +- { +- /* Uncached framebuffer access is really, really slow if we do +- * it piecemeal. It should be much faster if we grab it all at +- * once. One scanline should easily fit in L1 cache, so this +- * should not waste RAM bandwidth. +- */ +- neon_quadword_copy (scan_line, aligned_line, copy_count, copy_tail); +- +- /* Apply the actual filter */ +- ARGB8_over_565_8_pix_neon ( +- src_line, scan_line + kernel_offset, +- src_stride * sizeof(*src_line), kernel_count); +- +- /* Copy the modified scanline back */ +- neon_quadword_copy (dst_line, +- scan_line + copy_offset, +- width >> 3, (width & 7) * 2); +- } +- } +-} +- +-#endif /* USE_GCC_INLINE_ASM */ +- + static const pixman_fast_path_t arm_neon_fast_path_array[] = + { + { PIXMAN_OP_ADD, PIXMAN_solid, PIXMAN_a8, PIXMAN_a8, neon_composite_add_8888_8_8, 0 }, +@@ -2612,12 +1908,6 @@ static const pixman_fast_path_t arm_neon_fast_path_array[] = + #ifdef USE_GCC_INLINE_ASM + { PIXMAN_OP_SRC, PIXMAN_r5g6b5, PIXMAN_null, PIXMAN_r5g6b5, neon_composite_src_16_16, 0 }, + { PIXMAN_OP_SRC, PIXMAN_b5g6r5, PIXMAN_null, PIXMAN_b5g6r5, neon_composite_src_16_16, 0 }, +-#if 0 /* this code has some bugs */ +- { PIXMAN_OP_OVER, PIXMAN_solid, PIXMAN_null, PIXMAN_r5g6b5, neon_composite_over_n_0565, 0 }, +- { PIXMAN_OP_OVER, PIXMAN_solid, PIXMAN_null, PIXMAN_b5g6r5, neon_composite_over_n_0565, 0 }, +- { PIXMAN_OP_OVER, PIXMAN_a8r8g8b8, PIXMAN_null, PIXMAN_r5g6b5, neon_composite_over_8888_0565, 0 }, +- { PIXMAN_OP_OVER, PIXMAN_a8b8g8r8, PIXMAN_null, PIXMAN_b5g6r5, neon_composite_over_8888_0565, 0 }, +-#endif + #endif + { PIXMAN_OP_OVER, PIXMAN_a8r8g8b8, PIXMAN_null, PIXMAN_a8r8g8b8, neon_composite_over_8888_8888, 0 }, + { PIXMAN_OP_OVER, PIXMAN_a8r8g8b8, PIXMAN_null, PIXMAN_x8r8g8b8, neon_composite_over_8888_8888, 0 }, +@@ -2668,79 +1958,6 @@ arm_neon_composite (pixman_implementation_t *imp, + } + + static pixman_bool_t +-pixman_blt_neon (void *src_bits, +- void *dst_bits, +- int src_stride, +- int dst_stride, +- int src_bpp, +- int dst_bpp, +- int src_x, +- int src_y, +- int dst_x, +- int dst_y, +- int width, +- int height) +-{ +- if (!width || !height) +- return TRUE; +- +- /* accelerate only straight copies involving complete bytes */ +- if (src_bpp != dst_bpp || (src_bpp & 7)) +- return FALSE; +- +- { +- uint32_t bytes_per_pixel = src_bpp >> 3; +- uint32_t byte_width = width * bytes_per_pixel; +- /* parameter is in words for some reason */ +- int32_t src_stride_bytes = src_stride * 4; +- int32_t dst_stride_bytes = dst_stride * 4; +- uint8_t *src_bytes = ((uint8_t*) src_bits) + +- src_y * src_stride_bytes + src_x * bytes_per_pixel; +- uint8_t *dst_bytes = ((uint8_t*) dst_bits) + +- dst_y * dst_stride_bytes + dst_x * bytes_per_pixel; +- uint32_t quadword_count = byte_width / 16; +- uint32_t offset = byte_width % 16; +- +- while (height--) +- { +- neon_quadword_copy (dst_bytes, src_bytes, quadword_count, offset); +- src_bytes += src_stride_bytes; +- dst_bytes += dst_stride_bytes; +- } +- } +- +- return TRUE; +-} +- +-static pixman_bool_t +-arm_neon_blt (pixman_implementation_t *imp, +- uint32_t * src_bits, +- uint32_t * dst_bits, +- int src_stride, +- int dst_stride, +- int src_bpp, +- int dst_bpp, +- int src_x, +- int src_y, +- int dst_x, +- int dst_y, +- int width, +- int height) +-{ +- if (pixman_blt_neon ( +- src_bits, dst_bits, src_stride, dst_stride, src_bpp, dst_bpp, +- src_x, src_y, dst_x, dst_y, width, height)) +- { +- return TRUE; +- } +- +- return _pixman_implementation_blt ( +- imp->delegate, +- src_bits, dst_bits, src_stride, dst_stride, src_bpp, dst_bpp, +- src_x, src_y, dst_x, dst_y, width, height); +-} +- +-static pixman_bool_t + arm_neon_fill (pixman_implementation_t *imp, + uint32_t * bits, + int stride, +@@ -2765,9 +1982,6 @@ _pixman_implementation_create_arm_neon (void) + pixman_implementation_t *imp = _pixman_implementation_create (simd); + + imp->composite = arm_neon_composite; +-#if 0 /* this code has some bugs */ +- imp->blt = arm_neon_blt; +-#endif + imp->fill = arm_neon_fill; + + return imp; diff --git a/recipes/obsolete/xorg/xorg-lib/pixman/src-8888-0565.patch b/recipes/obsolete/xorg/xorg-lib/pixman/src-8888-0565.patch new file mode 100644 index 0000000000..c544225f65 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/pixman/src-8888-0565.patch @@ -0,0 +1,324 @@ +From 6494f9ae8820078d0e6109bf8f294156f7a5da4c Mon Sep 17 00:00:00 2001 +From: Siarhei Siamashka <siarhei.siamashka@nokia.com> +Date: Fri, 05 Mar 2010 00:40:34 +0000 +Subject: ARM: added 'armv6_composite_src_8888_0565' fast path + +Provides ~3x performance improvement when working with +data in L1 cache, and ~80% performace improvement when working +with memory. This fast path is important for 32bpp -> 16bpp +color format conversion and is commonly used with 16bpp desktop. + +Microbenchmark from N800 (ARM11 @ 400MHz), measured in MPix/s: + +before: + + src_8888_0565 = L1: 21.54 M: 15.62 + +after (armv4): + + src_8888_0565 = L1: 45.26 M: 23.29 + +after (armv6): + + src_8888_0565 = L1: 60.62 M: 28.37 +--- +diff --git a/pixman/pixman-arm-simd.c b/pixman/pixman-arm-simd.c +index c375c01..69243c1 100644 +--- a/pixman/pixman-arm-simd.c ++++ b/pixman/pixman-arm-simd.c +@@ -604,6 +604,282 @@ armv6_composite_over_n_8_0565 (pixman_implementation_t * impl, + dst_stride - width, mask_stride - width, height); + } + ++static inline void ++armv4_composite_src_8888_0565_asm ( ++ uint16_t *dst, uint32_t *src, int w, int dst_stride, ++ int src_stride, int h) ++{ ++ uint32_t a, x, y, c1F001F = 0x1F001F, cFFFF = 0xFFFF; ++ int backup_w = w; ++ while (h--) ++ { ++ w = backup_w; ++ if (w > 0 && (uintptr_t)dst & 2) ++ { ++ x = *src++; ++ ++ a = (x >> 3) & c1F001F; ++ x &= 0xFC00; ++ a |= a >> 5; ++ a |= x >> 5; ++ ++ *dst++ = a; ++ w--; ++ } ++ ++ asm volatile( ++ "subs %[w], %[w], #2\n" ++ "blt 2f\n" ++ "1:\n" ++ "ldr %[x], [%[src]], #4\n" ++ "ldr %[y], [%[src]], #4\n" ++ "subs %[w], %[w], #2\n" ++ ++ "and %[a], %[c1F001F], %[x], lsr #3\n" ++ "and %[x], %[x], #0xFC00\n\n" ++ "orr %[a], %[a], %[a], lsr #5\n" ++ "orr %[x], %[a], %[x], lsr #5\n" ++ ++ "and %[a], %[c1F001F], %[y], lsr #3\n" ++ "and %[y], %[y], #0xFC00\n\n" ++ "orr %[a], %[a], %[a], lsr #5\n" ++ "orr %[y], %[a], %[y], lsr #5\n" ++ /* ++ * Writing single 32-bit value is much faster than two ++ * separate 16-bit values for older CPUs without (efficient) ++ * write combining, even though it costs an extra instruction. ++ */ ++ "and %[x], %[x], %[cFFFF]\n" ++ "orr %[x], %[x], %[y], lsl #16\n" ++ "str %[x], [%[dst]], #4\n" ++ "bge 1b\n" ++ "2:\n" ++ : [c1F001F] "+&r" (c1F001F), [cFFFF] "+&r" (cFFFF), ++ [src] "+&r" (src), [dst] "+&r" (dst), [a] "=&r" (a), ++ [x] "=&r" (x), [y] "=&r" (y), [w] "+&r" (w) ++ ); ++ ++ if (w & 1) ++ { ++ x = *src++; ++ ++ a = (x >> 3) & c1F001F; ++ x = x & 0xFC00; ++ a |= a >> 5; ++ a |= x >> 5; ++ ++ *dst++ = a; ++ } ++ ++ src += src_stride - backup_w; ++ dst += dst_stride - backup_w; ++ } ++} ++ ++/* ++ * Conversion x8r8g8b8 -> r5g6b5 ++ * ++ * Note: 'w' must be >= 7 here ++ */ ++static void __attribute__((naked)) ++armv6_composite_src_8888_0565_asm ( ++ uint16_t *dst, uint32_t *src, int w, int dst_stride, ++ int src_stride, int h) ++{ ++ asm volatile( ++ /* define supplementary macros */ ++ ".macro cvt8888to565 PIX\n" ++ "and A, C1F001F, \\PIX, lsr #3\n" ++ "and \\PIX, \\PIX, #0xFC00\n\n" ++ "orr A, A, A, lsr #5\n" ++ "orr \\PIX, A, \\PIX, lsr #5\n" ++ ".endm\n" ++ ++ ".macro combine_pixels_pair PIX1, PIX2\n" ++ /* Note: assume little endian byte order */ ++ "pkhbt \\PIX1, \\PIX1, \\PIX2, lsl #16\n" ++ ".endm\n" ++ ++ /* function entry, save all registers (10 words) to stack */ ++ "stmdb sp!, {r4-r11, ip, lr}\n" ++ ++ /* define some aliases */ ++ "DST .req r0\n" ++ "SRC .req r1\n" ++ "W .req r2\n" ++ "H .req r3\n" ++ ++ "TMP1 .req r4\n" ++ "TMP2 .req r5\n" ++ "TMP3 .req r6\n" ++ "TMP4 .req r7\n" ++ "TMP5 .req r8\n" ++ "TMP6 .req r9\n" ++ "TMP7 .req r10\n" ++ "TMP8 .req r11\n" ++ ++ "C1F001F .req ip\n" ++ "A .req lr\n" ++ ++ "ldr TMP1, [sp, #(10*4+0)]\n" /* load src_stride */ ++ "ldr C1F001F, =0x1F001F\n" ++ "sub r3, r3, W\n" ++ "str r3, [sp, #(10*4+0)]\n" /* store (dst_stride-w) */ ++ "ldr r3, [sp, #(10*4+4)]\n" /* load h */ ++ "sub TMP1, TMP1, W\n" ++ "str TMP1, [sp, #(10*4+4)]\n" /* store (src_stride-w) */ ++ ++ "str W, [sp, #(8*4)]\n" /* saved ip = W */ ++ ++ "0:\n" ++ "subs H, H, #1\n" ++ "blt 6f\n" ++ "1:\n" ++ /* align DST at 4 byte boundary */ ++ "tst DST, #2\n" ++ "beq 2f\n" ++ "ldr TMP1, [SRC], #4\n" ++ "sub W, W, #1\n" ++ "cvt8888to565 TMP1\n" ++ "strh TMP1, [DST], #2\n" ++ "2:" ++ /* align DST at 8 byte boundary */ ++ "tst DST, #4\n" ++ "beq 2f\n" ++ "ldmia SRC!, {TMP1, TMP2}\n" ++ "sub W, W, #2\n" ++ "cvt8888to565 TMP1\n" ++ "cvt8888to565 TMP2\n" ++ "combine_pixels_pair TMP1, TMP2\n" ++ "str TMP1, [DST], #4\n" ++ "2:" ++ /* align DST at 16 byte boundary */ ++ "tst DST, #8\n" ++ "beq 2f\n" ++ "ldmia SRC!, {TMP1, TMP2, TMP3, TMP4}\n" ++ "sub W, W, #4\n" ++ "cvt8888to565 TMP1\n" ++ "cvt8888to565 TMP2\n" ++ "cvt8888to565 TMP3\n" ++ "cvt8888to565 TMP4\n" ++ "combine_pixels_pair TMP1, TMP2\n" ++ "combine_pixels_pair TMP3, TMP4\n" ++ "stmia DST!, {TMP1, TMP3}\n" ++ "2:" ++ /* inner loop, process 8 pixels per iteration */ ++ "subs W, W, #8\n" ++ "blt 4f\n" ++ "3:\n" ++ "ldmia SRC!, {TMP1, TMP2, TMP3, TMP4, TMP5, TMP6, TMP7, TMP8}\n" ++ "subs W, W, #8\n" ++ "cvt8888to565 TMP1\n" ++ "cvt8888to565 TMP2\n" ++ "cvt8888to565 TMP3\n" ++ "cvt8888to565 TMP4\n" ++ "cvt8888to565 TMP5\n" ++ "cvt8888to565 TMP6\n" ++ "cvt8888to565 TMP7\n" ++ "cvt8888to565 TMP8\n" ++ "combine_pixels_pair TMP1, TMP2\n" ++ "combine_pixels_pair TMP3, TMP4\n" ++ "combine_pixels_pair TMP5, TMP6\n" ++ "combine_pixels_pair TMP7, TMP8\n" ++ "stmia DST!, {TMP1, TMP3, TMP5, TMP7}\n" ++ "bge 3b\n" ++ "4:\n" ++ ++ /* process the remaining pixels */ ++ "tst W, #4\n" ++ "beq 4f\n" ++ "ldmia SRC!, {TMP1, TMP2, TMP3, TMP4}\n" ++ "cvt8888to565 TMP1\n" ++ "cvt8888to565 TMP2\n" ++ "cvt8888to565 TMP3\n" ++ "cvt8888to565 TMP4\n" ++ "combine_pixels_pair TMP1, TMP2\n" ++ "combine_pixels_pair TMP3, TMP4\n" ++ "stmia DST!, {TMP1, TMP3}\n" ++ "4:\n" ++ "tst W, #2\n" ++ "beq 4f\n" ++ "ldmia SRC!, {TMP1, TMP2}\n" ++ "cvt8888to565 TMP1\n" ++ "cvt8888to565 TMP2\n" ++ "combine_pixels_pair TMP1, TMP2\n" ++ "str TMP1, [DST], #4\n" ++ "4:\n" ++ "tst W, #1\n" ++ "beq 4f\n" ++ "ldr TMP1, [SRC], #4\n" ++ "cvt8888to565 TMP1\n" ++ "strh TMP1, [DST], #2\n" ++ "4:\n" ++ "ldr TMP1, [sp, #(10*4+0)]\n" /* (dst_stride-w) */ ++ "ldr TMP2, [sp, #(10*4+4)]\n" /* (src_stride-w) */ ++ "ldr W, [sp, #(8*4)]\n" ++ "subs H, H, #1\n" ++ "add DST, DST, TMP1, lsl #1\n" ++ "add SRC, SRC, TMP2, lsl #2\n" ++ "bge 1b\n" ++ "6:\n" ++ /* restore all registers and return */ ++ "ldmia sp!, {r4-r11, ip, pc}\n" ++ ".ltorg\n" ++ ++ ".unreq DST\n" ++ ".unreq SRC\n" ++ ".unreq W\n" ++ ".unreq H\n" ++ ++ ".unreq TMP1\n" ++ ".unreq TMP2\n" ++ ".unreq TMP3\n" ++ ".unreq TMP4\n" ++ ".unreq TMP5\n" ++ ".unreq TMP6\n" ++ ".unreq TMP7\n" ++ ".unreq TMP8\n" ++ ++ ".unreq C1F001F\n" ++ ".unreq A\n" ++ ++ ".purgem cvt8888to565\n" ++ ".purgem combine_pixels_pair\n" ++ ); ++} ++ ++static void ++armv6_composite_src_8888_0565 (pixman_implementation_t * impl, ++ pixman_op_t op, ++ pixman_image_t * src_image, ++ pixman_image_t * mask_image, ++ pixman_image_t * dst_image, ++ int32_t src_x, ++ int32_t src_y, ++ int32_t mask_x, ++ int32_t mask_y, ++ int32_t dest_x, ++ int32_t dest_y, ++ int32_t width, ++ int32_t height) ++{ ++ uint32_t *src; ++ uint16_t *dst; ++ int src_stride, dst_stride; ++ ++ PIXMAN_IMAGE_GET_LINE (dst_image, dest_x, dest_y, uint16_t, ++ dst_stride, dst, 1); ++ PIXMAN_IMAGE_GET_LINE (src_image, src_x, src_y, uint32_t, ++ src_stride, src, 1); ++ ++ if (width < 7) ++ armv4_composite_src_8888_0565_asm (dst, src, width, ++ dst_stride, src_stride, height); ++ else ++ armv6_composite_src_8888_0565_asm (dst, src, width, ++ dst_stride, src_stride, height); ++} ++ + #endif + + static const pixman_fast_path_t arm_simd_fast_paths[] = +@@ -624,6 +900,10 @@ static const pixman_fast_path_t arm_simd_fast_paths[] = + #if defined(__ARM_EABI__) && defined(__linux__) + PIXMAN_STD_FAST_PATH (OVER, solid, a8, r5g6b5, armv6_composite_over_n_8_0565), + PIXMAN_STD_FAST_PATH (OVER, solid, a8, b5g6r5, armv6_composite_over_n_8_0565), ++ PIXMAN_STD_FAST_PATH (SRC, a8r8g8b8, null, r5g6b5, armv6_composite_src_8888_0565), ++ PIXMAN_STD_FAST_PATH (SRC, x8r8g8b8, null, r5g6b5, armv6_composite_src_8888_0565), ++ PIXMAN_STD_FAST_PATH (SRC, a8b8g8r8, null, b5g6r5, armv6_composite_src_8888_0565), ++ PIXMAN_STD_FAST_PATH (SRC, x8b8g8r8, null, b5g6r5, armv6_composite_src_8888_0565), + #endif + { PIXMAN_OP_NONE }, + }; +-- +cgit v0.8.3-6-g21f6 diff --git a/recipes/obsolete/xorg/xorg-lib/pixman/tls.patch b/recipes/obsolete/xorg/xorg-lib/pixman/tls.patch new file mode 100644 index 0000000000..316caed65f --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/pixman/tls.patch @@ -0,0 +1,59 @@ +From 714559dccda3165a72f0a9935c1edc3aef535f30 Mon Sep 17 00:00:00 2001 +From: Søren Sandmann Pedersen <ssp@redhat.com> +Date: Wed, 07 Apr 2010 05:44:12 +0000 +Subject: Fixes for pthread thread local storage. + +The tls_name_key variable is passed to tls_name_get(), and the first +time this happens it isn't initialized. tls_name_get() then passes it +on to tls_name_alloc() which passes it on to pthread_setspecific() +leading to undefined behavior. + +None of this is actually necessary at all because there is only one +such variable per thread local variable, so it doesn't need to passed +as a parameter at all. + +All of this was pointed out by Tor Lillqvist on the cairo mailing +list. +--- +diff --git a/pixman/pixman-compiler.h b/pixman/pixman-compiler.h +index cdac0d8..531c8c9 100644 +--- a/pixman/pixman-compiler.h ++++ b/pixman/pixman-compiler.h +@@ -99,16 +99,16 @@ + } \ + \ + static type * \ +- tls_ ## name ## _alloc (key) \ ++ tls_ ## name ## _alloc (void) \ + { \ + type *value = calloc (1, sizeof (type)); \ + if (value) \ +- pthread_setspecific (key, value); \ ++ pthread_setspecific (tls_ ## name ## _key, value); \ + return value; \ + } \ + \ + static force_inline type * \ +- tls_ ## name ## _get (key) \ ++ tls_ ## name ## _get (void) \ + { \ + type *value = NULL; \ + if (pthread_once (&tls_ ## name ## _once_control, \ +@@ -116,13 +116,13 @@ + { \ + value = pthread_getspecific (tls_ ## name ## _key); \ + if (!value) \ +- value = tls_ ## name ## _alloc (key); \ ++ value = tls_ ## name ## _alloc (); \ + } \ + return value; \ + } + + # define PIXMAN_GET_THREAD_LOCAL(name) \ +- tls_ ## name ## _get (tls_ ## name ## _key) ++ tls_ ## name ## _get () + + #else + +-- +cgit v0.8.3-6-g21f6 diff --git a/recipes/obsolete/xorg/xorg-lib/pixman_0.10.0.bb b/recipes/obsolete/xorg/xorg-lib/pixman_0.10.0.bb new file mode 100644 index 0000000000..869081891d --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/pixman_0.10.0.bb @@ -0,0 +1,5 @@ +require pixman.inc +PR = "${INC_PR}.0" + +SRC_URI[archive.md5sum] = "41804ac38025102dcc9891dfd4a3d105" +SRC_URI[archive.sha256sum] = "48625f6b5ce130672942503c683d306d957ee40f59f8e59be6ca30a245ad47d0" diff --git a/recipes/obsolete/xorg/xorg-lib/pixman_0.11.4.bb b/recipes/obsolete/xorg/xorg-lib/pixman_0.11.4.bb new file mode 100644 index 0000000000..b058104cbb --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/pixman_0.11.4.bb @@ -0,0 +1,7 @@ +require pixman.inc +PR = "${INC_PR}.0" + +SRC_URI[archive.md5sum] = "8c8afc259af61d42aa9b3d8ec5a9a03b" +SRC_URI[archive.sha256sum] = "d034f4afb4329c38e8789a5a7a384194c7402094b4c2b7600d2d86d8589e8571" + +DEFAULT_PREFERENCE = "-1" diff --git a/recipes/obsolete/xorg/xorg-lib/pixman_0.11.8.bb b/recipes/obsolete/xorg/xorg-lib/pixman_0.11.8.bb new file mode 100644 index 0000000000..d7c67174ac --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/pixman_0.11.8.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] = "7b5db768c51337b5e5e954fc9c961cd3" +SRC_URI[archive.sha256sum] = "720db5ef6ed0e744b9bac5360ade9a7c024f9fb3fab05c83a90ee28b08e66e01" diff --git a/recipes/obsolete/xorg/xorg-lib/pixman_0.15.18.bb b/recipes/obsolete/xorg/xorg-lib/pixman_0.15.18.bb new file mode 100644 index 0000000000..4811a01f8c --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/pixman_0.15.18.bb @@ -0,0 +1,7 @@ +require pixman.inc +PR = "${INC_PR}.0" + +SRC_URI[archive.md5sum] = "9b60fe7623621b546b76777b8b7d2490" +SRC_URI[archive.sha256sum] = "3a5003cf6c7d5b03ed5977c108ee11410cfd7849eea370eb4feae98f2822c795" + +DEFAULT_PREFERENCE = "-1" diff --git a/recipes/obsolete/xorg/xorg-lib/pixman_0.15.6.bb b/recipes/obsolete/xorg/xorg-lib/pixman_0.15.6.bb new file mode 100644 index 0000000000..a09de4e827 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/pixman_0.15.6.bb @@ -0,0 +1,7 @@ +require pixman.inc +PR = "${INC_PR}.0" + +SRC_URI[archive.md5sum] = "fe922698df46b21d7e19f28ded4ca100" +SRC_URI[archive.sha256sum] = "3438437c131c9847b34106225a728c11e522776ac454bb8740a9bc7aea409f22" + +DEFAULT_PREFERENCE = "-1" diff --git a/recipes/obsolete/xorg/xorg-lib/pixman_0.17.12.bb b/recipes/obsolete/xorg/xorg-lib/pixman_0.17.12.bb new file mode 100644 index 0000000000..b476aaa58b --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/pixman_0.17.12.bb @@ -0,0 +1,24 @@ +require pixman.inc +PR = "${INC_PR}.0" + +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-Revert-ARM-SIMD-Try-without-any-CFLAGS-before-forcin.patch \ + file://over-n-8-0565.patch \ + file://src-8888-0565.patch \ +" +SRC_URI[archive.md5sum] = "331415d7a110145cf27aa00e11d0a683" +SRC_URI[archive.sha256sum] = "8cce103af1b4200a13bedca5b763f74c9bc99a55985ab44ca92ba532dac6b57f" + +NEON = " --disable-arm-neon " +NEON_armv7a = " " + +EXTRA_OECONF = "${NEON} --disable-gtk" + +DEFAULT_PREFERENCE = "-1" +DEFAULT_PREFERENCE_angstrom = "2" +DEFAULT_PREFERENCE_shr = "2" diff --git a/recipes/obsolete/xorg/xorg-lib/pixman_0.17.8.bb b/recipes/obsolete/xorg/xorg-lib/pixman_0.17.8.bb new file mode 100644 index 0000000000..55c70c80bf --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/pixman_0.17.8.bb @@ -0,0 +1,23 @@ +require pixman.inc +PR = "${INC_PR}.0" + +SRC_URI += " \ + file://0003-Generic-C-implementation-of-pixman_blt-with-overlapp.patch \ + file://0004-Support-of-overlapping-src-dst-for-pixman_blt_mmx.patch \ + file://0005-Support-of-overlapping-src-dst-for-pixman_blt_sse2.patch \ + file://0006-Support-of-overlapping-src-dst-for-pixman_blt_neon.patch \ + file://1-composite.patch \ + file://2-composite.patch \ + file://3-composite.patch \ + " +SRC_URI[archive.md5sum] = "a7deb2ff6b286b676d67aa6ae91317ae" +SRC_URI[archive.sha256sum] = "ea24e9003455a0881bd43bf7e4169f2b34c90c8521405103e3490553876a81b4" + +NEON = " --disable-arm-neon " +NEON_armv7a = " " + +EXTRA_OECONF = "${NEON} --disable-gtk" + +DEFAULT_PREFERENCE = "-1" +DEFAULT_PREFERENCE_angstrom = "2" +DEFAULT_PREFERENCE_shr = "2" diff --git a/recipes/obsolete/xorg/xorg-lib/pixman_0.18.0.bb b/recipes/obsolete/xorg/xorg-lib/pixman_0.18.0.bb new file mode 100644 index 0000000000..c099b773f3 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/pixman_0.18.0.bb @@ -0,0 +1,24 @@ +require pixman.inc +PR = "${INC_PR}.3" + +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://calloc.patch \ + file://tls.patch \ + file://565-scanline.patch \ + file://missing-cache-preload.diff \ +" +SRC_URI[archive.md5sum] = "a4fb870fc325be258089f1683642e976" +SRC_URI[archive.sha256sum] = "b305291bba3d9271a4481e5eedf901025ac8ba4ec8f7b76ccafc5094610cd4ff" + +NEON = " --disable-arm-neon " +NEON_armv7a = " " + +EXTRA_OECONF = "${NEON} --disable-gtk" + +DEFAULT_PREFERENCE = "-1" +DEFAULT_PREFERENCE_shr = "2" diff --git a/recipes/obsolete/xorg/xorg-lib/pixman_0.9.4.bb b/recipes/obsolete/xorg/xorg-lib/pixman_0.9.4.bb new file mode 100644 index 0000000000..254bf61f18 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/pixman_0.9.4.bb @@ -0,0 +1,7 @@ +require xorg-lib-common.inc +DESCRIPTION = "Library for lowlevel pixel operations" +DEPENDS = "virtual/libx11" +PR = "${INC_PR}.0" + +SRC_URI[archive.md5sum] = "c354ab5b0da10227226d3ef604254875" +SRC_URI[archive.sha256sum] = "261d239e9e3070a0a81e5b3eab92e6236c6295979bdae0a1ded05cbef93f67aa" diff --git a/recipes/obsolete/xorg/xorg-lib/pixman_0.9.5.bb b/recipes/obsolete/xorg/xorg-lib/pixman_0.9.5.bb new file mode 100644 index 0000000000..6259deaa08 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/pixman_0.9.5.bb @@ -0,0 +1,8 @@ +require xorg-lib-common.inc +DESCRIPTION = "Library for lowlevel pixel operations" +DEPENDS = "virtual/libx11" +PR = "${INC_PR}.0" + +SRC_URI += "file://dont-copy-unused-bits-to-alpha-channel.patch" +SRC_URI[archive.md5sum] = "f9fea77e46ec7a3a16e925e137f146e7" +SRC_URI[archive.sha256sum] = "a9d4545b5dfc018cdd33fd21bc73c3f1b3c9c207f1bb6843606cc180eb10c6c8" diff --git a/recipes/obsolete/xorg/xorg-lib/pixman_git.bb b/recipes/obsolete/xorg/xorg-lib/pixman_git.bb new file mode 100644 index 0000000000..12140c1d8f --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/pixman_git.bb @@ -0,0 +1,27 @@ +require pixman.inc +PV = "0.17.13" +PR = "${INC_PR}.2" +PR_append = "+gitr${SRCPV}" + +SRC_URI = "git://anongit.freedesktop.org/pixman;protocol=git;branch=master \ + 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-Revert-ARM-SIMD-Try-without-any-CFLAGS-before-forcin.patch \ + file://over-n-8-0565.patch \ + file://src-8888-0565.patch \ + file://calloc.patch \ + file://tls.patch \ +" + +SRCREV = "69f1ec9a7827aeb522fcae99846237ef0f896e7b" +S = "${WORKDIR}/git" + +NEON = " --disable-arm-neon " +NEON_armv7a = " " + +EXTRA_OECONF = "${NEON} --disable-gtk" + +DEFAULT_PREFERENCE = "-1" diff --git a/recipes/obsolete/xorg/xorg-lib/xtrans/fix-missing-includepath.patch b/recipes/obsolete/xorg/xorg-lib/xtrans/fix-missing-includepath.patch new file mode 100644 index 0000000000..043d14f7bf --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/xtrans/fix-missing-includepath.patch @@ -0,0 +1,13 @@ + +# +# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher +# + +--- xtrans-X11R7.0-1.0.0/xtrans.pc.in~fix-missing-includepath 2005-07-02 20:00:50.000000000 +0200 ++++ xtrans-X11R7.0-1.0.0/xtrans.pc.in 2006-08-11 19:27:58.000000000 +0200 +@@ -6,4 +6,4 @@ + Name: XTrans + Description: Abstract network code for X + Version: @PACKAGE_VERSION@ +-Cflags: -I${includedir} -D_BSD_SOURCE @fchown_define@ @sticky_bit_define@ ++Cflags: -I${includedir} -I${includedir}/X11/Xtrans -D_BSD_SOURCE @fchown_define@ @sticky_bit_define@ diff --git a/recipes/obsolete/xorg/xorg-lib/xtrans_1.0.3.bb b/recipes/obsolete/xorg/xorg-lib/xtrans_1.0.3.bb new file mode 100644 index 0000000000..19a56fa8f2 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/xtrans_1.0.3.bb @@ -0,0 +1,15 @@ +require xorg-lib-common.inc +DESCRIPTION = "network API translation layer to insulate X applications and \ +libraries from OS network vageries." +PE = "1" +PR = "${INC_PR}.0" + +SRC_URI += "file://fix-missing-includepath.patch" +SRC_URI[archive.md5sum] = "bb196907ea1e182dcb396eb22f7d2c1a" +SRC_URI[archive.sha256sum] = "e1a3c4986f16a5fbca611d0547cc7499a1fa47ca2096593644037e2609363085" + +FILESPATHPKG .= ":xtrans-${PV}:xtrans" + +ALLOW_EMPTY = "1" + +BBCLASSEXTEND = "native nativesdk" diff --git a/recipes/obsolete/xorg/xorg-lib/xtrans_1.0.4.bb b/recipes/obsolete/xorg/xorg-lib/xtrans_1.0.4.bb new file mode 100644 index 0000000000..d19a6c0819 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/xtrans_1.0.4.bb @@ -0,0 +1,15 @@ +require xorg-lib-common.inc +DESCRIPTION = "network API translation layer to insulate X applications and \ +libraries from OS network vageries." +PE = "1" +PR = "${INC_PR}.0" + +SRC_URI += "file://fix-missing-includepath.patch" +SRC_URI[archive.md5sum] = "8b36cdf08df12be96615e3d550236626" +SRC_URI[archive.sha256sum] = "765219fa822edeffb0650e93458e4ebf63c23176e58fce06806fb251fbfe7d8c" + +FILESPATHPKG .= ":xtrans-${PV}:xtrans" + +ALLOW_EMPTY = "1" + +BBCLASSEXTEND = "native nativesdk" diff --git a/recipes/obsolete/xorg/xorg-lib/xtrans_1.1.bb b/recipes/obsolete/xorg/xorg-lib/xtrans_1.1.bb new file mode 100644 index 0000000000..1f3fcb4159 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/xtrans_1.1.bb @@ -0,0 +1,15 @@ +require xorg-lib-common.inc +DESCRIPTION = "network API translation layer to insulate X applications and \ +libraries from OS network vageries." +PE = "1" +PR = "${INC_PR}.0" + +SRC_URI += "file://fix-missing-includepath.patch" +SRC_URI[archive.md5sum] = "8546e3a060aefb42c889eaa4b5db33af" +SRC_URI[archive.sha256sum] = "16bc4646f105efd3d0dd105899ac19035d67acf50950ca8c70cf68772508272d" + +FILESPATHPKG .= ":xtrans-${PV}:xtrans" + +ALLOW_EMPTY = "1" + +BBCLASSEXTEND = "native nativesdk" diff --git a/recipes/obsolete/xorg/xorg-lib/xtrans_1.2.1.bb b/recipes/obsolete/xorg/xorg-lib/xtrans_1.2.1.bb new file mode 100644 index 0000000000..e695e35031 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/xtrans_1.2.1.bb @@ -0,0 +1,15 @@ +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] = "96e142331edd498a9364887b2548f1bb" +SRC_URI[archive.sha256sum] = "9ff21a8d9ea524ca9b7cb6d6b4d522b4cb20b1c35edeb8995a9e9265a0df64bd" + +FILESPATHPKG .= ":xtrans-${PV}:xtrans" + +ALLOW_EMPTY = "1" + +BBCLASSEXTEND = "native nativesdk" diff --git a/recipes/obsolete/xorg/xorg-lib/xtrans_1.2.3.bb b/recipes/obsolete/xorg/xorg-lib/xtrans_1.2.3.bb new file mode 100644 index 0000000000..1f0ec3977c --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/xtrans_1.2.3.bb @@ -0,0 +1,15 @@ +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] = "f9cf791dfad59cf044e276aab3a71e1d" +SRC_URI[archive.sha256sum] = "a67a8b09d9530021e2bd4b93136f385e72a8d8e4f2c26a99aeb169bee88facf0" + +FILESPATHPKG .= ":xtrans-${PV}:xtrans" + +ALLOW_EMPTY = "1" + +BBCLASSEXTEND = "native nativesdk" diff --git a/recipes/obsolete/xorg/xorg-lib/xtrans_1.2.bb b/recipes/obsolete/xorg/xorg-lib/xtrans_1.2.bb new file mode 100644 index 0000000000..8a4ddca097 --- /dev/null +++ b/recipes/obsolete/xorg/xorg-lib/xtrans_1.2.bb @@ -0,0 +1,15 @@ +require xorg-lib-common.inc +DESCRIPTION = "network API translation layer to insulate X applications and \ +libraries from OS network vageries." +PE = "1" +PR = "${INC_PR}.0" + +SRC_URI += "file://fix-missing-includepath.patch" +SRC_URI[archive.md5sum] = "a91fef8b932b21992af7dfff7b2643f3" +SRC_URI[archive.sha256sum] = "d6c3cabd5ecd0183a8a9bc6b3471545df8e2c78956b4c4cfd48f0c545a88c9a4" + +FILESPATHPKG .= ":xtrans-${PV}:xtrans" + +ALLOW_EMPTY = "1" + +BBCLASSEXTEND = "native nativesdk" |