summaryrefslogtreecommitdiffstats
path: root/meta-oe/recipes-graphics
diff options
context:
space:
mode:
authorKoen Kooi <koen@dominion.thruhere.net>2011-03-17 21:41:22 +0100
committerKoen Kooi <koen@dominion.thruhere.net>2011-03-17 21:41:22 +0100
commitc58cc7d3796dcee6e93885c835ed04cb566abeb2 (patch)
tree3eea4d4ef6a4ef79e0f4e025d7012c1a5cc38835 /meta-oe/recipes-graphics
parenteec6ab97f712e06eb52c9f7c99e19ffab3ce9d74 (diff)
downloadmeta-openembedded-c58cc7d3796dcee6e93885c835ed04cb566abeb2.tar.gz
move layer into meta-oe in preparation for future splits
As per TSC decision Signed-off-by: Koen Kooi <koen@dominion.thruhere.net>
Diffstat (limited to 'meta-oe/recipes-graphics')
-rw-r--r--meta-oe/recipes-graphics/cairo/cairo-fpu.inc6
-rw-r--r--meta-oe/recipes-graphics/cairo/cairo.inc20
-rw-r--r--meta-oe/recipes-graphics/cairo/cairo_1.10.0.bb12
-rw-r--r--meta-oe/recipes-graphics/font-update-common/font-update-common/update-fonts4
-rw-r--r--meta-oe/recipes-graphics/font-update-common/font-update-common_0.1.bb16
-rw-r--r--meta-oe/recipes-graphics/jasper/jasper_1.900.1.bb14
-rw-r--r--meta-oe/recipes-graphics/pango/pango-1.28.3/no-tests.patch10
-rw-r--r--meta-oe/recipes-graphics/pango/pango.inc53
-rw-r--r--meta-oe/recipes-graphics/pango/pango/no-tests.patch15
-rw-r--r--meta-oe/recipes-graphics/pango/pango/pkgconfig_fixes.patch79
-rw-r--r--meta-oe/recipes-graphics/pango/pango_1.28.3.bb9
-rw-r--r--meta-oe/recipes-graphics/pango/pangomm_2.26.0.bb22
-rw-r--r--meta-oe/recipes-graphics/ttf-fonts/ttf-arphic-uming_20080216.bb18
-rw-r--r--meta-oe/recipes-graphics/ttf-fonts/ttf-dejavu/30-dejavu-aliases.conf16
-rw-r--r--meta-oe/recipes-graphics/ttf-fonts/ttf-dejavu_2.23.bb44
-rw-r--r--meta-oe/recipes-graphics/ttf-fonts/ttf-droid_git.bb28
-rw-r--r--meta-oe/recipes-graphics/ttf-fonts/ttf-gentium/OFL.gzbin0 -> 1963 bytes
-rw-r--r--meta-oe/recipes-graphics/ttf-fonts/ttf-gentium_1.02.bb135
-rw-r--r--meta-oe/recipes-graphics/ttf-fonts/ttf-hunkyfonts_0.3.0.bb18
-rw-r--r--meta-oe/recipes-graphics/ttf-fonts/ttf-mplus_027.bb22
-rw-r--r--meta-oe/recipes-graphics/ttf-fonts/ttf-sazanami_20040629.bb33
-rw-r--r--meta-oe/recipes-graphics/ttf-fonts/ttf-ubuntu-font-family_0.69.bb18
-rw-r--r--meta-oe/recipes-graphics/ttf-fonts/ttf-wqy-zenhei_0.6.26.bb22
-rw-r--r--meta-oe/recipes-graphics/ttf-fonts/ttf.inc23
-rw-r--r--meta-oe/recipes-graphics/xorg-driver/xf86-video-omapfb/0001-blacklist-tv-out.patch28
-rw-r--r--meta-oe/recipes-graphics/xorg-driver/xf86-video-omapfb/0002-Revert-Set-virtual-size-when-configuring-framebuffer.patch26
-rw-r--r--meta-oe/recipes-graphics/xorg-driver/xf86-video-omapfb/0003-force-plain-mode.patch26
-rw-r--r--meta-oe/recipes-graphics/xorg-driver/xf86-video-omapfb_git.bb29
-rw-r--r--meta-oe/recipes-graphics/xorg-lib/libxext_1.2.0.bb18
-rw-r--r--meta-oe/recipes-graphics/xorg-lib/libxrender_0.9.6.bb17
-rw-r--r--meta-oe/recipes-graphics/xorg-lib/pixman-0.20.0/0000-Add-pixman_bits_override_accessors.patch77
-rw-r--r--meta-oe/recipes-graphics/xorg-lib/pixman-0.20.0/0001-Generic-C-implementation-of-pixman_blt-with-overlapp.patch114
-rw-r--r--meta-oe/recipes-graphics/xorg-lib/pixman-0.20.0/0002-Support-of-overlapping-src-dst-for-pixman_blt_mmx.patch91
-rw-r--r--meta-oe/recipes-graphics/xorg-lib/pixman-0.20.0/0003-Support-of-overlapping-src-dst-for-pixman_blt_sse2.patch91
-rw-r--r--meta-oe/recipes-graphics/xorg-lib/pixman-0.20.0/0004-Support-of-overlapping-src-dst-for-pixman_blt_neon.patch94
-rw-r--r--meta-oe/recipes-graphics/xorg-lib/pixman-0.20.0/0005-ARM-added-NEON-optimizations-for-fetch-store-r5g6b5-.patch109
-rw-r--r--meta-oe/recipes-graphics/xorg-lib/pixman-0.20.0/0006-ARM-added-NEON-optimizations-for-fetch-store-a8-scan.patch148
-rw-r--r--meta-oe/recipes-graphics/xorg-lib/pixman-0.20.0/0007-ARM-added-NEON-optimizations-for-fetching-x8r8g8b8-s.patch77
-rw-r--r--meta-oe/recipes-graphics/xorg-lib/pixman-0.20.0/0008-ARM-optimization-for-scaled-src_0565_0565-operation-.patch172
-rw-r--r--meta-oe/recipes-graphics/xorg-lib/pixman-0.21.4/0017-add-_pixman_bits_override_accessors.patch75
-rw-r--r--meta-oe/recipes-graphics/xorg-lib/pixman-0.21.4/0018-Generic-C-implementation-of-pixman_blt-with-overlapp.patch114
-rw-r--r--meta-oe/recipes-graphics/xorg-lib/pixman-0.21.4/0019-Support-of-overlapping-src-dst-for-pixman_blt_mmx.patch91
-rw-r--r--meta-oe/recipes-graphics/xorg-lib/pixman-0.21.4/0020-Support-of-overlapping-src-dst-for-pixman_blt_sse2.patch91
-rw-r--r--meta-oe/recipes-graphics/xorg-lib/pixman-0.21.4/0021-Support-of-overlapping-src-dst-for-pixman_blt_neon.patch94
-rw-r--r--meta-oe/recipes-graphics/xorg-lib/pixman-0.21.4/0022-ARM-added-NEON-optimizations-for-fetch-store-r5g6b5-.patch109
-rw-r--r--meta-oe/recipes-graphics/xorg-lib/pixman-0.21.4/0023-ARM-added-NEON-optimizations-for-fetch-store-a8-scan.patch148
-rw-r--r--meta-oe/recipes-graphics/xorg-lib/pixman-0.21.4/0024-ARM-added-NEON-optimizations-for-fetching-x8r8g8b8-s.patch77
-rw-r--r--meta-oe/recipes-graphics/xorg-lib/pixman.inc14
-rw-r--r--meta-oe/recipes-graphics/xorg-lib/pixman_0.20.0.bb23
-rw-r--r--meta-oe/recipes-graphics/xorg-lib/pixman_0.21.4.bb28
-rw-r--r--meta-oe/recipes-graphics/xorg-lib/xorg-lib-common.inc19
-rw-r--r--meta-oe/recipes-graphics/xorg-proto/renderproto_0.11.1.bb15
-rw-r--r--meta-oe/recipes-graphics/xorg-proto/xorg-proto-common.inc17
53 files changed, 2669 insertions, 0 deletions
diff --git a/meta-oe/recipes-graphics/cairo/cairo-fpu.inc b/meta-oe/recipes-graphics/cairo/cairo-fpu.inc
new file mode 100644
index 000000000..bdaf78979
--- /dev/null
+++ b/meta-oe/recipes-graphics/cairo/cairo-fpu.inc
@@ -0,0 +1,6 @@
1
2def get_cairo_fpu_setting(bb, d):
3 if bb.data.getVar('TARGET_FPU', d, 1) in [ 'soft' ]:
4 return "--disable-some-floating-point"
5 return ""
6
diff --git a/meta-oe/recipes-graphics/cairo/cairo.inc b/meta-oe/recipes-graphics/cairo/cairo.inc
new file mode 100644
index 000000000..42774e05b
--- /dev/null
+++ b/meta-oe/recipes-graphics/cairo/cairo.inc
@@ -0,0 +1,20 @@
1SECTION = "libs"
2PRIORITY = "optional"
3DEPENDS = "virtual/libx11 pixman libsm libpng fontconfig libxrender glib-2.0"
4DESCRIPTION = "Cairo graphics library"
5LICENSE = "MPL LGPL"
6
7#check for TARGET_FPU=soft and inform configure of the result so it can disable some floating points
8require cairo-fpu.inc
9EXTRA_OECONF += "${@get_cairo_fpu_setting(bb, d)}"
10
11inherit autotools pkgconfig
12
13BBCLASSEXTEND = "native"
14
15PACKAGES =+ "cairo-trace cairo-trace-dev libcairo-script-interpreter libcairo-gobject"
16FILES_libcairo-gobject = "${libdir}/libcairo-gobject.so.*"
17FILES_libcairo-script-interpreter = "${libdir}/libcairo-script-interpreter.so.*"
18FILES_cairo-trace = "${bindir}/*trace ${libdir}/cairo/libcairo-trace.so.*"
19FILES_cairo-trace-dev = "${libdir}/cairo/*"
20
diff --git a/meta-oe/recipes-graphics/cairo/cairo_1.10.0.bb b/meta-oe/recipes-graphics/cairo/cairo_1.10.0.bb
new file mode 100644
index 000000000..dccb726ed
--- /dev/null
+++ b/meta-oe/recipes-graphics/cairo/cairo_1.10.0.bb
@@ -0,0 +1,12 @@
1require cairo.inc
2
3LIC_FILES_CHKSUM = "file://COPYING;md5=e73e999e0c72b5ac9012424fa157ad77"
4
5PR = "r1"
6
7SRC_URI = "http://cairographics.org/releases/cairo-${PV}.tar.gz;name=cairo \
8"
9
10SRC_URI[cairo.md5sum] = "70a2ece66cf473d976e2db0f75bf199e"
11SRC_URI[cairo.sha256sum] = "0f2ce4cc4615594088d74eb8b5360bad7c3cc3c3da9b61af9bfd979ed1ed94b2"
12
diff --git a/meta-oe/recipes-graphics/font-update-common/font-update-common/update-fonts b/meta-oe/recipes-graphics/font-update-common/font-update-common/update-fonts
new file mode 100644
index 000000000..19e3157d2
--- /dev/null
+++ b/meta-oe/recipes-graphics/font-update-common/font-update-common/update-fonts
@@ -0,0 +1,4 @@
1#!/bin/sh
2#Author: Rolf Leggewie
3
4run-parts /etc/update-fonts-common.d/
diff --git a/meta-oe/recipes-graphics/font-update-common/font-update-common_0.1.bb b/meta-oe/recipes-graphics/font-update-common/font-update-common_0.1.bb
new file mode 100644
index 000000000..4a4c714ec
--- /dev/null
+++ b/meta-oe/recipes-graphics/font-update-common/font-update-common_0.1.bb
@@ -0,0 +1,16 @@
1DESCRIPTION = "Scripts to be called when fonts are installed or removed \
2to make them known to the WM, whether X11 or Opie"
3AUTHOR = "Rolf Leggewie <oe-devel@rolf.leggewie.biz"
4
5LICENSE = "MIT"
6LIC_FILES_CHKSUM = "file://${POKYBASE}/LICENSE;md5=3f40d7994397109285ec7b81fdeb3b58"
7
8SRC_URI = "file://update-fonts"
9
10do_install() {
11 install -d ${D}${bindir}
12 install -d ${D}${sysconfdir}/update-fonts-common.d/
13 install -m 0755 ${WORKDIR}/update-fonts ${D}${bindir}
14}
15
16PACKAGE_ARCH = "all"
diff --git a/meta-oe/recipes-graphics/jasper/jasper_1.900.1.bb b/meta-oe/recipes-graphics/jasper/jasper_1.900.1.bb
new file mode 100644
index 000000000..ef9ca6fb4
--- /dev/null
+++ b/meta-oe/recipes-graphics/jasper/jasper_1.900.1.bb
@@ -0,0 +1,14 @@
1DESCRIPTION = "Jpeg 2000 implementation"
2LICENSE = "MIT"
3LIC_FILES_CHKSUM = "file://LICENSE;md5=baa697d7510288a9cdcce9bd7edaf9bc"
4
5PR = "r1"
6
7SRC_URI = "http://www.ece.uvic.ca/~mdadams/jasper/software/jasper-${PV}.zip"
8
9inherit autotools lib_package
10
11EXTRA_OECONF = "--enable-shared"
12
13SRC_URI[md5sum] = "a342b2b4495b3e1394e161eb5d85d754"
14SRC_URI[sha256sum] = "6b905a9c2aca2e275544212666eefc4eb44d95d0a57e4305457b407fe63f9494"
diff --git a/meta-oe/recipes-graphics/pango/pango-1.28.3/no-tests.patch b/meta-oe/recipes-graphics/pango/pango-1.28.3/no-tests.patch
new file mode 100644
index 000000000..dafcb20c3
--- /dev/null
+++ b/meta-oe/recipes-graphics/pango/pango-1.28.3/no-tests.patch
@@ -0,0 +1,10 @@
1--- /tmp/Makefile.am 2007-03-01 13:29:37.000000000 +0100
2+++ pango-1.16.0/Makefile.am 2007-03-01 13:29:52.545251000 +0100
3@@ -1,6 +1,6 @@
4 ## Process this file with automake to create Makefile.in.
5
6-SUBDIRS= pango modules pango-view examples docs tools tests
7+SUBDIRS= pango modules pango-view examples docs tools
8
9 EXTRA_DIST = \
10 autogen.sh \
diff --git a/meta-oe/recipes-graphics/pango/pango.inc b/meta-oe/recipes-graphics/pango/pango.inc
new file mode 100644
index 000000000..b09869135
--- /dev/null
+++ b/meta-oe/recipes-graphics/pango/pango.inc
@@ -0,0 +1,53 @@
1DESCRIPTION = "The goal of the Pango project is to provide an \
2Open Source framework for the layout and rendering of \
3internationalized text."
4LICENSE = "LGPL"
5
6inherit gnome
7EXTRA_AUTORECONF = ""
8
9SECTION = "x11/libs"
10
11DEPENDS = "glib-2.0 fontconfig freetype zlib virtual/libiconv virtual/libx11 libxft gtk-doc cairo"
12
13DEPENDS_virtclass-native = "glib-2.0-native cairo-native"
14BBCLASSEXTEND = "native"
15
16PACKAGES_DYNAMIC = "pango-module-*"
17PACKAGES_DYNAMIC_virtclass-native = ""
18
19RRECOMMENDS_${PN} = "pango-module-basic-x pango-module-basic-fc"
20
21INC_PR = "r1"
22
23# seems to go wrong with default cflags
24FULL_OPTIMIZATION_arm = "-O2"
25
26SRC_URI += "file://no-tests.patch \
27 "
28
29EXTRA_OECONF += "--disable-glibtest \
30 --enable-explicit-deps=no \
31 --disable-debug"
32
33LEAD_SONAME = "libpango-1.0*"
34LIBV = "1.6.0"
35
36FILES_${PN} = "/etc ${bindir}/* ${libdir}/libpango*.so.*"
37FILES_${PN}-dbg += "${libdir}/pango/${LIBV}/modules/.debug"
38FILES_${PN}-dev += "${libdir}/pango/${LIBV}/modules/*.la"
39
40postinst_prologue() {
41if [ "x$D" != "x" ]; then
42 exit 1
43fi
44
45}
46
47python populate_packages_prepend () {
48 prologue = bb.data.getVar("postinst_prologue", d, 1)
49
50 modules_root = bb.data.expand('${libdir}/pango/${LIBV}/modules', d)
51
52 do_split_packages(d, modules_root, '^pango-(.*)\.so$', 'pango-module-%s', 'Pango module %s', prologue + 'pango-querymodules > /etc/pango/pango.modules')
53}
diff --git a/meta-oe/recipes-graphics/pango/pango/no-tests.patch b/meta-oe/recipes-graphics/pango/pango/no-tests.patch
new file mode 100644
index 000000000..b38212612
--- /dev/null
+++ b/meta-oe/recipes-graphics/pango/pango/no-tests.patch
@@ -0,0 +1,15 @@
1
2#
3# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
4#
5
6--- pango-1.2.5/Makefile.am~no-tests 2003-01-30 22:43:47.000000000 +0100
7+++ pango-1.2.5/Makefile.am 2004-03-11 11:31:25.000000000 +0100
8@@ -1,6 +1,6 @@
9 ## Process this file with automake to create Makefile.in.
10
11-SUBDIRS= pango modules examples docs tools tests
12+SUBDIRS= pango modules examples docs tools
13
14 EXTRA_DIST = \
15 pango.pc.in \
diff --git a/meta-oe/recipes-graphics/pango/pango/pkgconfig_fixes.patch b/meta-oe/recipes-graphics/pango/pango/pkgconfig_fixes.patch
new file mode 100644
index 000000000..f021591a9
--- /dev/null
+++ b/meta-oe/recipes-graphics/pango/pango/pkgconfig_fixes.patch
@@ -0,0 +1,79 @@
1Index: pango-1.18.1/configure.in
2===================================================================
3--- pango-1.18.1.orig/configure.in 2007-08-28 00:29:54.000000000 +0000
4+++ pango-1.18.1/configure.in 2007-11-12 19:21:22.000000000 +0000
5@@ -226,13 +226,9 @@
6 #
7 # Checks for FreeType
8 #
9- FREETYPE_LIBS=
10- FREETYPE_CFLAGS=
11- AC_PATH_PROG(FREETYPE_CONFIG, freetype-config, no)
12- if test "x$FREETYPE_CONFIG" != "xno" ; then
13- FREETYPE_CFLAGS=`$FREETYPE_CONFIG --cflags`
14- FREETYPE_LIBS=`$FREETYPE_CONFIG --libs`
15+ PKG_CHECK_MODULES(FREETYPE, freetype2 >= 1.0.1, have_freetype=true, AC_MSG_RESULT([no]))
16
17+ if $have_freetype ; then
18 pango_save_ldflags=$LDFLAGS
19 LDFLAGS="$LDFLAGS $FREETYPE_LIBS"
20 AC_CHECK_LIB(freetype, FT_Get_Next_Char, have_freetype=true, :)
21Index: pango-1.18.1/pangoft2-uninstalled.pc.in
22===================================================================
23--- pango-1.18.1.orig/pangoft2-uninstalled.pc.in 2007-07-05 21:30:28.000000000 +0000
24+++ pango-1.18.1/pangoft2-uninstalled.pc.in 2007-11-12 19:23:44.000000000 +0000
25@@ -1,7 +1,7 @@
26 Name: Pango FT2 Uninstalled
27 Description: Freetype 2.0 font support for Pango, Not Installed
28 Version: @VERSION@
29-Requires: pango
30-Libs: ${pc_top_builddir}/${pcfiledir}/pango/libpangoft2-@PANGO_API_VERSION@.la @FREETYPE_LIBS@
31-Cflags: -I${pc_top_builddir}/${pcfiledir}/@srcdir@ @FREETYPE_CFLAGS@
32+Requires: pango freetype2
33+Libs: ${pc_top_builddir}/${pcfiledir}/pango/libpangoft2-@PANGO_API_VERSION@.la
34+Cflags: -I${pc_top_builddir}/${pcfiledir}/@srcdir@
35
36Index: pango-1.18.1/pangoft2.pc.in
37===================================================================
38--- pango-1.18.1.orig/pangoft2.pc.in 2007-07-05 21:30:28.000000000 +0000
39+++ pango-1.18.1/pangoft2.pc.in 2007-11-12 19:27:05.000000000 +0000
40@@ -6,7 +6,7 @@
41 Name: Pango FT2
42 Description: Freetype 2.0 font support for Pango
43 Version: @VERSION@
44-Requires: pango
45-Libs: -L${libdir} -lpangoft2-@PANGO_API_VERSION@ @PKGCONFIG_FREETYPE_LIBS@
46-Cflags: -I${includedir}/pango-1.0 @FONTCONFIG_CFLAGS@ @FREETYPE_CFLAGS@
47+Requires: pango freetype2 fontconfig
48+Libs: -L${libdir} -lpangoft2-@PANGO_API_VERSION@
49+Cflags: -I${includedir}/pango-1.0
50
51Index: pango-1.18.1/pangoxft-uninstalled.pc.in
52===================================================================
53--- pango-1.18.1.orig/pangoxft-uninstalled.pc.in 2007-07-05 21:30:28.000000000 +0000
54+++ pango-1.18.1/pangoxft-uninstalled.pc.in 2007-11-12 19:22:24.000000000 +0000
55@@ -1,7 +1,7 @@
56 Name: Pango Xft Uninstalled
57 Description: Xft font support for Pango, Not Installed
58 Version: @VERSION@
59-Requires: pango
60-Libs: ${pc_top_builddir}/${pcfiledir}/pango/libpangoxft-@PANGO_API_VERSION@.la @XFT_LIBS@
61-Cflags: -I${pc_top_builddir}/${pcfiledir}/@srcdir@ @X_CFLAGS@ @FREETYPE_CFLAGS@
62+Requires: pango xft
63+Libs: ${pc_top_builddir}/${pcfiledir}/pango/libpangoxft-@PANGO_API_VERSION@.la
64+Cflags: -I${pc_top_builddir}/${pcfiledir}/@srcdir@ @X_CFLAGS@
65
66Index: pango-1.18.1/pangoxft.pc.in
67===================================================================
68--- pango-1.18.1.orig/pangoxft.pc.in 2007-07-05 21:30:28.000000000 +0000
69+++ pango-1.18.1/pangoxft.pc.in 2007-11-12 19:21:57.000000000 +0000
70@@ -6,6 +6,6 @@
71 Name: Pango Xft
72 Description: Xft font support for Pango
73 Version: @VERSION@
74-Requires: pango pangoft2
75-Libs: -L${libdir} -lpangoxft-@PANGO_API_VERSION@ @PKGCONFIG_XFT_LIBS@
76-Cflags: -I${includedir}/pango-1.0 @XFT_CFLAGS@
77+Requires: pango pangoft2 xft
78+Libs: -L${libdir} -lpangoxft-@PANGO_API_VERSION@
79+Cflags: -I${includedir}/pango-1.0
diff --git a/meta-oe/recipes-graphics/pango/pango_1.28.3.bb b/meta-oe/recipes-graphics/pango/pango_1.28.3.bb
new file mode 100644
index 000000000..4c875bf33
--- /dev/null
+++ b/meta-oe/recipes-graphics/pango/pango_1.28.3.bb
@@ -0,0 +1,9 @@
1require pango.inc
2
3LIC_FILES_CHKSUM = "file://COPYING;md5=3bf50002aefd002f49e7bb854063f7e7"
4
5SRC_URI[archive.md5sum] = "caa74baea47e7e16bc73c89f9089d522"
6SRC_URI[archive.sha256sum] = "5e278bc9430cc7bb00270f183360d262c5006b51248e8b537ea904573f200632"
7
8PR = "${INC_PR}.0"
9
diff --git a/meta-oe/recipes-graphics/pango/pangomm_2.26.0.bb b/meta-oe/recipes-graphics/pango/pangomm_2.26.0.bb
new file mode 100644
index 000000000..ecf2dd1ee
--- /dev/null
+++ b/meta-oe/recipes-graphics/pango/pangomm_2.26.0.bb
@@ -0,0 +1,22 @@
1DESCRIPTION = "C++ bindings for the pango library."
2SECTION = "libs"
3PRIORITY = "optional"
4LICENSE = "LGPL"
5DEPENDS = "mm-common cairomm glibmm"
6SHRT_VER = "${@bb.data.getVar('PV',d,1).split('.')[0]}.${@bb.data.getVar('PV',d,1).split('.')[1]}"
7PR = "r1"
8
9SRC_URI = "ftp://ftp.gnome.org/pub/GNOME/sources/pangomm/${SHRT_VER}/pangomm-${PV}.tar.bz2"
10
11inherit autotools flow-lossage
12
13FILES_${PN} = "${libdir}/lib*.so.*"
14FILES_${PN}-dev += "${libdir}/*/include/"
15
16EXTRA_OECONF = " --disable-documentation "
17
18AUTOTOOLS_STAGE_PKGCONFIG = "1"
19
20
21SRC_URI[md5sum] = "37f54dc8e6cb73ed923b22f313352156"
22SRC_URI[sha256sum] = "bf26ebe42c12c81e5c32ceca80ff226a01c8d80d4db2a4cc3463d5bf241b095e"
diff --git a/meta-oe/recipes-graphics/ttf-fonts/ttf-arphic-uming_20080216.bb b/meta-oe/recipes-graphics/ttf-fonts/ttf-arphic-uming_20080216.bb
new file mode 100644
index 000000000..bb259b918
--- /dev/null
+++ b/meta-oe/recipes-graphics/ttf-fonts/ttf-arphic-uming_20080216.bb
@@ -0,0 +1,18 @@
1DESCRIPTION = "Unicode Mingti (printed) TrueType Font"
2HOMEPAGE = "http://www.freedesktop.org/wiki/Software/CJKUnifonts"
3LICENSE = "${PN}"
4SRC_DISTRIBUTE_LICENSES += "${PN}"
5RPROVIDES_${PN} = "virtual-chinese-font"
6PR = "r2"
7
8SRC_URI = \
9"http://archive.ubuntu.com/ubuntu/pool/main/t/ttf-arphic-uming/ttf-arphic-uming_0.2.${PV}.1.orig.tar.gz"
10S = "${WORKDIR}"
11
12require ttf.inc
13
14FILES_${PN} = "${datadir}"
15
16
17SRC_URI[md5sum] = "d219fcaf953f3eb1889399955a00379f"
18SRC_URI[sha256sum] = "8038a6db9e832456d5da5559aff8d15130243be1091bf24f3243503a6f1bda98"
diff --git a/meta-oe/recipes-graphics/ttf-fonts/ttf-dejavu/30-dejavu-aliases.conf b/meta-oe/recipes-graphics/ttf-fonts/ttf-dejavu/30-dejavu-aliases.conf
new file mode 100644
index 000000000..9c6e56bf7
--- /dev/null
+++ b/meta-oe/recipes-graphics/ttf-fonts/ttf-dejavu/30-dejavu-aliases.conf
@@ -0,0 +1,16 @@
1<?xml version="1.0"?>
2<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
3<fontconfig>
4 <alias>
5 <family>DejaVu Serif</family>
6 <default><family>serif</family></default>
7 </alias>
8 <alias>
9 <family>DejaVu Sans</family>
10 <default><family>sans-serif</family></default>
11 </alias>
12 <alias>
13 <family>DejaVu Sans Mono</family>
14 <default><family>monospace</family></default>
15 </alias>
16</fontconfig>
diff --git a/meta-oe/recipes-graphics/ttf-fonts/ttf-dejavu_2.23.bb b/meta-oe/recipes-graphics/ttf-fonts/ttf-dejavu_2.23.bb
new file mode 100644
index 000000000..f852cbffd
--- /dev/null
+++ b/meta-oe/recipes-graphics/ttf-fonts/ttf-dejavu_2.23.bb
@@ -0,0 +1,44 @@
1require ttf.inc
2
3DESCRIPTION = "DejaVu font - TTF Edition"
4HOMEPAGE = "http://dejavu.sourceforge.net/wiki/"
5LICENSE = "Bitstream Vera"
6LIC_FILES_CHKSUM = "file://${WORKDIR}/dejavu-fonts-ttf-${PV}/LICENSE;md5=9f867da7a73fad2715291348e80d0763"
7
8# all subpackages except ${PN}-dbg and ${PN}-common itself rdepends on ${PN}-common
9RDEPENDS_${PN}-sans = "${PN}-common"
10RDEPENDS_${PN}-sans-mono = "${PN}-common"
11RDEPENDS_${PN}-sans-condensed = "${PN}-common"
12RDEPENDS_${PN}-serif = "${PN}-common"
13RDEPENDS_${PN}-serif-condensed = "${PN}-common"
14RDEPENDS_${PN}-common = ""
15PR = "r3"
16
17SRC_URI = "${SOURCEFORGE_MIRROR}/dejavu/dejavu-fonts-ttf-${PV}.tar.bz2 \
18 file://30-dejavu-aliases.conf"
19
20S = "${WORKDIR}/dejavu-fonts-ttf-${PV}/ttf"
21
22do_install_append () {
23 install -d ${D}${sysconfdir}/fonts/conf.d/
24 install -m 0644 ${WORKDIR}/30-dejavu-aliases.conf ${D}${sysconfdir}/fonts/conf.d/
25}
26
27PACKAGES = "${PN}-dbg \
28 ${PN}-sans \
29 ${PN}-sans-mono \
30 ${PN}-sans-condensed \
31 ${PN}-serif \
32 ${PN}-serif-condensed \
33 ${PN}-common"
34RRECOMMENDS_${PN}-dbg = ""
35
36FILES_${PN}-sans = "${datadir}/fonts/truetype/DejaVuSans.ttf ${datadir}/fonts/truetype/DejaVuSans-*.ttf"
37FILES_${PN}-sans-mono = "${datadir}/fonts/truetype/DejaVuSansMono*.ttf"
38FILES_${PN}-sans-condensed = "${datadir}/fonts/truetype/DejaVuSansCondensed*.ttf"
39FILES_${PN}-serif = "${datadir}/fonts/truetype/DejaVuSerif.ttf ${datadir}/fonts/truetype/DejaVuSerif-*.ttf"
40FILES_${PN}-serif-condensed = "${datadir}/fonts/truetype/DejaVuSerifCondensed*.ttf"
41FILES_${PN}-common = "${sysconfdir}"
42
43SRC_URI[md5sum] = "ff871dff0b3e8a11cd5c54478f11073f"
44SRC_URI[sha256sum] = "243642a1c3f4b6fd00125f5772ac5c8e4d0bb6586f5abb05829ead4b83ad5233"
diff --git a/meta-oe/recipes-graphics/ttf-fonts/ttf-droid_git.bb b/meta-oe/recipes-graphics/ttf-fonts/ttf-droid_git.bb
new file mode 100644
index 000000000..3fa04abf5
--- /dev/null
+++ b/meta-oe/recipes-graphics/ttf-fonts/ttf-droid_git.bb
@@ -0,0 +1,28 @@
1require ttf.inc
2
3DESCRIPTION = "Droid fonts - TTF Edition"
4HOMEPAGE = "http://www.droidfonts.com/"
5LICENSE = "Apache-2.0"
6PR = "r0"
7# git magic below - SRCREV is an ID of /data/fonts subtree
8# (so we don't need to fetch full platform/frameworks/base.git)
9SRCREV = "31f255e44e618ff3b923f332e8fcb83403fd39f5"
10PV = "0.0+${PR}+gitr${SRCREV}"
11
12SRC_URI = "git://android.git.kernel.org/platform/frameworks/base.git;protocol=git;branch=master"
13
14S = "${WORKDIR}/git"
15
16do_install_prepend() {
17 rm ${S}/Ahem.ttf # we're not packaging it
18}
19
20PACKAGES = "${PN}-dbg ttf-droid-sans ttf-droid-sans-mono \
21 ttf-droid-sans-fallback ttf-droid-sans-japanese ttf-droid-serif"
22RRECOMMENDS_${PN}-dbg = ""
23
24FILES_ttf-droid-sans = "${datadir}/fonts/truetype/DroidSans.ttf ${datadir}/fonts/truetype/DroidSans-Bold.ttf"
25FILES_ttf-droid-sans-mono = "${datadir}/fonts/truetype/DroidSansMono.ttf"
26FILES_ttf-droid-sans-fallback = "${datadir}/fonts/truetype/DroidSansFallback.ttf"
27FILES_ttf-droid-sans-japanese = "${datadir}/fonts/truetype/DroidSansJapanese.ttf"
28FILES_ttf-droid-serif = "${datadir}/fonts/truetype/DroidSerif*.ttf"
diff --git a/meta-oe/recipes-graphics/ttf-fonts/ttf-gentium/OFL.gz b/meta-oe/recipes-graphics/ttf-fonts/ttf-gentium/OFL.gz
new file mode 100644
index 000000000..7ebada757
--- /dev/null
+++ b/meta-oe/recipes-graphics/ttf-fonts/ttf-gentium/OFL.gz
Binary files differ
diff --git a/meta-oe/recipes-graphics/ttf-fonts/ttf-gentium_1.02.bb b/meta-oe/recipes-graphics/ttf-fonts/ttf-gentium_1.02.bb
new file mode 100644
index 000000000..698b2edf8
--- /dev/null
+++ b/meta-oe/recipes-graphics/ttf-fonts/ttf-gentium_1.02.bb
@@ -0,0 +1,135 @@
1require ttf.inc
2
3DESCRIPTION = "Gentium fonts - TTF Version"
4HOMEPAGE = "http://scripts.sil.org/gentium"
5LICENSE = "SIL Open Font License"
6LICENSE_URL = "http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&item_id=OFL"
7PR = "r3"
8
9SRC_URI = "${DEBIAN_MIRROR}/main/t/ttf-gentium/ttf-gentium_${PV}.orig.tar.gz \
10 file://OFL.gz"
11
12S = "${WORKDIR}/ttf-sil-gentium-${PV}"
13
14do_install_append() {
15
16 install -d ${D}${datadir}/doc/ttf-gentium/
17 install -d ${D}${datadir}/doc/ttf-gentium-alt/
18
19 install -m 0644 ${WORKDIR}/OFL ${D}${datadir}/doc/ttf-gentium/
20 install -m 0644 ${WORKDIR}/OFL ${D}${datadir}/doc/ttf-gentium-alt/
21
22}
23
24PACKAGES = "${PN}-dbg ${PN} ${PN}-alt"
25
26FILES_ttf-gentium-alt = "${datadir}/fonts/truetype/GenAI*.ttf \
27 ${datadir}/fonts/truetype/GenAR*.ttf \
28 ${datadir}/doc/ttf-gentium-alt/*"
29
30FILES_${PN} = "${datadir}/fonts/truetype/GenI*.ttf \
31 ${datadir}/fonts/truetype/GenR*.ttf \
32 ${datadir}/doc/ttf-gentium/*"
33
34#
35# License
36#
37# Gentium is released under the SIL Open Font License - please read it carefully
38# and do not download the fonts unless you agree to the terms of the license:
39#
40# This Font Software is Copyright (c) 2003-2005, SIL International
41# (http://scripts.sil.org/). All Rights Reserved.
42#
43# "Gentium" is a Reserved Font Name for this Font Software. "SIL" is a Reserved
44# Font Name for this Font Software.
45#
46# This Font Software is licensed under the SIL Open Font License, Version 1.0. No
47# modification of the license is permitted, only verbatim copy is allowed. This
48# license is copied below, and is also available with a FAQ
49# at:http://scripts.sil.org/OFL SIL OPEN FONT LICENSE
50#
51# Version 1.0 - 22 November 2005
52#
53# PREAMBLE
54#
55# The goals of the Open Font License (OFL) are to stimulate worldwide development
56# of cooperative font projects, to support the font creation efforts of academic
57# and linguistic communities, and to provide an open framework in which fonts may
58# be shared and improved in partnership with others.
59#
60# The OFL allows the licensed fonts to be used, studied, modified and
61# redistributed freely as long as they are not sold by themselves. The fonts,
62# including any derivative works, can be bundled, embedded, redistributed and
63# sold with any software provided that the font names of derivative works are
64# changed. The fonts and derivatives, however, cannot be released under any other
65# type of license.
66#
67# DEFINITIONS
68#
69# "Font Software" refers to any and all of the following:
70#
71# * font files data files source code build scripts documentation
72#
73# "Reserved Font Name" refers to the Font Software name as seen by users and any
74# other names as specified after the copyright statement.
75#
76# "Standard Version" refers to the collection of Font Software components as
77# distributed by the Copyright Holder.
78#
79# "Modified Version" refers to any derivative font software made by adding to,
80# deleting, or substituting -- in part or in whole -- any of the components of
81# the Standard Version, by changing formats or by porting the Font Software to a
82# new environment.
83#
84# "Author" refers to any designer, engineer, programmer, technical writer or
85# other person who contributed to the Font Software.
86#
87# PERMISSION & CONDITIONS
88#
89# Permission is hereby granted, free of charge, to any person obtaining a copy of
90# the Font Software, to use, study, copy, merge, embed, modify, redistribute, and
91# sell modified and unmodified copies of the Font Software, subject to the
92# following conditions:
93#
94# 1) Neither the Font Software nor any of its individual components, in Standard
95# or Modified Versions, may be sold by itself.
96#
97# 2) Standard or Modified Versions of the Font Software may be bundled,
98# redistributed and sold with any software, provided that each copy contains the
99# above copyright notice and this license. These can be included either as
100# stand-alone text files, human-readable headers or in the appropriate
101# machine-readable metadata fields within text or binary files as long as those
102# fields can be easily viewed by the user.
103#
104# 3) No Modified Version of the Font Software may use the Reserved Font Name(s),
105# in part or in whole, unless explicit written permission is granted by the
106# Copyright Holder. This restriction applies to all references stored in the Font
107# Software, such as the font menu name and other font description fields, which
108# are used to differentiate the font from others.
109#
110# 4) The name(s) of the Copyright Holder or the Author(s) of the Font Software
111# shall not be used to promote, endorse or advertise any Modified Version, except
112# to acknowledge the contribution(s) of the Copyright Holder and the Author(s) or
113# with their explicit written permission.
114#
115# 5) The Font Software, modified or unmodified, in part or in whole, must be
116# distributed using this license, and may not be distributed under any other
117# license.
118#
119# TERMINATION
120#
121# This license becomes null and void if any of the above conditions are not met.
122#
123# DISCLAIMER
124#
125# THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
126# IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY,
127# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT,
128# TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR
129# ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL,
130# INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF
131# CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE
132# THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE.
133
134SRC_URI[md5sum] = "4c3e6ae586be277537ebb68f2a45b883"
135SRC_URI[sha256sum] = "4746c04c9a4ad9e0788a38e0a2f81919a630d8070ceabc89f156b6d41d8ceb37"
diff --git a/meta-oe/recipes-graphics/ttf-fonts/ttf-hunkyfonts_0.3.0.bb b/meta-oe/recipes-graphics/ttf-fonts/ttf-hunkyfonts_0.3.0.bb
new file mode 100644
index 000000000..3984f868a
--- /dev/null
+++ b/meta-oe/recipes-graphics/ttf-fonts/ttf-hunkyfonts_0.3.0.bb
@@ -0,0 +1,18 @@
1require ttf.inc
2
3DESCRIPTION = "Hunky fonts - TTF Version"
4HOMEPAGE = "http://sourceforge.net/projects/hunkyfonts"
5LICENSE = "LGPL"
6PR = "r3"
7
8SRC_URI = "${SOURCEFORGE_MIRROR}/hunkyfonts/hunkyfonts-${PV}.tar.bz2"
9
10S = "${WORKDIR}/hunkyfonts-${PV}/TTF/"
11
12PACKAGES = "${PN}-dbg ttf-hunky-sans ttf-hunky-serif"
13RRECOMMENDS_${PN}-dbg = ""
14FILES_ttf-hunky-sans = "${datadir}/fonts/truetype/HunkySans*.ttf"
15FILES_ttf-hunky-serif = "${datadir}/fonts/truetype/HunkySerif*.ttf"
16
17SRC_URI[md5sum] = "36444795a356fb8a56c63b2840729bab"
18SRC_URI[sha256sum] = "e0b1849c545b6af276407d93025c73094dd74fc259b07c1d91594fdbb9a0b829"
diff --git a/meta-oe/recipes-graphics/ttf-fonts/ttf-mplus_027.bb b/meta-oe/recipes-graphics/ttf-fonts/ttf-mplus_027.bb
new file mode 100644
index 000000000..a6f885b8d
--- /dev/null
+++ b/meta-oe/recipes-graphics/ttf-fonts/ttf-mplus_027.bb
@@ -0,0 +1,22 @@
1require ttf.inc
2
3DESCRIPTION = "MPlus font - TTF Edition"
4HOMEPAGE = "http://dejavu.sourceforge.net/wiki/"
5LICENSE = "${PN}"
6PR = "r0"
7
8SRC_URI = "http://osdn.dl.sourceforge.jp/mplus-fonts/6650/mplus-TESTFLIGHT-${PV}.tar.gz"
9S = "${WORKDIR}/mplus-TESTFLIGHT-${PV}"
10
11python populate_packages_prepend() {
12 plugindir = bb.data.expand('${datadir}/fonts/ttf-mplus/', d)
13 do_split_packages(d, plugindir, '^(.*)\.ttf$', 'ttf-%s', 'TTF Font %s', extra_depends = "ttf-common")
14}
15
16do_install() {
17 install -d ${D}${datadir}/fonts/ttf-mplus
18 install -m 0644 *.ttf ${D}${datadir}/fonts/ttf-mplus/
19}
20
21SRC_URI[md5sum] = "d1400184b51b3871e8d2fca6c50e18ae"
22SRC_URI[sha256sum] = "a20b9b9b03c2a6fb1e2137d29e8a6ce06406ba1e008906ea3c474dc048dc06a6"
diff --git a/meta-oe/recipes-graphics/ttf-fonts/ttf-sazanami_20040629.bb b/meta-oe/recipes-graphics/ttf-fonts/ttf-sazanami_20040629.bb
new file mode 100644
index 000000000..1b9a01b2a
--- /dev/null
+++ b/meta-oe/recipes-graphics/ttf-fonts/ttf-sazanami_20040629.bb
@@ -0,0 +1,33 @@
1require ttf.inc
2
3DESCRIPTION = "Sazanami Gothic/Mincho Japanese TrueType fonts"
4DESCRIPTION_ttf-sazanami-gothic = "Sazanami Gothic Japanese TrueType font"
5DESCRIPTION_ttf-sazanami-mincho = "Sazanami Mincho Japanese TrueType font"
6AUTHOR = "Electronic Font Open Laboratory (/efont/)"
7HOMEPAGE = "http://sourceforge.jp/projects/efont/"
8LICENSE = "${PN}"
9SRC_DISTRIBUTE_LICENSES += "${PN}"
10RPROVIDES_${PN} = "virtual-japanese-font"
11PR = "r5"
12
13SRC_URI = "http://osdn.dl.sourceforge.jp/efont/10087/sazanami-20040629.tar.bz2"
14S = "${WORKDIR}/sazanami-20040629"
15
16PACKAGES = "${PN}-dbg ttf-sazanami-gothic ttf-sazanami-mincho"
17RRECOMMENDS_${PN}-dbg = ""
18FILES_ttf-sazanami-gothic = "${datadir}/fonts/truetype/sazanami-gothic.ttf \
19 ${datadir}/doc/ttf-sazanami-gothic/README"
20FILES_ttf-sazanami-mincho = "${datadir}/fonts/truetype/sazanami-mincho.ttf \
21 ${datadir}/doc/ttf-sazanami-mincho/README"
22
23do_install_append() {
24 # README contains the redistribution license
25 install -d ${D}${datadir}/doc/
26 install -d ${D}${datadir}/doc/ttf-sazanami-gothic
27 install -d ${D}${datadir}/doc/ttf-sazanami-mincho
28 install -m 0644 ${S}/README ${D}${datadir}/doc/ttf-sazanami-gothic
29 install -m 0644 ${S}/README ${D}${datadir}/doc/ttf-sazanami-mincho
30}
31
32SRC_URI[md5sum] = "ceef10579a75c92483171f3bd7f77df2"
33SRC_URI[sha256sum] = "3467ce2f70a9a3fbbf8d4d97355a2f334a6351baa6722251403637a8cbebf6b7"
diff --git a/meta-oe/recipes-graphics/ttf-fonts/ttf-ubuntu-font-family_0.69.bb b/meta-oe/recipes-graphics/ttf-fonts/ttf-ubuntu-font-family_0.69.bb
new file mode 100644
index 000000000..cc8d2e4cb
--- /dev/null
+++ b/meta-oe/recipes-graphics/ttf-fonts/ttf-ubuntu-font-family_0.69.bb
@@ -0,0 +1,18 @@
1require ttf.inc
2
3DESCRIPTION = "Ubuntu Font Family - TTF Version"
4HOMEPAGE = "http://font.ubuntu.com"
5LICENSE = "UFL"
6PR = "r0"
7
8SRC_URI = "http://font.ubuntu.com/download/ubuntu-font-family-${PV}+ufl.zip"
9SRC_URI[md5sum] = "2c3287ea72f81ce025095f7a6d68af28"
10SRC_URI[sha256sum] = "23206a306d92ec57404ab3bc75610b6d8cfed0b8ddcfbe51b99fb48519a4855b"
11S = "${WORKDIR}/ubuntu-font-family-0.69+ufl"
12
13PACKAGES = "${PN}-dbg ttf-ubuntu-mono ttf-ubuntu-sans ttf-ubuntu-serif"
14RRECOMMENDS_${PN}-dbg = ""
15
16FILES_ttf-ubuntu-mono = "${datadir}/fonts/truetype/*Mono*"
17FILES_ttf-ubuntu-sans = "${datadir}/fonts/truetype/Ubuntu-*"
18FILES_ttf-ubuntu-serif = "${datadir}/fonts/truetype/*Serif*"
diff --git a/meta-oe/recipes-graphics/ttf-fonts/ttf-wqy-zenhei_0.6.26.bb b/meta-oe/recipes-graphics/ttf-fonts/ttf-wqy-zenhei_0.6.26.bb
new file mode 100644
index 000000000..2d1d23e12
--- /dev/null
+++ b/meta-oe/recipes-graphics/ttf-fonts/ttf-wqy-zenhei_0.6.26.bb
@@ -0,0 +1,22 @@
1require ttf.inc
2
3DESCRIPTION = "WenQuanYi Zen Hei - A Hei-Ti Style Chinese font"
4AUTHOR = "Qianqian Fang and The WenQuanYi Project Contributors"
5HOMEPAGE = "http://wqy.sourceforge.net/en/"
6LICENSE = "GPLv2"
7
8SRC_URI = "${SOURCEFORGE_MIRROR}/wqy/wqy-zenhei-${PV}-0.tar.gz"
9S = "${WORKDIR}/wqy-zenhei"
10
11do_install_append () {
12 install -d ${D}${sysconfdir}/fonts/conf.d/
13 install -m 0644 ${S}/44-wqy-zenhei.conf ${D}${sysconfdir}/fonts/conf.d/
14 install -m 0644 ${S}/66-wqy-zenhei-sharp.conf ${D}${sysconfdir}/fonts/conf.d/
15}
16
17PACKAGES = "${PN}"
18
19FILES_${PN} = "${datadir}/fonts ${sysconfdir}"
20
21SRC_URI[md5sum] = "bf2c1cb512606d995873bada27c777da"
22SRC_URI[sha256sum] = "47355b6ec84bb309614b6d657ddfda993b96ed0be569264f82e523b254f945b2"
diff --git a/meta-oe/recipes-graphics/ttf-fonts/ttf.inc b/meta-oe/recipes-graphics/ttf-fonts/ttf.inc
new file mode 100644
index 000000000..af3f27853
--- /dev/null
+++ b/meta-oe/recipes-graphics/ttf-fonts/ttf.inc
@@ -0,0 +1,23 @@
1DESCRIPTION ?= "TrueType font package ${PN}"
2SECTION = "fonts"
3PRIORITY = "optional"
4# don't use RRECOMMENDS_${PN} here because sometimes each font is packaged to separate package and each one needs this dep to call update-fonts
5RRECOMMENDS += "font-update-common"
6
7# we don't need a compiler nor a c library for these fonts
8INHIBIT_DEFAULT_DEPS = "1"
9
10do_install() {
11 install -d ${D}${datadir}/fonts/truetype/
12 find ./ -name '*.tt[cf]' -exec install -m 0644 {} ${D}${datadir}/fonts/truetype/ \;
13}
14
15pkg_postinst_append() {
16 update-fonts
17}
18
19pkg_postrm_append() {
20 update-fonts
21}
22
23PACKAGE_ARCH = "all"
diff --git a/meta-oe/recipes-graphics/xorg-driver/xf86-video-omapfb/0001-blacklist-tv-out.patch b/meta-oe/recipes-graphics/xorg-driver/xf86-video-omapfb/0001-blacklist-tv-out.patch
new file mode 100644
index 000000000..5ac3b7ae9
--- /dev/null
+++ b/meta-oe/recipes-graphics/xorg-driver/xf86-video-omapfb/0001-blacklist-tv-out.patch
@@ -0,0 +1,28 @@
1From 05efb061f1945425d214ff6b6050883e6d8633bf Mon Sep 17 00:00:00 2001
2From: Koen Kooi <koen@dominion.thruhere.net>
3Date: Wed, 26 Jan 2011 13:21:12 +0100
4Subject: [PATCH 1/3] blacklist tv out
5
6Signed-off-by: Koen Kooi <koen@dominion.thruhere.net>
7---
8 src/omapfb-output-dss.c | 4 ++++
9 1 files changed, 4 insertions(+), 0 deletions(-)
10
11diff --git a/src/omapfb-output-dss.c b/src/omapfb-output-dss.c
12index 6cc52de..83cb711 100644
13--- a/src/omapfb-output-dss.c
14+++ b/src/omapfb-output-dss.c
15@@ -205,6 +205,10 @@ OMAPFBDSSOutputDetect (xf86OutputPtr output)
16 if(ofb->timings[idx][0] == '\0')
17 return XF86OutputStatusDisconnected;
18
19+ // Hack to disable the tv out
20+ if (strncmp(output->name, "tv", 2) == 0)
21+ return XF86OutputStatusDisconnected;
22+
23 return XF86OutputStatusConnected;
24 }
25
26--
271.6.6.1
28
diff --git a/meta-oe/recipes-graphics/xorg-driver/xf86-video-omapfb/0002-Revert-Set-virtual-size-when-configuring-framebuffer.patch b/meta-oe/recipes-graphics/xorg-driver/xf86-video-omapfb/0002-Revert-Set-virtual-size-when-configuring-framebuffer.patch
new file mode 100644
index 000000000..41d5f131a
--- /dev/null
+++ b/meta-oe/recipes-graphics/xorg-driver/xf86-video-omapfb/0002-Revert-Set-virtual-size-when-configuring-framebuffer.patch
@@ -0,0 +1,26 @@
1From 316f31253902eb3567ef62faf52b3f0a5d6b0c93 Mon Sep 17 00:00:00 2001
2From: Koen Kooi <koen@dominion.thruhere.net>
3Date: Wed, 26 Jan 2011 13:27:20 +0100
4Subject: [PATCH 2/3] Revert "Set virtual size when configuring framebuffer"
5
6This reverts commit 2653ef07883fbd1a5e7025f9300cf89b79ba429a.
7---
8 src/omapfb-crtc.c | 2 --
9 1 files changed, 0 insertions(+), 2 deletions(-)
10
11diff --git a/src/omapfb-crtc.c b/src/omapfb-crtc.c
12index 9aaa52f..d321a5a 100644
13--- a/src/omapfb-crtc.c
14+++ b/src/omapfb-crtc.c
15@@ -98,8 +98,6 @@ OMAPFBCrtcCommitChangeMode (xf86CrtcPtr crtc)
16 v = ofb->state_info;
17 v.xres = mode->HDisplay;
18 v.yres = mode->VDisplay;
19- v.xres_virtual = crtc->scrn->virtualX;
20- v.yres_virtual = crtc->scrn->virtualY;
21 v.activate = FB_ACTIVATE_NOW;
22 v.pixclock = KHZ2PICOS(mode->Clock ? mode->Clock : 56000);
23 v.left_margin = mode->HTotal - mode->HSyncEnd;
24--
251.6.6.1
26
diff --git a/meta-oe/recipes-graphics/xorg-driver/xf86-video-omapfb/0003-force-plain-mode.patch b/meta-oe/recipes-graphics/xorg-driver/xf86-video-omapfb/0003-force-plain-mode.patch
new file mode 100644
index 000000000..06eeca9d2
--- /dev/null
+++ b/meta-oe/recipes-graphics/xorg-driver/xf86-video-omapfb/0003-force-plain-mode.patch
@@ -0,0 +1,26 @@
1From b7acfade1ac15332ebfd24d4bf02b466858c8cf8 Mon Sep 17 00:00:00 2001
2From: Koen Kooi <koen@dominion.thruhere.net>
3Date: Wed, 26 Jan 2011 13:20:20 +0100
4Subject: [PATCH 3/3] force 'plain' mode
5
6Signed-off-by: Koen Kooi <koen@dominion.thruhere.net>
7---
8 src/omapfb-driver.c | 2 +-
9 1 files changed, 1 insertions(+), 1 deletions(-)
10
11diff --git a/src/omapfb-driver.c b/src/omapfb-driver.c
12index 018e040..48aa09c 100644
13--- a/src/omapfb-driver.c
14+++ b/src/omapfb-driver.c
15@@ -326,7 +326,7 @@ OMAPFBPreInit(ScrnInfoPtr pScrn, int flags)
16 OMAPFBProbeController(ofb->ctrl_name);
17
18 /* Do we have the DSS kernel API? */
19- if (stat(SYSFS_DSS_DIR, &st) == 0) {
20+ if (0) { //stat(SYSFS_DSS_DIR, &st) == 0) {
21 ofb->dss = TRUE;
22 } else {
23 ofb->dss = FALSE;
24--
251.6.6.1
26
diff --git a/meta-oe/recipes-graphics/xorg-driver/xf86-video-omapfb_git.bb b/meta-oe/recipes-graphics/xorg-driver/xf86-video-omapfb_git.bb
new file mode 100644
index 000000000..85b68b17c
--- /dev/null
+++ b/meta-oe/recipes-graphics/xorg-driver/xf86-video-omapfb_git.bb
@@ -0,0 +1,29 @@
1require recipes-graphics/xorg-driver/xf86-driver-common.inc
2
3INC_PR ?= "r15"
4
5DESCRIPTION = "X.Org X server -- OMAP display driver"
6PE = "1"
7PV = "0.1.1+${PR}+gitr${SRCREV}"
8PR = "${INC_PR}.2"
9
10LICENSE = "MIT-X"
11LIC_FILES_CHKSUM = "file://src/omapfb-driver.c;beginline=1;endline=30;md5=a44c2a37e04d1c2c5f0313afb493f833"
12
13SRC_URI = "git://git.pingu.fi/xf86-video-omapfb.git;protocol=http \
14 file://0001-blacklist-tv-out.patch \
15 file://0002-Revert-Set-virtual-size-when-configuring-framebuffer.patch \
16 file://0003-force-plain-mode.patch \
17 "
18
19SRCREV_pn-${PN} = "044617665d6737f4909aab96f91b06261dff05d2"
20S = "${WORKDIR}/git"
21
22EXTRA_OECONF_armv7a = " --enable-neon "
23
24# Use overlay 2 on omap3 to enable other apps to use overlay 1 (e.g. dmai or omapfbplay)
25do_compile_prepend_armv7a () {
26 sed -i -e s:fb1:fb2:g ${S}/src/omapfb-xv.c
27}
28
29CFLAGS += " -I${STAGING_INCDIR}/xorg "
diff --git a/meta-oe/recipes-graphics/xorg-lib/libxext_1.2.0.bb b/meta-oe/recipes-graphics/xorg-lib/libxext_1.2.0.bb
new file mode 100644
index 000000000..3d18d6288
--- /dev/null
+++ b/meta-oe/recipes-graphics/xorg-lib/libxext_1.2.0.bb
@@ -0,0 +1,18 @@
1DESCRIPTION = "X11 miscellaneous extension library"
2
3require xorg-lib-common.inc
4
5LICENSE = "MIT-style"
6LIC_FILES_CHKSUM = "file://COPYING;md5=0542b0321c1c9a7a20b23a1b9fa45f91"
7
8DEPENDS += "xproto virtual/libx11 xextproto libxau libxdmcp"
9PROVIDES = "xext"
10
11PR = "r0"
12PE = "1"
13
14XORG_PN = "libXext"
15
16
17SRC_URI[md5sum] = "9bb236ff0193e9fc1c1fb504dd840331"
18SRC_URI[sha256sum] = "4aed3e211e41c47908c293515580e731c26048f61a1212bf0888d1f456de6ff7"
diff --git a/meta-oe/recipes-graphics/xorg-lib/libxrender_0.9.6.bb b/meta-oe/recipes-graphics/xorg-lib/libxrender_0.9.6.bb
new file mode 100644
index 000000000..c1bb045f8
--- /dev/null
+++ b/meta-oe/recipes-graphics/xorg-lib/libxrender_0.9.6.bb
@@ -0,0 +1,17 @@
1DESCRIPTION = "X11 Rendering Extension client library"
2
3require xorg-lib-common.inc
4
5LICENSE = "MIT-style"
6LIC_FILES_CHKSUM = "file://COPYING;md5=0db75cc842842b36f097fdae571b4b70"
7
8DEPENDS += "virtual/libx11 renderproto xproto xdmcp"
9
10PR = "r0"
11PE = "1"
12
13XORG_PN = "libXrender"
14
15
16SRC_URI[md5sum] = "3b3b7d076c2384b6c600c0b5f4ba971f"
17SRC_URI[sha256sum] = "7f58b1e263109e0a873eef8423aa14733a5499befbe645053aa622ed1f3ea668"
diff --git a/meta-oe/recipes-graphics/xorg-lib/pixman-0.20.0/0000-Add-pixman_bits_override_accessors.patch b/meta-oe/recipes-graphics/xorg-lib/pixman-0.20.0/0000-Add-pixman_bits_override_accessors.patch
new file mode 100644
index 000000000..43cd44268
--- /dev/null
+++ b/meta-oe/recipes-graphics/xorg-lib/pixman-0.20.0/0000-Add-pixman_bits_override_accessors.patch
@@ -0,0 +1,77 @@
1From 38aabb3be87ea68e37f34256c778d07f62680ec6 Mon Sep 17 00:00:00 2001
2From: Siarhei Siamashka <siarhei.siamashka@nokia.com>
3Date: Thu, 10 Dec 2009 00:51:50 +0200
4Subject: [PATCH 1/9] add _pixman_bits_override_accessors
5
6* from patch ARM: HACK: added NEON optimizations for fetch/store r5g6b5 scanline
7* used in
8 0005-ARM-added-NEON-optimizations-for-fetch-store-r5g6b5-.patch
9 0006-ARM-added-NEON-optimizations-for-fetch-store-a8-scan.patch
10 0007-ARM-added-NEON-optimizations-for-fetching-x8r8g8b8-s.patch
11
12
13---
14 pixman/pixman-access.c | 23 ++++++++++++++++++++++-
15 pixman/pixman-private.h | 5 +++++
16 4 files changed, 87 insertions(+), 1 deletions(-)
17
18diff --git a/pixman/pixman-access.c b/pixman/pixman-access.c
19index f1ce0ba..b33da29 100644
20--- a/pixman/pixman-access.c
21+++ b/pixman/pixman-access.c
22@@ -2836,7 +2836,7 @@ typedef struct
23 store_scanline_ ## format, store_scanline_generic_64 \
24 }
25
26-static const format_info_t accessors[] =
27+static format_info_t accessors[] =
28 {
29 /* 32 bpp formats */
30 FORMAT_INFO (a8r8g8b8),
31@@ -2978,6 +2978,27 @@ _pixman_bits_image_setup_accessors (bits_image_t *image)
32 setup_accessors (image);
33 }
34
35+void
36+_pixman_bits_override_accessors (pixman_format_code_t format,
37+ fetch_scanline_t fetch_func,
38+ store_scanline_t store_func)
39+{
40+ format_info_t *info = accessors;
41+
42+ while (info->format != PIXMAN_null)
43+ {
44+ if (info->format == format)
45+ {
46+ if (fetch_func)
47+ info->fetch_scanline_32 = fetch_func;
48+ if (store_func)
49+ info->store_scanline_32 = store_func;
50+ return;
51+ }
52+ info++;
53+ }
54+}
55+
56 #else
57
58 void
59diff --git a/pixman/pixman-private.h b/pixman/pixman-private.h
60index d85868f..564f8f0 100644
61--- a/pixman/pixman-private.h
62+++ b/pixman/pixman-private.h
63@@ -206,6 +206,11 @@ void
64 _pixman_bits_image_setup_accessors (bits_image_t *image);
65
66 void
67+_pixman_bits_override_accessors (pixman_format_code_t format,
68+ fetch_scanline_t fetch_func,
69+ store_scanline_t store_func);
70+
71+void
72 _pixman_image_get_scanline_generic_64 (pixman_image_t *image,
73 int x,
74 int y,
75--
761.6.6.1
77
diff --git a/meta-oe/recipes-graphics/xorg-lib/pixman-0.20.0/0001-Generic-C-implementation-of-pixman_blt-with-overlapp.patch b/meta-oe/recipes-graphics/xorg-lib/pixman-0.20.0/0001-Generic-C-implementation-of-pixman_blt-with-overlapp.patch
new file mode 100644
index 000000000..795cce5ba
--- /dev/null
+++ b/meta-oe/recipes-graphics/xorg-lib/pixman-0.20.0/0001-Generic-C-implementation-of-pixman_blt-with-overlapp.patch
@@ -0,0 +1,114 @@
1From 97b2bb933455f222b392b5c60a8bde82d7d6329f Mon Sep 17 00:00:00 2001
2From: Siarhei Siamashka <siarhei.siamashka@nokia.com>
3Date: Tue, 16 Mar 2010 16:55:28 +0100
4Subject: [PATCH 1/8] Generic C implementation of pixman_blt with overlapping support
5
6Uses memcpy/memmove functions to copy pixels, can handle the
7case when both source and destination areas are in the same
8image (this is useful for scrolling).
9
10It is assumed that copying direction is only important when
11using the same image for both source and destination (and
12src_stride == dst_stride). Copying direction is undefined
13for the images with different source and destination stride
14which happen to be in the overlapped areas (but this is an
15unrealistic case anyway).
16---
17 pixman/pixman-general.c | 21 ++++++++++++++++++---
18 pixman/pixman-private.h | 43 +++++++++++++++++++++++++++++++++++++++++++
19 2 files changed, 61 insertions(+), 3 deletions(-)
20
21diff --git a/pixman/pixman-general.c b/pixman/pixman-general.c
22index 4d234a0..c4d2c14 100644
23--- a/pixman/pixman-general.c
24+++ b/pixman/pixman-general.c
25@@ -280,9 +280,24 @@ general_blt (pixman_implementation_t *imp,
26 int width,
27 int height)
28 {
29- /* We can't blit unless we have sse2 or mmx */
30-
31- return FALSE;
32+ uint8_t *dst_bytes = (uint8_t *)dst_bits;
33+ uint8_t *src_bytes = (uint8_t *)src_bits;
34+ int bpp;
35+
36+ if (src_bpp != dst_bpp || src_bpp & 7)
37+ return FALSE;
38+
39+ bpp = src_bpp >> 3;
40+ width *= bpp;
41+ src_stride *= 4;
42+ dst_stride *= 4;
43+ pixman_blt_helper (src_bytes + src_y * src_stride + src_x * bpp,
44+ dst_bytes + dst_y * dst_stride + dst_x * bpp,
45+ src_stride,
46+ dst_stride,
47+ width,
48+ height);
49+ return TRUE;
50 }
51
52 static pixman_bool_t
53diff --git a/pixman/pixman-private.h b/pixman/pixman-private.h
54index c43172b..f980454 100644
55--- a/pixman/pixman-private.h
56+++ b/pixman/pixman-private.h
57@@ -10,6 +10,7 @@
58
59 #include "pixman.h"
60 #include <time.h>
61+#include <string.h>
62 #include <assert.h>
63 #include <stdio.h>
64 #include <string.h>
65@@ -873,4 +874,46 @@ void pixman_timer_register (pixman_timer_t *timer);
66
67 #endif /* PIXMAN_TIMERS */
68
69+/* a helper function, can blit 8-bit images with src/dst overlapping support */
70+static inline void
71+pixman_blt_helper (uint8_t *src_bytes,
72+ uint8_t *dst_bytes,
73+ int src_stride,
74+ int dst_stride,
75+ int width,
76+ int height)
77+{
78+ /*
79+ * The second part of this check is not strictly needed, but it prevents
80+ * unnecessary upside-down processing of areas which belong to different
81+ * images. Upside-down processing can be slower with fixed-distance-ahead
82+ * prefetch and perceived as having more tearing.
83+ */
84+ if (src_bytes < dst_bytes + width &&
85+ src_bytes + src_stride * height > dst_bytes)
86+ {
87+ src_bytes += src_stride * height - src_stride;
88+ dst_bytes += dst_stride * height - dst_stride;
89+ dst_stride = -dst_stride;
90+ src_stride = -src_stride;
91+ /* Horizontal scrolling to the left needs memmove */
92+ if (src_bytes + width > dst_bytes)
93+ {
94+ while (--height >= 0)
95+ {
96+ memmove (dst_bytes, src_bytes, width);
97+ dst_bytes += dst_stride;
98+ src_bytes += src_stride;
99+ }
100+ return;
101+ }
102+ }
103+ while (--height >= 0)
104+ {
105+ memcpy (dst_bytes, src_bytes, width);
106+ dst_bytes += dst_stride;
107+ src_bytes += src_stride;
108+ }
109+}
110+
111 #endif /* PIXMAN_PRIVATE_H */
112--
1131.6.6.1
114
diff --git a/meta-oe/recipes-graphics/xorg-lib/pixman-0.20.0/0002-Support-of-overlapping-src-dst-for-pixman_blt_mmx.patch b/meta-oe/recipes-graphics/xorg-lib/pixman-0.20.0/0002-Support-of-overlapping-src-dst-for-pixman_blt_mmx.patch
new file mode 100644
index 000000000..6e2d492aa
--- /dev/null
+++ b/meta-oe/recipes-graphics/xorg-lib/pixman-0.20.0/0002-Support-of-overlapping-src-dst-for-pixman_blt_mmx.patch
@@ -0,0 +1,91 @@
1From 47b31f936641da07431093ede340465625bfcb3d Mon Sep 17 00:00:00 2001
2From: Siarhei Siamashka <siarhei.siamashka@nokia.com>
3Date: Thu, 22 Oct 2009 05:45:47 +0300
4Subject: [PATCH 2/8] Support of overlapping src/dst for pixman_blt_mmx
5
6---
7 pixman/pixman-mmx.c | 55 +++++++++++++++++++++++++++++---------------------
8 1 files changed, 32 insertions(+), 23 deletions(-)
9
10diff --git a/pixman/pixman-mmx.c b/pixman/pixman-mmx.c
11index e936c4c..2413197 100644
12--- a/pixman/pixman-mmx.c
13+++ b/pixman/pixman-mmx.c
14@@ -2996,34 +2996,43 @@ pixman_blt_mmx (uint32_t *src_bits,
15 {
16 uint8_t * src_bytes;
17 uint8_t * dst_bytes;
18- int byte_width;
19+ int bpp;
20
21- if (src_bpp != dst_bpp)
22+ if (src_bpp != dst_bpp || src_bpp & 7)
23 return FALSE;
24
25- if (src_bpp == 16)
26- {
27- src_stride = src_stride * (int) sizeof (uint32_t) / 2;
28- dst_stride = dst_stride * (int) sizeof (uint32_t) / 2;
29- src_bytes = (uint8_t *)(((uint16_t *)src_bits) + src_stride * (src_y) + (src_x));
30- dst_bytes = (uint8_t *)(((uint16_t *)dst_bits) + dst_stride * (dst_y) + (dst_x));
31- byte_width = 2 * width;
32- src_stride *= 2;
33- dst_stride *= 2;
34- }
35- else if (src_bpp == 32)
36+ bpp = src_bpp >> 3;
37+ width *= bpp;
38+ src_stride *= 4;
39+ dst_stride *= 4;
40+ src_bytes = (uint8_t *)src_bits + src_y * src_stride + src_x * bpp;
41+ dst_bytes = (uint8_t *)dst_bits + dst_y * dst_stride + dst_x * bpp;
42+
43+ if (src_bpp != 16 && src_bpp != 32)
44 {
45- src_stride = src_stride * (int) sizeof (uint32_t) / 4;
46- dst_stride = dst_stride * (int) sizeof (uint32_t) / 4;
47- src_bytes = (uint8_t *)(((uint32_t *)src_bits) + src_stride * (src_y) + (src_x));
48- dst_bytes = (uint8_t *)(((uint32_t *)dst_bits) + dst_stride * (dst_y) + (dst_x));
49- byte_width = 4 * width;
50- src_stride *= 4;
51- dst_stride *= 4;
52+ pixman_blt_helper (src_bytes, dst_bytes, src_stride, dst_stride,
53+ width, height);
54+ return TRUE;
55 }
56- else
57+
58+ if (src_bytes < dst_bytes && src_bytes + src_stride * height > dst_bytes)
59 {
60- return FALSE;
61+ src_bytes += src_stride * height - src_stride;
62+ dst_bytes += dst_stride * height - dst_stride;
63+ dst_stride = -dst_stride;
64+ src_stride = -src_stride;
65+
66+ if (src_bytes + width > dst_bytes)
67+ {
68+ /* TODO: reverse scanline copy using MMX */
69+ while (--height >= 0)
70+ {
71+ memmove (dst_bytes, src_bytes, width);
72+ dst_bytes += dst_stride;
73+ src_bytes += src_stride;
74+ }
75+ return TRUE;
76+ }
77 }
78
79 while (height--)
80@@ -3033,7 +3042,7 @@ pixman_blt_mmx (uint32_t *src_bits,
81 uint8_t *d = dst_bytes;
82 src_bytes += src_stride;
83 dst_bytes += dst_stride;
84- w = byte_width;
85+ w = width;
86
87 while (w >= 2 && ((unsigned long)d & 3))
88 {
89--
901.6.6.1
91
diff --git a/meta-oe/recipes-graphics/xorg-lib/pixman-0.20.0/0003-Support-of-overlapping-src-dst-for-pixman_blt_sse2.patch b/meta-oe/recipes-graphics/xorg-lib/pixman-0.20.0/0003-Support-of-overlapping-src-dst-for-pixman_blt_sse2.patch
new file mode 100644
index 000000000..910f62e6d
--- /dev/null
+++ b/meta-oe/recipes-graphics/xorg-lib/pixman-0.20.0/0003-Support-of-overlapping-src-dst-for-pixman_blt_sse2.patch
@@ -0,0 +1,91 @@
1From 13be027637602fffda3b3cb6e171d8d6a67b3b4b Mon Sep 17 00:00:00 2001
2From: Siarhei Siamashka <siarhei.siamashka@nokia.com>
3Date: Thu, 22 Oct 2009 05:45:54 +0300
4Subject: [PATCH 3/8] Support of overlapping src/dst for pixman_blt_sse2
5
6---
7 pixman/pixman-sse2.c | 55 +++++++++++++++++++++++++++++--------------------
8 1 files changed, 32 insertions(+), 23 deletions(-)
9
10diff --git a/pixman/pixman-sse2.c b/pixman/pixman-sse2.c
11index 5907de0..25015ae 100644
12--- a/pixman/pixman-sse2.c
13+++ b/pixman/pixman-sse2.c
14@@ -5027,34 +5027,43 @@ pixman_blt_sse2 (uint32_t *src_bits,
15 {
16 uint8_t * src_bytes;
17 uint8_t * dst_bytes;
18- int byte_width;
19+ int bpp;
20
21- if (src_bpp != dst_bpp)
22+ if (src_bpp != dst_bpp || src_bpp & 7)
23 return FALSE;
24
25- if (src_bpp == 16)
26- {
27- src_stride = src_stride * (int) sizeof (uint32_t) / 2;
28- dst_stride = dst_stride * (int) sizeof (uint32_t) / 2;
29- src_bytes =(uint8_t *)(((uint16_t *)src_bits) + src_stride * (src_y) + (src_x));
30- dst_bytes = (uint8_t *)(((uint16_t *)dst_bits) + dst_stride * (dst_y) + (dst_x));
31- byte_width = 2 * width;
32- src_stride *= 2;
33- dst_stride *= 2;
34- }
35- else if (src_bpp == 32)
36+ bpp = src_bpp >> 3;
37+ width *= bpp;
38+ src_stride *= 4;
39+ dst_stride *= 4;
40+ src_bytes = (uint8_t *)src_bits + src_y * src_stride + src_x * bpp;
41+ dst_bytes = (uint8_t *)dst_bits + dst_y * dst_stride + dst_x * bpp;
42+
43+ if (src_bpp != 16 && src_bpp != 32)
44 {
45- src_stride = src_stride * (int) sizeof (uint32_t) / 4;
46- dst_stride = dst_stride * (int) sizeof (uint32_t) / 4;
47- src_bytes = (uint8_t *)(((uint32_t *)src_bits) + src_stride * (src_y) + (src_x));
48- dst_bytes = (uint8_t *)(((uint32_t *)dst_bits) + dst_stride * (dst_y) + (dst_x));
49- byte_width = 4 * width;
50- src_stride *= 4;
51- dst_stride *= 4;
52+ pixman_blt_helper (src_bytes, dst_bytes, src_stride, dst_stride,
53+ width, height);
54+ return TRUE;
55 }
56- else
57+
58+ if (src_bytes < dst_bytes && src_bytes + src_stride * height > dst_bytes)
59 {
60- return FALSE;
61+ src_bytes += src_stride * height - src_stride;
62+ dst_bytes += dst_stride * height - dst_stride;
63+ dst_stride = -dst_stride;
64+ src_stride = -src_stride;
65+
66+ if (src_bytes + width > dst_bytes)
67+ {
68+ /* TODO: reverse scanline copy using SSE2 */
69+ while (--height >= 0)
70+ {
71+ memmove (dst_bytes, src_bytes, width);
72+ dst_bytes += dst_stride;
73+ src_bytes += src_stride;
74+ }
75+ return TRUE;
76+ }
77 }
78
79 while (height--)
80@@ -5064,7 +5073,7 @@ pixman_blt_sse2 (uint32_t *src_bits,
81 uint8_t *d = dst_bytes;
82 src_bytes += src_stride;
83 dst_bytes += dst_stride;
84- w = byte_width;
85+ w = width;
86
87 while (w >= 2 && ((unsigned long)d & 3))
88 {
89--
901.6.6.1
91
diff --git a/meta-oe/recipes-graphics/xorg-lib/pixman-0.20.0/0004-Support-of-overlapping-src-dst-for-pixman_blt_neon.patch b/meta-oe/recipes-graphics/xorg-lib/pixman-0.20.0/0004-Support-of-overlapping-src-dst-for-pixman_blt_neon.patch
new file mode 100644
index 000000000..f6aa9792b
--- /dev/null
+++ b/meta-oe/recipes-graphics/xorg-lib/pixman-0.20.0/0004-Support-of-overlapping-src-dst-for-pixman_blt_neon.patch
@@ -0,0 +1,94 @@
1From a913cc05a1a1c5a813cf06d248334edede9caab7 Mon Sep 17 00:00:00 2001
2From: Siarhei Siamashka <siarhei.siamashka@nokia.com>
3Date: Wed, 18 Nov 2009 06:08:48 +0200
4Subject: [PATCH 4/8] Support of overlapping src/dst for pixman_blt_neon
5
6---
7 pixman/pixman-arm-neon.c | 62 +++++++++++++++++++++++++++++++++++++--------
8 1 files changed, 51 insertions(+), 11 deletions(-)
9
10diff --git a/pixman/pixman-arm-neon.c b/pixman/pixman-arm-neon.c
11index be5d403..cbfd7cf 100644
12--- a/pixman/pixman-arm-neon.c
13+++ b/pixman/pixman-arm-neon.c
14@@ -176,26 +176,66 @@ pixman_blt_neon (uint32_t *src_bits,
15 int width,
16 int height)
17 {
18- if (src_bpp != dst_bpp)
19+ uint8_t * src_bytes;
20+ uint8_t * dst_bytes;
21+ int bpp;
22+
23+ if (src_bpp != dst_bpp || src_bpp & 7)
24 return FALSE;
25
26+ bpp = src_bpp >> 3;
27+ width *= bpp;
28+ src_stride *= 4;
29+ dst_stride *= 4;
30+ src_bytes = (uint8_t *)src_bits + src_y * src_stride + src_x * bpp;
31+ dst_bytes = (uint8_t *)dst_bits + dst_y * dst_stride + dst_x * bpp;
32+
33+ if (src_bpp != 16 && src_bpp != 32)
34+ {
35+ pixman_blt_helper (src_bytes, dst_bytes, src_stride, dst_stride,
36+ width, height);
37+ return TRUE;
38+ }
39+
40+ if (src_bytes < dst_bytes && src_bytes + src_stride * height > dst_bytes)
41+ {
42+ src_bytes += src_stride * height - src_stride;
43+ dst_bytes += dst_stride * height - dst_stride;
44+ dst_stride = -dst_stride;
45+ src_stride = -src_stride;
46+
47+ if (src_bytes + width > dst_bytes)
48+ {
49+ /* TODO: reverse scanline copy using NEON */
50+ while (--height >= 0)
51+ {
52+ memmove (dst_bytes, src_bytes, width);
53+ dst_bytes += dst_stride;
54+ src_bytes += src_stride;
55+ }
56+ return TRUE;
57+ }
58+ }
59+
60 switch (src_bpp)
61 {
62 case 16:
63 pixman_composite_src_0565_0565_asm_neon (
64- width, height,
65- (uint16_t *)(((char *) dst_bits) +
66- dst_y * dst_stride * 4 + dst_x * 2), dst_stride * 2,
67- (uint16_t *)(((char *) src_bits) +
68- src_y * src_stride * 4 + src_x * 2), src_stride * 2);
69+ width >> 1,
70+ height,
71+ (uint16_t *) dst_bytes,
72+ dst_stride >> 1,
73+ (uint16_t *) src_bytes,
74+ src_stride >> 1);
75 return TRUE;
76 case 32:
77 pixman_composite_src_8888_8888_asm_neon (
78- width, height,
79- (uint32_t *)(((char *) dst_bits) +
80- dst_y * dst_stride * 4 + dst_x * 4), dst_stride,
81- (uint32_t *)(((char *) src_bits) +
82- src_y * src_stride * 4 + src_x * 4), src_stride);
83+ width >> 2,
84+ height,
85+ (uint32_t *) dst_bytes,
86+ dst_stride >> 2,
87+ (uint32_t *) src_bytes,
88+ src_stride >> 2);
89 return TRUE;
90 default:
91 return FALSE;
92--
931.6.6.1
94
diff --git a/meta-oe/recipes-graphics/xorg-lib/pixman-0.20.0/0005-ARM-added-NEON-optimizations-for-fetch-store-r5g6b5-.patch b/meta-oe/recipes-graphics/xorg-lib/pixman-0.20.0/0005-ARM-added-NEON-optimizations-for-fetch-store-r5g6b5-.patch
new file mode 100644
index 000000000..dbe98b38c
--- /dev/null
+++ b/meta-oe/recipes-graphics/xorg-lib/pixman-0.20.0/0005-ARM-added-NEON-optimizations-for-fetch-store-r5g6b5-.patch
@@ -0,0 +1,109 @@
1From f75e9d1868e21dd75ff3a2ca3561546d23877ddb Mon Sep 17 00:00:00 2001
2From: Siarhei Siamashka <siarhei.siamashka@nokia.com>
3Date: Thu, 10 Dec 2009 00:51:50 +0200
4Subject: [PATCH 5/8] ARM: added NEON optimizations for fetch/store r5g6b5 scanline
5
6---
7 pixman/pixman-arm-neon-asm.S | 20 ++++++++++++++++++++
8 pixman/pixman-arm-neon.c | 40 ++++++++++++++++++++++++++++++++++++++++
9 2 files changed, 60 insertions(+), 0 deletions(-)
10
11diff --git a/pixman/pixman-arm-neon-asm.S b/pixman/pixman-arm-neon-asm.S
12index e4db5cd..c79ba81 100644
13--- a/pixman/pixman-arm-neon-asm.S
14+++ b/pixman/pixman-arm-neon-asm.S
15@@ -459,6 +459,16 @@ generate_composite_function \
16 pixman_composite_src_8888_0565_process_pixblock_tail, \
17 pixman_composite_src_8888_0565_process_pixblock_tail_head
18
19+generate_composite_function_single_scanline \
20+ pixman_store_scanline_r5g6b5_asm_neon, 32, 0, 16, \
21+ FLAG_DST_WRITEONLY | FLAG_DEINTERLEAVE_32BPP, \
22+ 8, /* number of pixels, processed in a single block */ \
23+ default_init, \
24+ default_cleanup, \
25+ pixman_composite_src_8888_0565_process_pixblock_head, \
26+ pixman_composite_src_8888_0565_process_pixblock_tail, \
27+ pixman_composite_src_8888_0565_process_pixblock_tail_head
28+
29 /******************************************************************************/
30
31 .macro pixman_composite_src_0565_8888_process_pixblock_head
32@@ -494,6 +504,16 @@ generate_composite_function \
33 pixman_composite_src_0565_8888_process_pixblock_tail, \
34 pixman_composite_src_0565_8888_process_pixblock_tail_head
35
36+generate_composite_function_single_scanline \
37+ pixman_fetch_scanline_r5g6b5_asm_neon, 16, 0, 32, \
38+ FLAG_DST_WRITEONLY | FLAG_DEINTERLEAVE_32BPP, \
39+ 8, /* number of pixels, processed in a single block */ \
40+ default_init, \
41+ default_cleanup, \
42+ pixman_composite_src_0565_8888_process_pixblock_head, \
43+ pixman_composite_src_0565_8888_process_pixblock_tail, \
44+ pixman_composite_src_0565_8888_process_pixblock_tail_head
45+
46 /******************************************************************************/
47
48 .macro pixman_composite_add_8_8_process_pixblock_head
49diff --git a/pixman/pixman-arm-neon.c b/pixman/pixman-arm-neon.c
50index cbfd7cf..f88c8f8 100644
51--- a/pixman/pixman-arm-neon.c
52+++ b/pixman/pixman-arm-neon.c
53@@ -392,6 +392,42 @@ BIND_COMBINE_U (over)
54 BIND_COMBINE_U (add)
55 BIND_COMBINE_U (out_reverse)
56
57+void
58+pixman_fetch_scanline_r5g6b5_asm_neon (int width,
59+ uint32_t *buffer,
60+ const uint16_t *pixel);
61+void
62+pixman_store_scanline_r5g6b5_asm_neon (int width,
63+ uint16_t *pixel,
64+ const uint32_t *values);
65+
66+static void
67+neon_fetch_scanline_r5g6b5 (pixman_image_t *image,
68+ int x,
69+ int y,
70+ int width,
71+ uint32_t * buffer,
72+ const uint32_t *mask)
73+{
74+ const uint32_t *bits = image->bits.bits + y * image->bits.rowstride;
75+ const uint16_t *pixel = (const uint16_t *)bits + x;
76+
77+ pixman_fetch_scanline_r5g6b5_asm_neon (width, buffer, pixel);
78+}
79+
80+static void
81+neon_store_scanline_r5g6b5 (bits_image_t * image,
82+ int x,
83+ int y,
84+ int width,
85+ const uint32_t *values)
86+{
87+ uint32_t *bits = image->bits + image->rowstride * y;
88+ uint16_t *pixel = ((uint16_t *) bits) + x;
89+
90+ pixman_store_scanline_r5g6b5_asm_neon (width, pixel, values);
91+}
92+
93 pixman_implementation_t *
94 _pixman_implementation_create_arm_neon (void)
95 {
96@@ -407,6 +443,10 @@ _pixman_implementation_create_arm_neon (void)
97 imp->combine_32[PIXMAN_OP_ADD] = neon_combine_add_u;
98 imp->combine_32[PIXMAN_OP_OUT_REVERSE] = neon_combine_out_reverse_u;
99
100+ _pixman_bits_override_accessors (PIXMAN_r5g6b5,
101+ neon_fetch_scanline_r5g6b5,
102+ neon_store_scanline_r5g6b5);
103+
104 imp->blt = arm_neon_blt;
105 imp->fill = arm_neon_fill;
106
107--
1081.6.6.1
109
diff --git a/meta-oe/recipes-graphics/xorg-lib/pixman-0.20.0/0006-ARM-added-NEON-optimizations-for-fetch-store-a8-scan.patch b/meta-oe/recipes-graphics/xorg-lib/pixman-0.20.0/0006-ARM-added-NEON-optimizations-for-fetch-store-a8-scan.patch
new file mode 100644
index 000000000..d050646fa
--- /dev/null
+++ b/meta-oe/recipes-graphics/xorg-lib/pixman-0.20.0/0006-ARM-added-NEON-optimizations-for-fetch-store-a8-scan.patch
@@ -0,0 +1,148 @@
1From a1cd695c5e22f0f4a2b7272fab675a3cc510bacb Mon Sep 17 00:00:00 2001
2From: Siarhei Siamashka <siarhei.siamashka@nokia.com>
3Date: Thu, 23 Sep 2010 21:10:56 +0300
4Subject: [PATCH 6/8] ARM: added NEON optimizations for fetch/store a8 scanline
5
6---
7 pixman/pixman-arm-neon-asm.S | 64 ++++++++++++++++++++++++++++++++++++++++++
8 pixman/pixman-arm-neon.c | 42 +++++++++++++++++++++++++++
9 2 files changed, 106 insertions(+), 0 deletions(-)
10
11diff --git a/pixman/pixman-arm-neon-asm.S b/pixman/pixman-arm-neon-asm.S
12index c79ba81..ca0825c 100644
13--- a/pixman/pixman-arm-neon-asm.S
14+++ b/pixman/pixman-arm-neon-asm.S
15@@ -418,6 +418,70 @@ generate_composite_function \
16
17 /******************************************************************************/
18
19+.macro pixman_composite_src_8_8888_process_pixblock_head
20+ /* This is tricky part: we can't set these values just once in 'init' macro
21+ * because leading/trailing pixels handling part uses VZIP.8 instructions,
22+ * and they operate on values in-place and destroy original registers
23+ * content. Think about it like VST4.8 instruction corrupting NEON
24+ * registers after write in 'tail_head' macro. Except that 'tail_head'
25+ * macro itself actually does not need these extra VMOVs because it uses
26+ * real VST4.8 instruction.
27+ */
28+ vmov.u8 q0, #0
29+ vmov.u8 d2, #0
30+.endm
31+
32+.macro pixman_composite_src_8_8888_process_pixblock_tail
33+.endm
34+
35+.macro pixman_composite_src_8_8888_process_pixblock_tail_head
36+ vst4.8 {d0, d1, d2, d3}, [DST_W, :128]!
37+ vld1.8 {d3}, [SRC]!
38+.endm
39+
40+generate_composite_function_single_scanline \
41+ pixman_fetch_scanline_a8_asm_neon, 8, 0, 32, \
42+ FLAG_DST_WRITEONLY | FLAG_DEINTERLEAVE_32BPP, \
43+ 8, /* number of pixels, processed in a single block */ \
44+ default_init, \
45+ default_cleanup, \
46+ pixman_composite_src_8_8888_process_pixblock_head, \
47+ pixman_composite_src_8_8888_process_pixblock_tail, \
48+ pixman_composite_src_8_8888_process_pixblock_tail_head, \
49+ 0, /* dst_w_basereg */ \
50+ 0, /* dst_r_basereg */ \
51+ 3, /* src_basereg */ \
52+ 0 /* mask_basereg */
53+
54+/******************************************************************************/
55+
56+.macro pixman_composite_src_8888_8_process_pixblock_head
57+.endm
58+
59+.macro pixman_composite_src_8888_8_process_pixblock_tail
60+.endm
61+
62+.macro pixman_composite_src_8888_8_process_pixblock_tail_head
63+ vst1.8 {d3}, [DST_W, :64]!
64+ vld4.8 {d0, d1, d2, d3}, [SRC]!
65+.endm
66+
67+generate_composite_function_single_scanline \
68+ pixman_store_scanline_a8_asm_neon, 32, 0, 8, \
69+ FLAG_DST_WRITEONLY | FLAG_DEINTERLEAVE_32BPP, \
70+ 8, /* number of pixels, processed in a single block */ \
71+ default_init, \
72+ default_cleanup, \
73+ pixman_composite_src_8888_8_process_pixblock_head, \
74+ pixman_composite_src_8888_8_process_pixblock_tail, \
75+ pixman_composite_src_8888_8_process_pixblock_tail_head, \
76+ 3, /* dst_w_basereg */ \
77+ 0, /* dst_r_basereg */ \
78+ 0, /* src_basereg */ \
79+ 0 /* mask_basereg */
80+
81+/******************************************************************************/
82+
83 .macro pixman_composite_src_8888_0565_process_pixblock_head
84 vshll.u8 q8, d1, #8
85 vshll.u8 q14, d2, #8
86diff --git a/pixman/pixman-arm-neon.c b/pixman/pixman-arm-neon.c
87index f88c8f8..43091d2 100644
88--- a/pixman/pixman-arm-neon.c
89+++ b/pixman/pixman-arm-neon.c
90@@ -428,6 +428,45 @@ neon_store_scanline_r5g6b5 (bits_image_t * image,
91 pixman_store_scanline_r5g6b5_asm_neon (width, pixel, values);
92 }
93
94+void
95+pixman_fetch_scanline_a8_asm_neon (int width,
96+ uint32_t *buffer,
97+ const uint8_t *pixel);
98+
99+
100+void
101+pixman_store_scanline_a8_asm_neon (int width,
102+ uint8_t *pixel,
103+ const uint32_t *values);
104+
105+static void
106+neon_fetch_scanline_a8 (pixman_image_t *image,
107+ int x,
108+ int y,
109+ int width,
110+ uint32_t * buffer,
111+ const uint32_t *mask)
112+{
113+ const uint32_t *bits = image->bits.bits + y * image->bits.rowstride;
114+ const uint8_t *pixel = (const uint8_t *) bits + x;
115+
116+ pixman_fetch_scanline_a8_asm_neon (width, buffer, pixel);
117+}
118+
119+static void
120+neon_store_scanline_a8 (bits_image_t * image,
121+ int x,
122+ int y,
123+ int width,
124+ const uint32_t *values)
125+{
126+ uint32_t *bits = image->bits + image->rowstride * y;
127+ uint8_t *pixel = (uint8_t *) bits + x;
128+
129+ pixman_store_scanline_a8_asm_neon (width, pixel, values);
130+}
131+
132+
133 pixman_implementation_t *
134 _pixman_implementation_create_arm_neon (void)
135 {
136@@ -446,6 +485,9 @@ _pixman_implementation_create_arm_neon (void)
137 _pixman_bits_override_accessors (PIXMAN_r5g6b5,
138 neon_fetch_scanline_r5g6b5,
139 neon_store_scanline_r5g6b5);
140+ _pixman_bits_override_accessors (PIXMAN_a8,
141+ neon_fetch_scanline_a8,
142+ neon_store_scanline_a8);
143
144 imp->blt = arm_neon_blt;
145 imp->fill = arm_neon_fill;
146--
1471.6.6.1
148
diff --git a/meta-oe/recipes-graphics/xorg-lib/pixman-0.20.0/0007-ARM-added-NEON-optimizations-for-fetching-x8r8g8b8-s.patch b/meta-oe/recipes-graphics/xorg-lib/pixman-0.20.0/0007-ARM-added-NEON-optimizations-for-fetching-x8r8g8b8-s.patch
new file mode 100644
index 000000000..7f28f47cf
--- /dev/null
+++ b/meta-oe/recipes-graphics/xorg-lib/pixman-0.20.0/0007-ARM-added-NEON-optimizations-for-fetching-x8r8g8b8-s.patch
@@ -0,0 +1,77 @@
1From d6ae7da60cc797900b5eff0786536c4a11ab0f50 Mon Sep 17 00:00:00 2001
2From: Siarhei Siamashka <siarhei.siamashka@nokia.com>
3Date: Fri, 24 Sep 2010 18:22:44 +0300
4Subject: [PATCH 7/8] ARM: added NEON optimizations for fetching x8r8g8b8 scanline
5
6---
7 pixman/pixman-arm-neon-asm.S | 14 ++++++++++++++
8 pixman/pixman-arm-neon.c | 21 +++++++++++++++++++++
9 2 files changed, 35 insertions(+), 0 deletions(-)
10
11diff --git a/pixman/pixman-arm-neon-asm.S b/pixman/pixman-arm-neon-asm.S
12index ca0825c..ffd0b83 100644
13--- a/pixman/pixman-arm-neon-asm.S
14+++ b/pixman/pixman-arm-neon-asm.S
15@@ -1206,6 +1206,20 @@ generate_composite_function \
16 0, /* src_basereg */ \
17 0 /* mask_basereg */
18
19+generate_composite_function_single_scanline \
20+ pixman_fetch_scanline_x888_asm_neon, 32, 0, 32, \
21+ FLAG_DST_WRITEONLY, \
22+ 8, /* number of pixels, processed in a single block */ \
23+ pixman_composite_src_x888_8888_init, \
24+ default_cleanup, \
25+ pixman_composite_src_x888_8888_process_pixblock_head, \
26+ pixman_composite_src_x888_8888_process_pixblock_tail, \
27+ pixman_composite_src_x888_8888_process_pixblock_tail_head, \
28+ 0, /* dst_w_basereg */ \
29+ 0, /* dst_r_basereg */ \
30+ 0, /* src_basereg */ \
31+ 0 /* mask_basereg */
32+
33 /******************************************************************************/
34
35 .macro pixman_composite_over_n_8_8888_process_pixblock_head
36diff --git a/pixman/pixman-arm-neon.c b/pixman/pixman-arm-neon.c
37index 43091d2..f84b5e6 100644
38--- a/pixman/pixman-arm-neon.c
39+++ b/pixman/pixman-arm-neon.c
40@@ -466,6 +466,24 @@ neon_store_scanline_a8 (bits_image_t * image,
41 pixman_store_scanline_a8_asm_neon (width, pixel, values);
42 }
43
44+void
45+pixman_fetch_scanline_x888_asm_neon (int width,
46+ uint32_t *buffer,
47+ const uint32_t *pixel);
48+
49+static void
50+neon_fetch_scanline_x888 (pixman_image_t *image,
51+ int x,
52+ int y,
53+ int width,
54+ uint32_t * buffer,
55+ const uint32_t *mask)
56+{
57+ const uint32_t *bits = image->bits.bits + y * image->bits.rowstride;
58+ const uint32_t *pixel = (const uint32_t *) bits + x;
59+
60+ pixman_fetch_scanline_x888_asm_neon (width, buffer, pixel);
61+}
62
63 pixman_implementation_t *
64 _pixman_implementation_create_arm_neon (void)
65@@ -488,6 +506,9 @@ _pixman_implementation_create_arm_neon (void)
66 _pixman_bits_override_accessors (PIXMAN_a8,
67 neon_fetch_scanline_a8,
68 neon_store_scanline_a8);
69+ _pixman_bits_override_accessors (PIXMAN_x8r8g8b8,
70+ neon_fetch_scanline_x888,
71+ NULL);
72
73 imp->blt = arm_neon_blt;
74 imp->fill = arm_neon_fill;
75--
761.6.6.1
77
diff --git a/meta-oe/recipes-graphics/xorg-lib/pixman-0.20.0/0008-ARM-optimization-for-scaled-src_0565_0565-operation-.patch b/meta-oe/recipes-graphics/xorg-lib/pixman-0.20.0/0008-ARM-optimization-for-scaled-src_0565_0565-operation-.patch
new file mode 100644
index 000000000..6efdb621a
--- /dev/null
+++ b/meta-oe/recipes-graphics/xorg-lib/pixman-0.20.0/0008-ARM-optimization-for-scaled-src_0565_0565-operation-.patch
@@ -0,0 +1,172 @@
1From e1191ad6563a1fb02a45982b1c4d7fed3c655e97 Mon Sep 17 00:00:00 2001
2From: Siarhei Siamashka <siarhei.siamashka@nokia.com>
3Date: Mon, 4 Oct 2010 01:56:59 +0300
4Subject: [PATCH 8/8] ARM optimization for scaled src_0565_0565 operation with nearest filter
5
6The code actually uses only armv4t instructions.
7
8Benchmark from ARM11:
9
10 == before ==
11 op=1, src_fmt=10020565, dst_fmt=10020565, speed=34.86 MPix/s
12
13 == after ==
14 op=1, src_fmt=10020565, dst_fmt=10020565, speed=36.62 MPix/s
15
16Benchmark from ARM Cortex-A8:
17
18 == before ==
19 op=1, src_fmt=10020565, dst_fmt=10020565, speed=89.55 MPix/s
20
21 == after ==
22 op=1, src_fmt=10020565, dst_fmt=10020565, speed=94.91 MPix/s
23---
24 pixman/pixman-arm-simd-asm.S | 66 ++++++++++++++++++++++++++++++++++++++++++
25 pixman/pixman-arm-simd.c | 37 +++++++++++++++++++++++
26 2 files changed, 103 insertions(+), 0 deletions(-)
27
28diff --git a/pixman/pixman-arm-simd-asm.S b/pixman/pixman-arm-simd-asm.S
29index a3d2d40..b6f69db 100644
30--- a/pixman/pixman-arm-simd-asm.S
31+++ b/pixman/pixman-arm-simd-asm.S
32@@ -1,5 +1,6 @@
33 /*
34 * Copyright © 2008 Mozilla Corporation
35+ * Copyright © 2010 Nokia Corporation
36 *
37 * Permission to use, copy, modify, distribute, and sell this software and its
38 * documentation for any purpose is hereby granted without fee, provided that
39@@ -328,3 +329,68 @@ pixman_asm_function pixman_composite_over_n_8_8888_asm_armv6
40 pop {r4, r5, r6, r7, r8, r9, r10, r11}
41 bx lr
42 .endfunc
43+
44+/*
45+ * Note: This function is actually primarily optimized for ARM Cortex-A8
46+ * pipeline. In order to get good performance on ARM9/ARM11 cores (which
47+ * don't have efficient write combining), it needs to be changed to use
48+ * 16-byte aligned writes using STM instruction.
49+ */
50+pixman_asm_function pixman_scaled_nearest_scanline_565_565_SRC_asm_armv6
51+ DST .req r0
52+ SRC .req r1
53+ W .req r2
54+ VX .req r3
55+ UNIT_X .req r12
56+ TMP1 .req r4
57+ TMP2 .req r5
58+ MASK .req r6
59+ ldr UNIT_X, [sp]
60+ push {r4, r5, r6, r7}
61+ mvn MASK, #1
62+
63+ /* define helper macro */
64+ .macro scale_2_pixels
65+ ldrh TMP1, [SRC, TMP1]
66+ and TMP2, MASK, VX, lsr #15
67+ add VX, VX, UNIT_X
68+ strh TMP1, [DST], #2
69+
70+ ldrh TMP2, [SRC, TMP2]
71+ and TMP1, MASK, VX, lsr #15
72+ add VX, VX, UNIT_X
73+ strh TMP2, [DST], #2
74+ .endm
75+
76+ /* now do the scaling */
77+ and TMP1, MASK, VX, lsr #15
78+ add VX, VX, UNIT_X
79+ subs W, #4
80+ blt 2f
81+1: /* main loop, process 4 pixels per iteration */
82+ scale_2_pixels
83+ scale_2_pixels
84+ subs W, W, #4
85+ bge 1b
86+2:
87+ tst W, #2
88+ beq 2f
89+ scale_2_pixels
90+2:
91+ tst W, #1
92+ ldrneh TMP1, [SRC, TMP1]
93+ strneh TMP1, [DST], #2
94+ /* cleanup helper macro */
95+ .purgem scale_2_pixels
96+ .unreq DST
97+ .unreq SRC
98+ .unreq W
99+ .unreq VX
100+ .unreq UNIT_X
101+ .unreq TMP1
102+ .unreq TMP2
103+ .unreq MASK
104+ /* return */
105+ pop {r4, r5, r6, r7}
106+ bx lr
107+.endfunc
108diff --git a/pixman/pixman-arm-simd.c b/pixman/pixman-arm-simd.c
109index d466a31..f6f464c 100644
110--- a/pixman/pixman-arm-simd.c
111+++ b/pixman/pixman-arm-simd.c
112@@ -29,6 +29,7 @@
113
114 #include "pixman-private.h"
115 #include "pixman-arm-common.h"
116+#include "pixman-fast-path.h"
117
118 #if 0 /* This code was moved to 'pixman-arm-simd-asm.S' */
119
120@@ -375,6 +376,35 @@ pixman_composite_over_n_8_8888_asm_armv6 (int32_t width,
121
122 #endif
123
124+void
125+pixman_scaled_nearest_scanline_565_565_SRC_asm_armv6 (uint16_t * dst,
126+ uint16_t * src,
127+ int32_t w,
128+ pixman_fixed_t vx,
129+ pixman_fixed_t unit_x);
130+
131+static force_inline void
132+scaled_nearest_scanline_armv6_565_565_SRC (uint16_t * dst,
133+ uint16_t * src,
134+ int32_t w,
135+ pixman_fixed_t vx,
136+ pixman_fixed_t unit_x,
137+ pixman_fixed_t max_vx)
138+{
139+ pixman_scaled_nearest_scanline_565_565_SRC_asm_armv6 (dst, src, w,
140+ vx, unit_x);
141+}
142+
143+FAST_NEAREST_MAINLOOP (armv6_565_565_cover_SRC,
144+ scaled_nearest_scanline_armv6_565_565_SRC,
145+ uint16_t, uint16_t, COVER);
146+FAST_NEAREST_MAINLOOP (armv6_565_565_none_SRC,
147+ scaled_nearest_scanline_armv6_565_565_SRC,
148+ uint16_t, uint16_t, NONE);
149+FAST_NEAREST_MAINLOOP (armv6_565_565_pad_SRC,
150+ scaled_nearest_scanline_armv6_565_565_SRC,
151+ uint16_t, uint16_t, PAD);
152+
153 PIXMAN_ARM_BIND_FAST_PATH_SRC_DST (armv6, add_8_8,
154 uint8_t, 1, uint8_t, 1)
155 PIXMAN_ARM_BIND_FAST_PATH_SRC_DST (armv6, over_8888_8888,
156@@ -404,6 +434,13 @@ static const pixman_fast_path_t arm_simd_fast_paths[] =
157 PIXMAN_STD_FAST_PATH (OVER, solid, a8, a8b8g8r8, armv6_composite_over_n_8_8888),
158 PIXMAN_STD_FAST_PATH (OVER, solid, a8, x8b8g8r8, armv6_composite_over_n_8_8888),
159
160+ SIMPLE_NEAREST_FAST_PATH_COVER (SRC, r5g6b5, r5g6b5, armv6_565_565),
161+ SIMPLE_NEAREST_FAST_PATH_COVER (SRC, b5g6r5, b5g6r5, armv6_565_565),
162+ SIMPLE_NEAREST_FAST_PATH_NONE (SRC, r5g6b5, r5g6b5, armv6_565_565),
163+ SIMPLE_NEAREST_FAST_PATH_NONE (SRC, b5g6r5, b5g6r5, armv6_565_565),
164+ SIMPLE_NEAREST_FAST_PATH_PAD (SRC, r5g6b5, r5g6b5, armv6_565_565),
165+ SIMPLE_NEAREST_FAST_PATH_PAD (SRC, b5g6r5, b5g6r5, armv6_565_565),
166+
167 { PIXMAN_OP_NONE },
168 };
169
170--
1711.6.6.1
172
diff --git a/meta-oe/recipes-graphics/xorg-lib/pixman-0.21.4/0017-add-_pixman_bits_override_accessors.patch b/meta-oe/recipes-graphics/xorg-lib/pixman-0.21.4/0017-add-_pixman_bits_override_accessors.patch
new file mode 100644
index 000000000..b7983b208
--- /dev/null
+++ b/meta-oe/recipes-graphics/xorg-lib/pixman-0.21.4/0017-add-_pixman_bits_override_accessors.patch
@@ -0,0 +1,75 @@
1From 6593d86679fde724e49efa96b16ca22d9521b288 Mon Sep 17 00:00:00 2001
2From: Siarhei Siamashka <siarhei.siamashka@nokia.com>
3Date: Thu, 10 Dec 2009 00:51:50 +0200
4Subject: [PATCH 17/24] add _pixman_bits_override_accessors
5
6* from patch ARM: HACK: added NEON optimizations for fetch/store r5g6b5 scanline
7* used in
8 0005-ARM-added-NEON-optimizations-for-fetch-store-r5g6b5-.patch
9 0006-ARM-added-NEON-optimizations-for-fetch-store-a8-scan.patch
10 0007-ARM-added-NEON-optimizations-for-fetching-x8r8g8b8-s.patch
11---
12 pixman/pixman-access.c | 23 ++++++++++++++++++++++-
13 pixman/pixman-private.h | 5 +++++
14 2 files changed, 27 insertions(+), 1 deletions(-)
15
16diff --git a/pixman/pixman-access.c b/pixman/pixman-access.c
17index f1ce0ba..b33da29 100644
18--- a/pixman/pixman-access.c
19+++ b/pixman/pixman-access.c
20@@ -2836,7 +2836,7 @@ typedef struct
21 store_scanline_ ## format, store_scanline_generic_64 \
22 }
23
24-static const format_info_t accessors[] =
25+static format_info_t accessors[] =
26 {
27 /* 32 bpp formats */
28 FORMAT_INFO (a8r8g8b8),
29@@ -2978,6 +2978,27 @@ _pixman_bits_image_setup_accessors (bits_image_t *image)
30 setup_accessors (image);
31 }
32
33+void
34+_pixman_bits_override_accessors (pixman_format_code_t format,
35+ fetch_scanline_t fetch_func,
36+ store_scanline_t store_func)
37+{
38+ format_info_t *info = accessors;
39+
40+ while (info->format != PIXMAN_null)
41+ {
42+ if (info->format == format)
43+ {
44+ if (fetch_func)
45+ info->fetch_scanline_32 = fetch_func;
46+ if (store_func)
47+ info->store_scanline_32 = store_func;
48+ return;
49+ }
50+ info++;
51+ }
52+}
53+
54 #else
55
56 void
57diff --git a/pixman/pixman-private.h b/pixman/pixman-private.h
58index 1662d2c..c0f9af4 100644
59--- a/pixman/pixman-private.h
60+++ b/pixman/pixman-private.h
61@@ -256,6 +256,11 @@ _pixman_conical_gradient_iter_init (pixman_image_t *image,
62 int x, int y, int width, int height,
63 uint8_t *buffer, iter_flags_t flags);
64
65+void
66+_pixman_bits_override_accessors (pixman_format_code_t format,
67+ fetch_scanline_t fetch_func,
68+ store_scanline_t store_func);
69+
70 pixman_image_t *
71 _pixman_image_allocate (void);
72
73--
741.7.4.rc2
75
diff --git a/meta-oe/recipes-graphics/xorg-lib/pixman-0.21.4/0018-Generic-C-implementation-of-pixman_blt-with-overlapp.patch b/meta-oe/recipes-graphics/xorg-lib/pixman-0.21.4/0018-Generic-C-implementation-of-pixman_blt-with-overlapp.patch
new file mode 100644
index 000000000..5b1c1089e
--- /dev/null
+++ b/meta-oe/recipes-graphics/xorg-lib/pixman-0.21.4/0018-Generic-C-implementation-of-pixman_blt-with-overlapp.patch
@@ -0,0 +1,114 @@
1From 8e8b2809b505486001dc213becab0d50bfd96c1b Mon Sep 17 00:00:00 2001
2From: Siarhei Siamashka <siarhei.siamashka@nokia.com>
3Date: Tue, 16 Mar 2010 16:55:28 +0100
4Subject: [PATCH 18/24] Generic C implementation of pixman_blt with overlapping support
5
6Uses memcpy/memmove functions to copy pixels, can handle the
7case when both source and destination areas are in the same
8image (this is useful for scrolling).
9
10It is assumed that copying direction is only important when
11using the same image for both source and destination (and
12src_stride == dst_stride). Copying direction is undefined
13for the images with different source and destination stride
14which happen to be in the overlapped areas (but this is an
15unrealistic case anyway).
16---
17 pixman/pixman-general.c | 21 ++++++++++++++++++---
18 pixman/pixman-private.h | 43 +++++++++++++++++++++++++++++++++++++++++++
19 2 files changed, 61 insertions(+), 3 deletions(-)
20
21diff --git a/pixman/pixman-general.c b/pixman/pixman-general.c
22index 4d234a0..c4d2c14 100644
23--- a/pixman/pixman-general.c
24+++ b/pixman/pixman-general.c
25@@ -280,9 +280,24 @@ general_blt (pixman_implementation_t *imp,
26 int width,
27 int height)
28 {
29- /* We can't blit unless we have sse2 or mmx */
30-
31- return FALSE;
32+ uint8_t *dst_bytes = (uint8_t *)dst_bits;
33+ uint8_t *src_bytes = (uint8_t *)src_bits;
34+ int bpp;
35+
36+ if (src_bpp != dst_bpp || src_bpp & 7)
37+ return FALSE;
38+
39+ bpp = src_bpp >> 3;
40+ width *= bpp;
41+ src_stride *= 4;
42+ dst_stride *= 4;
43+ pixman_blt_helper (src_bytes + src_y * src_stride + src_x * bpp,
44+ dst_bytes + dst_y * dst_stride + dst_x * bpp,
45+ src_stride,
46+ dst_stride,
47+ width,
48+ height);
49+ return TRUE;
50 }
51
52 static pixman_bool_t
53diff --git a/pixman/pixman-private.h b/pixman/pixman-private.h
54index 969dfab..352bceb 100644
55--- a/pixman/pixman-private.h
56+++ b/pixman/pixman-private.h
57@@ -10,6 +10,7 @@
58
59 #include "pixman.h"
60 #include <time.h>
61+#include <string.h>
62 #include <assert.h>
63 #include <stdio.h>
64 #include <string.h>
65@@ -869,4 +870,46 @@ void pixman_timer_register (pixman_timer_t *timer);
66
67 #endif /* PIXMAN_TIMERS */
68
69+/* a helper function, can blit 8-bit images with src/dst overlapping support */
70+static inline void
71+pixman_blt_helper (uint8_t *src_bytes,
72+ uint8_t *dst_bytes,
73+ int src_stride,
74+ int dst_stride,
75+ int width,
76+ int height)
77+{
78+ /*
79+ * The second part of this check is not strictly needed, but it prevents
80+ * unnecessary upside-down processing of areas which belong to different
81+ * images. Upside-down processing can be slower with fixed-distance-ahead
82+ * prefetch and perceived as having more tearing.
83+ */
84+ if (src_bytes < dst_bytes + width &&
85+ src_bytes + src_stride * height > dst_bytes)
86+ {
87+ src_bytes += src_stride * height - src_stride;
88+ dst_bytes += dst_stride * height - dst_stride;
89+ dst_stride = -dst_stride;
90+ src_stride = -src_stride;
91+ /* Horizontal scrolling to the left needs memmove */
92+ if (src_bytes + width > dst_bytes)
93+ {
94+ while (--height >= 0)
95+ {
96+ memmove (dst_bytes, src_bytes, width);
97+ dst_bytes += dst_stride;
98+ src_bytes += src_stride;
99+ }
100+ return;
101+ }
102+ }
103+ while (--height >= 0)
104+ {
105+ memcpy (dst_bytes, src_bytes, width);
106+ dst_bytes += dst_stride;
107+ src_bytes += src_stride;
108+ }
109+}
110+
111 #endif /* PIXMAN_PRIVATE_H */
112--
1131.6.6.1
114
diff --git a/meta-oe/recipes-graphics/xorg-lib/pixman-0.21.4/0019-Support-of-overlapping-src-dst-for-pixman_blt_mmx.patch b/meta-oe/recipes-graphics/xorg-lib/pixman-0.21.4/0019-Support-of-overlapping-src-dst-for-pixman_blt_mmx.patch
new file mode 100644
index 000000000..5193d38f7
--- /dev/null
+++ b/meta-oe/recipes-graphics/xorg-lib/pixman-0.21.4/0019-Support-of-overlapping-src-dst-for-pixman_blt_mmx.patch
@@ -0,0 +1,91 @@
1From f5a54f7d5eb1169bc79f0e445e2998e98080ef13 Mon Sep 17 00:00:00 2001
2From: Siarhei Siamashka <siarhei.siamashka@nokia.com>
3Date: Thu, 22 Oct 2009 05:45:47 +0300
4Subject: [PATCH 19/24] Support of overlapping src/dst for pixman_blt_mmx
5
6---
7 pixman/pixman-mmx.c | 55 +++++++++++++++++++++++++++++---------------------
8 1 files changed, 32 insertions(+), 23 deletions(-)
9
10diff --git a/pixman/pixman-mmx.c b/pixman/pixman-mmx.c
11index 34637a4..f9dd473 100644
12--- a/pixman/pixman-mmx.c
13+++ b/pixman/pixman-mmx.c
14@@ -2996,34 +2996,43 @@ pixman_blt_mmx (uint32_t *src_bits,
15 {
16 uint8_t * src_bytes;
17 uint8_t * dst_bytes;
18- int byte_width;
19+ int bpp;
20
21- if (src_bpp != dst_bpp)
22+ if (src_bpp != dst_bpp || src_bpp & 7)
23 return FALSE;
24
25- if (src_bpp == 16)
26- {
27- src_stride = src_stride * (int) sizeof (uint32_t) / 2;
28- dst_stride = dst_stride * (int) sizeof (uint32_t) / 2;
29- src_bytes = (uint8_t *)(((uint16_t *)src_bits) + src_stride * (src_y) + (src_x));
30- dst_bytes = (uint8_t *)(((uint16_t *)dst_bits) + dst_stride * (dst_y) + (dst_x));
31- byte_width = 2 * width;
32- src_stride *= 2;
33- dst_stride *= 2;
34- }
35- else if (src_bpp == 32)
36+ bpp = src_bpp >> 3;
37+ width *= bpp;
38+ src_stride *= 4;
39+ dst_stride *= 4;
40+ src_bytes = (uint8_t *)src_bits + src_y * src_stride + src_x * bpp;
41+ dst_bytes = (uint8_t *)dst_bits + dst_y * dst_stride + dst_x * bpp;
42+
43+ if (src_bpp != 16 && src_bpp != 32)
44 {
45- src_stride = src_stride * (int) sizeof (uint32_t) / 4;
46- dst_stride = dst_stride * (int) sizeof (uint32_t) / 4;
47- src_bytes = (uint8_t *)(((uint32_t *)src_bits) + src_stride * (src_y) + (src_x));
48- dst_bytes = (uint8_t *)(((uint32_t *)dst_bits) + dst_stride * (dst_y) + (dst_x));
49- byte_width = 4 * width;
50- src_stride *= 4;
51- dst_stride *= 4;
52+ pixman_blt_helper (src_bytes, dst_bytes, src_stride, dst_stride,
53+ width, height);
54+ return TRUE;
55 }
56- else
57+
58+ if (src_bytes < dst_bytes && src_bytes + src_stride * height > dst_bytes)
59 {
60- return FALSE;
61+ src_bytes += src_stride * height - src_stride;
62+ dst_bytes += dst_stride * height - dst_stride;
63+ dst_stride = -dst_stride;
64+ src_stride = -src_stride;
65+
66+ if (src_bytes + width > dst_bytes)
67+ {
68+ /* TODO: reverse scanline copy using MMX */
69+ while (--height >= 0)
70+ {
71+ memmove (dst_bytes, src_bytes, width);
72+ dst_bytes += dst_stride;
73+ src_bytes += src_stride;
74+ }
75+ return TRUE;
76+ }
77 }
78
79 while (height--)
80@@ -3033,7 +3042,7 @@ pixman_blt_mmx (uint32_t *src_bits,
81 uint8_t *d = dst_bytes;
82 src_bytes += src_stride;
83 dst_bytes += dst_stride;
84- w = byte_width;
85+ w = width;
86
87 while (w >= 2 && ((unsigned long)d & 3))
88 {
89--
901.6.6.1
91
diff --git a/meta-oe/recipes-graphics/xorg-lib/pixman-0.21.4/0020-Support-of-overlapping-src-dst-for-pixman_blt_sse2.patch b/meta-oe/recipes-graphics/xorg-lib/pixman-0.21.4/0020-Support-of-overlapping-src-dst-for-pixman_blt_sse2.patch
new file mode 100644
index 000000000..f5c0e12f2
--- /dev/null
+++ b/meta-oe/recipes-graphics/xorg-lib/pixman-0.21.4/0020-Support-of-overlapping-src-dst-for-pixman_blt_sse2.patch
@@ -0,0 +1,91 @@
1From c8755294fa9ea396f7113370230b17c424a93be1 Mon Sep 17 00:00:00 2001
2From: Siarhei Siamashka <siarhei.siamashka@nokia.com>
3Date: Thu, 22 Oct 2009 05:45:54 +0300
4Subject: [PATCH 20/24] Support of overlapping src/dst for pixman_blt_sse2
5
6---
7 pixman/pixman-sse2.c | 55 +++++++++++++++++++++++++++++--------------------
8 1 files changed, 32 insertions(+), 23 deletions(-)
9
10diff --git a/pixman/pixman-sse2.c b/pixman/pixman-sse2.c
11index 5907de0..25015ae 100644
12--- a/pixman/pixman-sse2.c
13+++ b/pixman/pixman-sse2.c
14@@ -5027,34 +5027,43 @@ pixman_blt_sse2 (uint32_t *src_bits,
15 {
16 uint8_t * src_bytes;
17 uint8_t * dst_bytes;
18- int byte_width;
19+ int bpp;
20
21- if (src_bpp != dst_bpp)
22+ if (src_bpp != dst_bpp || src_bpp & 7)
23 return FALSE;
24
25- if (src_bpp == 16)
26- {
27- src_stride = src_stride * (int) sizeof (uint32_t) / 2;
28- dst_stride = dst_stride * (int) sizeof (uint32_t) / 2;
29- src_bytes =(uint8_t *)(((uint16_t *)src_bits) + src_stride * (src_y) + (src_x));
30- dst_bytes = (uint8_t *)(((uint16_t *)dst_bits) + dst_stride * (dst_y) + (dst_x));
31- byte_width = 2 * width;
32- src_stride *= 2;
33- dst_stride *= 2;
34- }
35- else if (src_bpp == 32)
36+ bpp = src_bpp >> 3;
37+ width *= bpp;
38+ src_stride *= 4;
39+ dst_stride *= 4;
40+ src_bytes = (uint8_t *)src_bits + src_y * src_stride + src_x * bpp;
41+ dst_bytes = (uint8_t *)dst_bits + dst_y * dst_stride + dst_x * bpp;
42+
43+ if (src_bpp != 16 && src_bpp != 32)
44 {
45- src_stride = src_stride * (int) sizeof (uint32_t) / 4;
46- dst_stride = dst_stride * (int) sizeof (uint32_t) / 4;
47- src_bytes = (uint8_t *)(((uint32_t *)src_bits) + src_stride * (src_y) + (src_x));
48- dst_bytes = (uint8_t *)(((uint32_t *)dst_bits) + dst_stride * (dst_y) + (dst_x));
49- byte_width = 4 * width;
50- src_stride *= 4;
51- dst_stride *= 4;
52+ pixman_blt_helper (src_bytes, dst_bytes, src_stride, dst_stride,
53+ width, height);
54+ return TRUE;
55 }
56- else
57+
58+ if (src_bytes < dst_bytes && src_bytes + src_stride * height > dst_bytes)
59 {
60- return FALSE;
61+ src_bytes += src_stride * height - src_stride;
62+ dst_bytes += dst_stride * height - dst_stride;
63+ dst_stride = -dst_stride;
64+ src_stride = -src_stride;
65+
66+ if (src_bytes + width > dst_bytes)
67+ {
68+ /* TODO: reverse scanline copy using SSE2 */
69+ while (--height >= 0)
70+ {
71+ memmove (dst_bytes, src_bytes, width);
72+ dst_bytes += dst_stride;
73+ src_bytes += src_stride;
74+ }
75+ return TRUE;
76+ }
77 }
78
79 while (height--)
80@@ -5064,7 +5073,7 @@ pixman_blt_sse2 (uint32_t *src_bits,
81 uint8_t *d = dst_bytes;
82 src_bytes += src_stride;
83 dst_bytes += dst_stride;
84- w = byte_width;
85+ w = width;
86
87 while (w >= 2 && ((unsigned long)d & 3))
88 {
89--
901.6.6.1
91
diff --git a/meta-oe/recipes-graphics/xorg-lib/pixman-0.21.4/0021-Support-of-overlapping-src-dst-for-pixman_blt_neon.patch b/meta-oe/recipes-graphics/xorg-lib/pixman-0.21.4/0021-Support-of-overlapping-src-dst-for-pixman_blt_neon.patch
new file mode 100644
index 000000000..0eb9d88eb
--- /dev/null
+++ b/meta-oe/recipes-graphics/xorg-lib/pixman-0.21.4/0021-Support-of-overlapping-src-dst-for-pixman_blt_neon.patch
@@ -0,0 +1,94 @@
1From 86c8198598ef6d639e656c04644015795cc249aa Mon Sep 17 00:00:00 2001
2From: Siarhei Siamashka <siarhei.siamashka@nokia.com>
3Date: Wed, 18 Nov 2009 06:08:48 +0200
4Subject: [PATCH 21/24] Support of overlapping src/dst for pixman_blt_neon
5
6---
7 pixman/pixman-arm-neon.c | 62 +++++++++++++++++++++++++++++++++++++--------
8 1 files changed, 51 insertions(+), 11 deletions(-)
9
10diff --git a/pixman/pixman-arm-neon.c b/pixman/pixman-arm-neon.c
11index e3eca2b..74316a8 100644
12--- a/pixman/pixman-arm-neon.c
13+++ b/pixman/pixman-arm-neon.c
14@@ -199,26 +199,66 @@ pixman_blt_neon (uint32_t *src_bits,
15 int width,
16 int height)
17 {
18- if (src_bpp != dst_bpp)
19+ uint8_t * src_bytes;
20+ uint8_t * dst_bytes;
21+ int bpp;
22+
23+ if (src_bpp != dst_bpp || src_bpp & 7)
24 return FALSE;
25
26+ bpp = src_bpp >> 3;
27+ width *= bpp;
28+ src_stride *= 4;
29+ dst_stride *= 4;
30+ src_bytes = (uint8_t *)src_bits + src_y * src_stride + src_x * bpp;
31+ dst_bytes = (uint8_t *)dst_bits + dst_y * dst_stride + dst_x * bpp;
32+
33+ if (src_bpp != 16 && src_bpp != 32)
34+ {
35+ pixman_blt_helper (src_bytes, dst_bytes, src_stride, dst_stride,
36+ width, height);
37+ return TRUE;
38+ }
39+
40+ if (src_bytes < dst_bytes && src_bytes + src_stride * height > dst_bytes)
41+ {
42+ src_bytes += src_stride * height - src_stride;
43+ dst_bytes += dst_stride * height - dst_stride;
44+ dst_stride = -dst_stride;
45+ src_stride = -src_stride;
46+
47+ if (src_bytes + width > dst_bytes)
48+ {
49+ /* TODO: reverse scanline copy using NEON */
50+ while (--height >= 0)
51+ {
52+ memmove (dst_bytes, src_bytes, width);
53+ dst_bytes += dst_stride;
54+ src_bytes += src_stride;
55+ }
56+ return TRUE;
57+ }
58+ }
59+
60 switch (src_bpp)
61 {
62 case 16:
63 pixman_composite_src_0565_0565_asm_neon (
64- width, height,
65- (uint16_t *)(((char *) dst_bits) +
66- dst_y * dst_stride * 4 + dst_x * 2), dst_stride * 2,
67- (uint16_t *)(((char *) src_bits) +
68- src_y * src_stride * 4 + src_x * 2), src_stride * 2);
69+ width >> 1,
70+ height,
71+ (uint16_t *) dst_bytes,
72+ dst_stride >> 1,
73+ (uint16_t *) src_bytes,
74+ src_stride >> 1);
75 return TRUE;
76 case 32:
77 pixman_composite_src_8888_8888_asm_neon (
78- width, height,
79- (uint32_t *)(((char *) dst_bits) +
80- dst_y * dst_stride * 4 + dst_x * 4), dst_stride,
81- (uint32_t *)(((char *) src_bits) +
82- src_y * src_stride * 4 + src_x * 4), src_stride);
83+ width >> 2,
84+ height,
85+ (uint32_t *) dst_bytes,
86+ dst_stride >> 2,
87+ (uint32_t *) src_bytes,
88+ src_stride >> 2);
89 return TRUE;
90 default:
91 return FALSE;
92--
931.6.6.1
94
diff --git a/meta-oe/recipes-graphics/xorg-lib/pixman-0.21.4/0022-ARM-added-NEON-optimizations-for-fetch-store-r5g6b5-.patch b/meta-oe/recipes-graphics/xorg-lib/pixman-0.21.4/0022-ARM-added-NEON-optimizations-for-fetch-store-r5g6b5-.patch
new file mode 100644
index 000000000..129c1f1bb
--- /dev/null
+++ b/meta-oe/recipes-graphics/xorg-lib/pixman-0.21.4/0022-ARM-added-NEON-optimizations-for-fetch-store-r5g6b5-.patch
@@ -0,0 +1,109 @@
1From 60d972afbae8613d700d3a6b3cb107429d7e11c6 Mon Sep 17 00:00:00 2001
2From: Siarhei Siamashka <siarhei.siamashka@nokia.com>
3Date: Thu, 10 Dec 2009 00:51:50 +0200
4Subject: [PATCH 22/24] ARM: added NEON optimizations for fetch/store r5g6b5 scanline
5
6---
7 pixman/pixman-arm-neon-asm.S | 20 ++++++++++++++++++++
8 pixman/pixman-arm-neon.c | 40 ++++++++++++++++++++++++++++++++++++++++
9 2 files changed, 60 insertions(+), 0 deletions(-)
10
11diff --git a/pixman/pixman-arm-neon-asm.S b/pixman/pixman-arm-neon-asm.S
12index cf014fa..25f7bf0 100644
13--- a/pixman/pixman-arm-neon-asm.S
14+++ b/pixman/pixman-arm-neon-asm.S
15@@ -459,6 +459,16 @@ generate_composite_function \
16 pixman_composite_src_8888_0565_process_pixblock_tail, \
17 pixman_composite_src_8888_0565_process_pixblock_tail_head
18
19+generate_composite_function_single_scanline \
20+ pixman_store_scanline_r5g6b5_asm_neon, 32, 0, 16, \
21+ FLAG_DST_WRITEONLY | FLAG_DEINTERLEAVE_32BPP, \
22+ 8, /* number of pixels, processed in a single block */ \
23+ default_init, \
24+ default_cleanup, \
25+ pixman_composite_src_8888_0565_process_pixblock_head, \
26+ pixman_composite_src_8888_0565_process_pixblock_tail, \
27+ pixman_composite_src_8888_0565_process_pixblock_tail_head
28+
29 /******************************************************************************/
30
31 .macro pixman_composite_src_0565_8888_process_pixblock_head
32@@ -494,6 +504,16 @@ generate_composite_function \
33 pixman_composite_src_0565_8888_process_pixblock_tail, \
34 pixman_composite_src_0565_8888_process_pixblock_tail_head
35
36+generate_composite_function_single_scanline \
37+ pixman_fetch_scanline_r5g6b5_asm_neon, 16, 0, 32, \
38+ FLAG_DST_WRITEONLY | FLAG_DEINTERLEAVE_32BPP, \
39+ 8, /* number of pixels, processed in a single block */ \
40+ default_init, \
41+ default_cleanup, \
42+ pixman_composite_src_0565_8888_process_pixblock_head, \
43+ pixman_composite_src_0565_8888_process_pixblock_tail, \
44+ pixman_composite_src_0565_8888_process_pixblock_tail_head
45+
46 /******************************************************************************/
47
48 .macro pixman_composite_add_8_8_process_pixblock_head
49diff --git a/pixman/pixman-arm-neon.c b/pixman/pixman-arm-neon.c
50index 74316a8..f773e92 100644
51--- a/pixman/pixman-arm-neon.c
52+++ b/pixman/pixman-arm-neon.c
53@@ -448,6 +448,42 @@ BIND_COMBINE_U (over)
54 BIND_COMBINE_U (add)
55 BIND_COMBINE_U (out_reverse)
56
57+void
58+pixman_fetch_scanline_r5g6b5_asm_neon (int width,
59+ uint32_t *buffer,
60+ const uint16_t *pixel);
61+void
62+pixman_store_scanline_r5g6b5_asm_neon (int width,
63+ uint16_t *pixel,
64+ const uint32_t *values);
65+
66+static void
67+neon_fetch_scanline_r5g6b5 (pixman_image_t *image,
68+ int x,
69+ int y,
70+ int width,
71+ uint32_t * buffer,
72+ const uint32_t *mask)
73+{
74+ const uint32_t *bits = image->bits.bits + y * image->bits.rowstride;
75+ const uint16_t *pixel = (const uint16_t *)bits + x;
76+
77+ pixman_fetch_scanline_r5g6b5_asm_neon (width, buffer, pixel);
78+}
79+
80+static void
81+neon_store_scanline_r5g6b5 (bits_image_t * image,
82+ int x,
83+ int y,
84+ int width,
85+ const uint32_t *values)
86+{
87+ uint32_t *bits = image->bits + image->rowstride * y;
88+ uint16_t *pixel = ((uint16_t *) bits) + x;
89+
90+ pixman_store_scanline_r5g6b5_asm_neon (width, pixel, values);
91+}
92+
93 pixman_implementation_t *
94 _pixman_implementation_create_arm_neon (void)
95 {
96@@ -463,6 +499,10 @@ _pixman_implementation_create_arm_neon (void)
97 imp->combine_32[PIXMAN_OP_ADD] = neon_combine_add_u;
98 imp->combine_32[PIXMAN_OP_OUT_REVERSE] = neon_combine_out_reverse_u;
99
100+ _pixman_bits_override_accessors (PIXMAN_r5g6b5,
101+ neon_fetch_scanline_r5g6b5,
102+ neon_store_scanline_r5g6b5);
103+
104 imp->blt = arm_neon_blt;
105 imp->fill = arm_neon_fill;
106
107--
1081.6.6.1
109
diff --git a/meta-oe/recipes-graphics/xorg-lib/pixman-0.21.4/0023-ARM-added-NEON-optimizations-for-fetch-store-a8-scan.patch b/meta-oe/recipes-graphics/xorg-lib/pixman-0.21.4/0023-ARM-added-NEON-optimizations-for-fetch-store-a8-scan.patch
new file mode 100644
index 000000000..7724f5433
--- /dev/null
+++ b/meta-oe/recipes-graphics/xorg-lib/pixman-0.21.4/0023-ARM-added-NEON-optimizations-for-fetch-store-a8-scan.patch
@@ -0,0 +1,148 @@
1From cc99d8d6fcbabd7f9f3ed99e65c78a2fb71792fa Mon Sep 17 00:00:00 2001
2From: Siarhei Siamashka <siarhei.siamashka@nokia.com>
3Date: Thu, 23 Sep 2010 21:10:56 +0300
4Subject: [PATCH 23/24] ARM: added NEON optimizations for fetch/store a8 scanline
5
6---
7 pixman/pixman-arm-neon-asm.S | 64 ++++++++++++++++++++++++++++++++++++++++++
8 pixman/pixman-arm-neon.c | 42 +++++++++++++++++++++++++++
9 2 files changed, 106 insertions(+), 0 deletions(-)
10
11diff --git a/pixman/pixman-arm-neon-asm.S b/pixman/pixman-arm-neon-asm.S
12index 25f7bf0..439b06b 100644
13--- a/pixman/pixman-arm-neon-asm.S
14+++ b/pixman/pixman-arm-neon-asm.S
15@@ -418,6 +418,70 @@ generate_composite_function \
16
17 /******************************************************************************/
18
19+.macro pixman_composite_src_8_8888_process_pixblock_head
20+ /* This is tricky part: we can't set these values just once in 'init' macro
21+ * because leading/trailing pixels handling part uses VZIP.8 instructions,
22+ * and they operate on values in-place and destroy original registers
23+ * content. Think about it like VST4.8 instruction corrupting NEON
24+ * registers after write in 'tail_head' macro. Except that 'tail_head'
25+ * macro itself actually does not need these extra VMOVs because it uses
26+ * real VST4.8 instruction.
27+ */
28+ vmov.u8 q0, #0
29+ vmov.u8 d2, #0
30+.endm
31+
32+.macro pixman_composite_src_8_8888_process_pixblock_tail
33+.endm
34+
35+.macro pixman_composite_src_8_8888_process_pixblock_tail_head
36+ vst4.8 {d0, d1, d2, d3}, [DST_W, :128]!
37+ vld1.8 {d3}, [SRC]!
38+.endm
39+
40+generate_composite_function_single_scanline \
41+ pixman_fetch_scanline_a8_asm_neon, 8, 0, 32, \
42+ FLAG_DST_WRITEONLY | FLAG_DEINTERLEAVE_32BPP, \
43+ 8, /* number of pixels, processed in a single block */ \
44+ default_init, \
45+ default_cleanup, \
46+ pixman_composite_src_8_8888_process_pixblock_head, \
47+ pixman_composite_src_8_8888_process_pixblock_tail, \
48+ pixman_composite_src_8_8888_process_pixblock_tail_head, \
49+ 0, /* dst_w_basereg */ \
50+ 0, /* dst_r_basereg */ \
51+ 3, /* src_basereg */ \
52+ 0 /* mask_basereg */
53+
54+/******************************************************************************/
55+
56+.macro pixman_composite_src_8888_8_process_pixblock_head
57+.endm
58+
59+.macro pixman_composite_src_8888_8_process_pixblock_tail
60+.endm
61+
62+.macro pixman_composite_src_8888_8_process_pixblock_tail_head
63+ vst1.8 {d3}, [DST_W, :64]!
64+ vld4.8 {d0, d1, d2, d3}, [SRC]!
65+.endm
66+
67+generate_composite_function_single_scanline \
68+ pixman_store_scanline_a8_asm_neon, 32, 0, 8, \
69+ FLAG_DST_WRITEONLY | FLAG_DEINTERLEAVE_32BPP, \
70+ 8, /* number of pixels, processed in a single block */ \
71+ default_init, \
72+ default_cleanup, \
73+ pixman_composite_src_8888_8_process_pixblock_head, \
74+ pixman_composite_src_8888_8_process_pixblock_tail, \
75+ pixman_composite_src_8888_8_process_pixblock_tail_head, \
76+ 3, /* dst_w_basereg */ \
77+ 0, /* dst_r_basereg */ \
78+ 0, /* src_basereg */ \
79+ 0 /* mask_basereg */
80+
81+/******************************************************************************/
82+
83 .macro pixman_composite_src_8888_0565_process_pixblock_head
84 vshll.u8 q8, d1, #8
85 vshll.u8 q14, d2, #8
86diff --git a/pixman/pixman-arm-neon.c b/pixman/pixman-arm-neon.c
87index f773e92..55219b3 100644
88--- a/pixman/pixman-arm-neon.c
89+++ b/pixman/pixman-arm-neon.c
90@@ -484,6 +484,45 @@ neon_store_scanline_r5g6b5 (bits_image_t * image,
91 pixman_store_scanline_r5g6b5_asm_neon (width, pixel, values);
92 }
93
94+void
95+pixman_fetch_scanline_a8_asm_neon (int width,
96+ uint32_t *buffer,
97+ const uint8_t *pixel);
98+
99+
100+void
101+pixman_store_scanline_a8_asm_neon (int width,
102+ uint8_t *pixel,
103+ const uint32_t *values);
104+
105+static void
106+neon_fetch_scanline_a8 (pixman_image_t *image,
107+ int x,
108+ int y,
109+ int width,
110+ uint32_t * buffer,
111+ const uint32_t *mask)
112+{
113+ const uint32_t *bits = image->bits.bits + y * image->bits.rowstride;
114+ const uint8_t *pixel = (const uint8_t *) bits + x;
115+
116+ pixman_fetch_scanline_a8_asm_neon (width, buffer, pixel);
117+}
118+
119+static void
120+neon_store_scanline_a8 (bits_image_t * image,
121+ int x,
122+ int y,
123+ int width,
124+ const uint32_t *values)
125+{
126+ uint32_t *bits = image->bits + image->rowstride * y;
127+ uint8_t *pixel = (uint8_t *) bits + x;
128+
129+ pixman_store_scanline_a8_asm_neon (width, pixel, values);
130+}
131+
132+
133 pixman_implementation_t *
134 _pixman_implementation_create_arm_neon (void)
135 {
136@@ -502,6 +541,9 @@ _pixman_implementation_create_arm_neon (void)
137 _pixman_bits_override_accessors (PIXMAN_r5g6b5,
138 neon_fetch_scanline_r5g6b5,
139 neon_store_scanline_r5g6b5);
140+ _pixman_bits_override_accessors (PIXMAN_a8,
141+ neon_fetch_scanline_a8,
142+ neon_store_scanline_a8);
143
144 imp->blt = arm_neon_blt;
145 imp->fill = arm_neon_fill;
146--
1471.6.6.1
148
diff --git a/meta-oe/recipes-graphics/xorg-lib/pixman-0.21.4/0024-ARM-added-NEON-optimizations-for-fetching-x8r8g8b8-s.patch b/meta-oe/recipes-graphics/xorg-lib/pixman-0.21.4/0024-ARM-added-NEON-optimizations-for-fetching-x8r8g8b8-s.patch
new file mode 100644
index 000000000..8253f41b8
--- /dev/null
+++ b/meta-oe/recipes-graphics/xorg-lib/pixman-0.21.4/0024-ARM-added-NEON-optimizations-for-fetching-x8r8g8b8-s.patch
@@ -0,0 +1,77 @@
1From cf3b8fdc53144ff62c4054996559d3a1a4d62b75 Mon Sep 17 00:00:00 2001
2From: Siarhei Siamashka <siarhei.siamashka@nokia.com>
3Date: Fri, 24 Sep 2010 18:22:44 +0300
4Subject: [PATCH 24/24] ARM: added NEON optimizations for fetching x8r8g8b8 scanline
5
6---
7 pixman/pixman-arm-neon-asm.S | 14 ++++++++++++++
8 pixman/pixman-arm-neon.c | 21 +++++++++++++++++++++
9 2 files changed, 35 insertions(+), 0 deletions(-)
10
11diff --git a/pixman/pixman-arm-neon-asm.S b/pixman/pixman-arm-neon-asm.S
12index 439b06b..3e0dcfe 100644
13--- a/pixman/pixman-arm-neon-asm.S
14+++ b/pixman/pixman-arm-neon-asm.S
15@@ -1257,6 +1257,20 @@ generate_composite_function \
16 0, /* src_basereg */ \
17 0 /* mask_basereg */
18
19+generate_composite_function_single_scanline \
20+ pixman_fetch_scanline_x888_asm_neon, 32, 0, 32, \
21+ FLAG_DST_WRITEONLY, \
22+ 8, /* number of pixels, processed in a single block */ \
23+ pixman_composite_src_x888_8888_init, \
24+ default_cleanup, \
25+ pixman_composite_src_x888_8888_process_pixblock_head, \
26+ pixman_composite_src_x888_8888_process_pixblock_tail, \
27+ pixman_composite_src_x888_8888_process_pixblock_tail_head, \
28+ 0, /* dst_w_basereg */ \
29+ 0, /* dst_r_basereg */ \
30+ 0, /* src_basereg */ \
31+ 0 /* mask_basereg */
32+
33 /******************************************************************************/
34
35 .macro pixman_composite_over_n_8_8888_process_pixblock_head
36diff --git a/pixman/pixman-arm-neon.c b/pixman/pixman-arm-neon.c
37index 55219b3..8cef414 100644
38--- a/pixman/pixman-arm-neon.c
39+++ b/pixman/pixman-arm-neon.c
40@@ -522,6 +522,24 @@ neon_store_scanline_a8 (bits_image_t * image,
41 pixman_store_scanline_a8_asm_neon (width, pixel, values);
42 }
43
44+void
45+pixman_fetch_scanline_x888_asm_neon (int width,
46+ uint32_t *buffer,
47+ const uint32_t *pixel);
48+
49+static void
50+neon_fetch_scanline_x888 (pixman_image_t *image,
51+ int x,
52+ int y,
53+ int width,
54+ uint32_t * buffer,
55+ const uint32_t *mask)
56+{
57+ const uint32_t *bits = image->bits.bits + y * image->bits.rowstride;
58+ const uint32_t *pixel = (const uint32_t *) bits + x;
59+
60+ pixman_fetch_scanline_x888_asm_neon (width, buffer, pixel);
61+}
62
63 pixman_implementation_t *
64 _pixman_implementation_create_arm_neon (void)
65@@ -544,6 +562,9 @@ _pixman_implementation_create_arm_neon (void)
66 _pixman_bits_override_accessors (PIXMAN_a8,
67 neon_fetch_scanline_a8,
68 neon_store_scanline_a8);
69+ _pixman_bits_override_accessors (PIXMAN_x8r8g8b8,
70+ neon_fetch_scanline_x888,
71+ NULL);
72
73 imp->blt = arm_neon_blt;
74 imp->fill = arm_neon_fill;
75--
761.6.6.1
77
diff --git a/meta-oe/recipes-graphics/xorg-lib/pixman.inc b/meta-oe/recipes-graphics/xorg-lib/pixman.inc
new file mode 100644
index 000000000..539a33a88
--- /dev/null
+++ b/meta-oe/recipes-graphics/xorg-lib/pixman.inc
@@ -0,0 +1,14 @@
1SECTION = "libs"
2PRIORITY = "optional"
3DESCRIPTION = "Low-level pixel manipulation library."
4LICENSE = "X11"
5
6DEPENDS = "perl-native"
7
8BBCLASSEXTEND = "native"
9
10SRC_URI = "http://cairographics.org/releases/${BPN}-${PV}.tar.gz;name=archive "
11
12INC_PR = "r5"
13
14inherit autotools pkgconfig
diff --git a/meta-oe/recipes-graphics/xorg-lib/pixman_0.20.0.bb b/meta-oe/recipes-graphics/xorg-lib/pixman_0.20.0.bb
new file mode 100644
index 000000000..b3fbd4f15
--- /dev/null
+++ b/meta-oe/recipes-graphics/xorg-lib/pixman_0.20.0.bb
@@ -0,0 +1,23 @@
1require pixman.inc
2
3SRC_URI[archive.md5sum] = "c1a31d5cedfa97c5af7148a2d1fd4356"
4SRC_URI[archive.sha256sum] = "9c02c22c6cc3f28f3633d02ef6f0cac130518f621edb011ebbbf08cd1a81251a"
5
6PR = "${INC_PR}.0"
7
8SRC_URI += "\
9 file://0000-Add-pixman_bits_override_accessors.patch \
10 file://0001-Generic-C-implementation-of-pixman_blt-with-overlapp.patch \
11 file://0002-Support-of-overlapping-src-dst-for-pixman_blt_mmx.patch \
12 file://0003-Support-of-overlapping-src-dst-for-pixman_blt_sse2.patch \
13 file://0004-Support-of-overlapping-src-dst-for-pixman_blt_neon.patch \
14 file://0005-ARM-added-NEON-optimizations-for-fetch-store-r5g6b5-.patch \
15 file://0006-ARM-added-NEON-optimizations-for-fetch-store-a8-scan.patch \
16 file://0007-ARM-added-NEON-optimizations-for-fetching-x8r8g8b8-s.patch \
17 file://0008-ARM-optimization-for-scaled-src_0565_0565-operation-.patch \
18"
19
20NEON = " --disable-arm-neon "
21NEON_armv7a = " "
22
23EXTRA_OECONF = "${NEON} --disable-gtk"
diff --git a/meta-oe/recipes-graphics/xorg-lib/pixman_0.21.4.bb b/meta-oe/recipes-graphics/xorg-lib/pixman_0.21.4.bb
new file mode 100644
index 000000000..f0e9e388b
--- /dev/null
+++ b/meta-oe/recipes-graphics/xorg-lib/pixman_0.21.4.bb
@@ -0,0 +1,28 @@
1require pixman.inc
2
3SRC_URI[archive.md5sum] = "e50975ace979cd416a505827c15191b4"
4SRC_URI[archive.sha256sum] = "57783330ee2f96121dc267b7f25b98356fd09fe9de185cd39e72e906b6444013"
5
6LICENSE = "MIT & MIT-style & Public Domain"
7LIC_FILES_CHKSUM = "file://COPYING;md5=14096c769ae0cbb5fcb94ec468be11b3\
8 file://pixman/pixman-matrix.c;endline=25;md5=ba6e8769bfaaee2c41698755af04c4be \
9 file://pixman/pixman-arm-neon-asm.h;endline=24;md5=9a9cc1e51abbf1da58f4d9528ec9d49b \
10 file://pixman/pixman-x64-mmx-emulation.h;beginline=4;endline=9;md5=4e32716f2efaa6c4659222667c339bb8"
11
12PR = "${INC_PR}.0"
13
14SRC_URI += "\
15 file://0017-add-_pixman_bits_override_accessors.patch \
16 file://0018-Generic-C-implementation-of-pixman_blt-with-overlapp.patch \
17 file://0019-Support-of-overlapping-src-dst-for-pixman_blt_mmx.patch \
18 file://0020-Support-of-overlapping-src-dst-for-pixman_blt_sse2.patch \
19 file://0021-Support-of-overlapping-src-dst-for-pixman_blt_neon.patch \
20 file://0022-ARM-added-NEON-optimizations-for-fetch-store-r5g6b5-.patch \
21 file://0023-ARM-added-NEON-optimizations-for-fetch-store-a8-scan.patch \
22 file://0024-ARM-added-NEON-optimizations-for-fetching-x8r8g8b8-s.patch \
23"
24
25NEON = " --disable-arm-neon "
26NEON_armv7a = " "
27
28EXTRA_OECONF = "${NEON} --disable-gtk"
diff --git a/meta-oe/recipes-graphics/xorg-lib/xorg-lib-common.inc b/meta-oe/recipes-graphics/xorg-lib/xorg-lib-common.inc
new file mode 100644
index 000000000..93212c591
--- /dev/null
+++ b/meta-oe/recipes-graphics/xorg-lib/xorg-lib-common.inc
@@ -0,0 +1,19 @@
1HOMEPAGE = "http://www.x.org"
2BUGTRACKER = "https://bugs.freedesktop.org/enter_bug.cgi?product=xorg"
3
4SECTION = "x11/libs"
5LICENSE = "MIT-X"
6DEPENDS = "util-macros"
7
8XORG_PN = "${BPN}"
9INC_PR = "r9"
10
11SRC_URI = "${XORG_MIRROR}/individual/lib/${XORG_PN}-${PV}.tar.bz2"
12
13S = "${WORKDIR}/${XORG_PN}-${PV}"
14
15inherit autotools pkgconfig
16
17EXTRA_OECONF = "--enable-malloc0returnsnull"
18
19BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-oe/recipes-graphics/xorg-proto/renderproto_0.11.1.bb b/meta-oe/recipes-graphics/xorg-proto/renderproto_0.11.1.bb
new file mode 100644
index 000000000..7e3844847
--- /dev/null
+++ b/meta-oe/recipes-graphics/xorg-proto/renderproto_0.11.1.bb
@@ -0,0 +1,15 @@
1require xorg-proto-common.inc
2
3LICENSE = "MIT-style"
4LIC_FILES_CHKSUM = "file://COPYING;md5=f826d99765196352e6122a406cf0d024 \
5 file://renderproto.h;beginline=4;endline=24;md5=3e5e2851dad240b0a3a27c4776b4fd1f"
6
7CONFLICTS = "renderext"
8PR = "r0"
9PE = "1"
10
11BBCLASSEXTEND = "native nativesdk"
12
13SRC_URI[md5sum] = "a914ccc1de66ddeb4b611c6b0686e274"
14SRC_URI[sha256sum] = "06735a5b92b20759204e4751ecd6064a2ad8a6246bb65b3078b862a00def2537"
15
diff --git a/meta-oe/recipes-graphics/xorg-proto/xorg-proto-common.inc b/meta-oe/recipes-graphics/xorg-proto/xorg-proto-common.inc
new file mode 100644
index 000000000..3e7c701c7
--- /dev/null
+++ b/meta-oe/recipes-graphics/xorg-proto/xorg-proto-common.inc
@@ -0,0 +1,17 @@
1DESCRIPTION = "X protocol headers: ${BPN}"
2HOMEPAGE = "http://www.x.org"
3SECTION = "x11/libs"
4LICENSE = "MIT-X"
5
6DEPENDS = "util-macros"
7
8ALLOW_EMPTY = "1"
9
10INC_PR = "r2"
11
12SRC_URI = "${XORG_MIRROR}/individual/proto/${BPN}-${PV}.tar.bz2;name=archive"
13
14S = "${WORKDIR}/${BPN}-${PV}"
15
16inherit autotools pkgconfig
17