diff options
Diffstat (limited to 'meta-oe/recipes-graphics')
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 | |||
2 | def 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 @@ | |||
1 | SECTION = "libs" | ||
2 | PRIORITY = "optional" | ||
3 | DEPENDS = "virtual/libx11 pixman libsm libpng fontconfig libxrender glib-2.0" | ||
4 | DESCRIPTION = "Cairo graphics library" | ||
5 | LICENSE = "MPL LGPL" | ||
6 | |||
7 | #check for TARGET_FPU=soft and inform configure of the result so it can disable some floating points | ||
8 | require cairo-fpu.inc | ||
9 | EXTRA_OECONF += "${@get_cairo_fpu_setting(bb, d)}" | ||
10 | |||
11 | inherit autotools pkgconfig | ||
12 | |||
13 | BBCLASSEXTEND = "native" | ||
14 | |||
15 | PACKAGES =+ "cairo-trace cairo-trace-dev libcairo-script-interpreter libcairo-gobject" | ||
16 | FILES_libcairo-gobject = "${libdir}/libcairo-gobject.so.*" | ||
17 | FILES_libcairo-script-interpreter = "${libdir}/libcairo-script-interpreter.so.*" | ||
18 | FILES_cairo-trace = "${bindir}/*trace ${libdir}/cairo/libcairo-trace.so.*" | ||
19 | FILES_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 @@ | |||
1 | require cairo.inc | ||
2 | |||
3 | LIC_FILES_CHKSUM = "file://COPYING;md5=e73e999e0c72b5ac9012424fa157ad77" | ||
4 | |||
5 | PR = "r1" | ||
6 | |||
7 | SRC_URI = "http://cairographics.org/releases/cairo-${PV}.tar.gz;name=cairo \ | ||
8 | " | ||
9 | |||
10 | SRC_URI[cairo.md5sum] = "70a2ece66cf473d976e2db0f75bf199e" | ||
11 | SRC_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 | |||
4 | run-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 @@ | |||
1 | DESCRIPTION = "Scripts to be called when fonts are installed or removed \ | ||
2 | to make them known to the WM, whether X11 or Opie" | ||
3 | AUTHOR = "Rolf Leggewie <oe-devel@rolf.leggewie.biz" | ||
4 | |||
5 | LICENSE = "MIT" | ||
6 | LIC_FILES_CHKSUM = "file://${POKYBASE}/LICENSE;md5=3f40d7994397109285ec7b81fdeb3b58" | ||
7 | |||
8 | SRC_URI = "file://update-fonts" | ||
9 | |||
10 | do_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 | |||
16 | PACKAGE_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 @@ | |||
1 | DESCRIPTION = "Jpeg 2000 implementation" | ||
2 | LICENSE = "MIT" | ||
3 | LIC_FILES_CHKSUM = "file://LICENSE;md5=baa697d7510288a9cdcce9bd7edaf9bc" | ||
4 | |||
5 | PR = "r1" | ||
6 | |||
7 | SRC_URI = "http://www.ece.uvic.ca/~mdadams/jasper/software/jasper-${PV}.zip" | ||
8 | |||
9 | inherit autotools lib_package | ||
10 | |||
11 | EXTRA_OECONF = "--enable-shared" | ||
12 | |||
13 | SRC_URI[md5sum] = "a342b2b4495b3e1394e161eb5d85d754" | ||
14 | SRC_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 @@ | |||
1 | DESCRIPTION = "The goal of the Pango project is to provide an \ | ||
2 | Open Source framework for the layout and rendering of \ | ||
3 | internationalized text." | ||
4 | LICENSE = "LGPL" | ||
5 | |||
6 | inherit gnome | ||
7 | EXTRA_AUTORECONF = "" | ||
8 | |||
9 | SECTION = "x11/libs" | ||
10 | |||
11 | DEPENDS = "glib-2.0 fontconfig freetype zlib virtual/libiconv virtual/libx11 libxft gtk-doc cairo" | ||
12 | |||
13 | DEPENDS_virtclass-native = "glib-2.0-native cairo-native" | ||
14 | BBCLASSEXTEND = "native" | ||
15 | |||
16 | PACKAGES_DYNAMIC = "pango-module-*" | ||
17 | PACKAGES_DYNAMIC_virtclass-native = "" | ||
18 | |||
19 | RRECOMMENDS_${PN} = "pango-module-basic-x pango-module-basic-fc" | ||
20 | |||
21 | INC_PR = "r1" | ||
22 | |||
23 | # seems to go wrong with default cflags | ||
24 | FULL_OPTIMIZATION_arm = "-O2" | ||
25 | |||
26 | SRC_URI += "file://no-tests.patch \ | ||
27 | " | ||
28 | |||
29 | EXTRA_OECONF += "--disable-glibtest \ | ||
30 | --enable-explicit-deps=no \ | ||
31 | --disable-debug" | ||
32 | |||
33 | LEAD_SONAME = "libpango-1.0*" | ||
34 | LIBV = "1.6.0" | ||
35 | |||
36 | FILES_${PN} = "/etc ${bindir}/* ${libdir}/libpango*.so.*" | ||
37 | FILES_${PN}-dbg += "${libdir}/pango/${LIBV}/modules/.debug" | ||
38 | FILES_${PN}-dev += "${libdir}/pango/${LIBV}/modules/*.la" | ||
39 | |||
40 | postinst_prologue() { | ||
41 | if [ "x$D" != "x" ]; then | ||
42 | exit 1 | ||
43 | fi | ||
44 | |||
45 | } | ||
46 | |||
47 | python 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 @@ | |||
1 | Index: 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, :) | ||
21 | Index: 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 | |||
36 | Index: 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 | |||
51 | Index: 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 | |||
66 | Index: 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 @@ | |||
1 | require pango.inc | ||
2 | |||
3 | LIC_FILES_CHKSUM = "file://COPYING;md5=3bf50002aefd002f49e7bb854063f7e7" | ||
4 | |||
5 | SRC_URI[archive.md5sum] = "caa74baea47e7e16bc73c89f9089d522" | ||
6 | SRC_URI[archive.sha256sum] = "5e278bc9430cc7bb00270f183360d262c5006b51248e8b537ea904573f200632" | ||
7 | |||
8 | PR = "${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 @@ | |||
1 | DESCRIPTION = "C++ bindings for the pango library." | ||
2 | SECTION = "libs" | ||
3 | PRIORITY = "optional" | ||
4 | LICENSE = "LGPL" | ||
5 | DEPENDS = "mm-common cairomm glibmm" | ||
6 | SHRT_VER = "${@bb.data.getVar('PV',d,1).split('.')[0]}.${@bb.data.getVar('PV',d,1).split('.')[1]}" | ||
7 | PR = "r1" | ||
8 | |||
9 | SRC_URI = "ftp://ftp.gnome.org/pub/GNOME/sources/pangomm/${SHRT_VER}/pangomm-${PV}.tar.bz2" | ||
10 | |||
11 | inherit autotools flow-lossage | ||
12 | |||
13 | FILES_${PN} = "${libdir}/lib*.so.*" | ||
14 | FILES_${PN}-dev += "${libdir}/*/include/" | ||
15 | |||
16 | EXTRA_OECONF = " --disable-documentation " | ||
17 | |||
18 | AUTOTOOLS_STAGE_PKGCONFIG = "1" | ||
19 | |||
20 | |||
21 | SRC_URI[md5sum] = "37f54dc8e6cb73ed923b22f313352156" | ||
22 | SRC_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 @@ | |||
1 | DESCRIPTION = "Unicode Mingti (printed) TrueType Font" | ||
2 | HOMEPAGE = "http://www.freedesktop.org/wiki/Software/CJKUnifonts" | ||
3 | LICENSE = "${PN}" | ||
4 | SRC_DISTRIBUTE_LICENSES += "${PN}" | ||
5 | RPROVIDES_${PN} = "virtual-chinese-font" | ||
6 | PR = "r2" | ||
7 | |||
8 | SRC_URI = \ | ||
9 | "http://archive.ubuntu.com/ubuntu/pool/main/t/ttf-arphic-uming/ttf-arphic-uming_0.2.${PV}.1.orig.tar.gz" | ||
10 | S = "${WORKDIR}" | ||
11 | |||
12 | require ttf.inc | ||
13 | |||
14 | FILES_${PN} = "${datadir}" | ||
15 | |||
16 | |||
17 | SRC_URI[md5sum] = "d219fcaf953f3eb1889399955a00379f" | ||
18 | SRC_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 @@ | |||
1 | require ttf.inc | ||
2 | |||
3 | DESCRIPTION = "DejaVu font - TTF Edition" | ||
4 | HOMEPAGE = "http://dejavu.sourceforge.net/wiki/" | ||
5 | LICENSE = "Bitstream Vera" | ||
6 | LIC_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 | ||
9 | RDEPENDS_${PN}-sans = "${PN}-common" | ||
10 | RDEPENDS_${PN}-sans-mono = "${PN}-common" | ||
11 | RDEPENDS_${PN}-sans-condensed = "${PN}-common" | ||
12 | RDEPENDS_${PN}-serif = "${PN}-common" | ||
13 | RDEPENDS_${PN}-serif-condensed = "${PN}-common" | ||
14 | RDEPENDS_${PN}-common = "" | ||
15 | PR = "r3" | ||
16 | |||
17 | SRC_URI = "${SOURCEFORGE_MIRROR}/dejavu/dejavu-fonts-ttf-${PV}.tar.bz2 \ | ||
18 | file://30-dejavu-aliases.conf" | ||
19 | |||
20 | S = "${WORKDIR}/dejavu-fonts-ttf-${PV}/ttf" | ||
21 | |||
22 | do_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 | |||
27 | PACKAGES = "${PN}-dbg \ | ||
28 | ${PN}-sans \ | ||
29 | ${PN}-sans-mono \ | ||
30 | ${PN}-sans-condensed \ | ||
31 | ${PN}-serif \ | ||
32 | ${PN}-serif-condensed \ | ||
33 | ${PN}-common" | ||
34 | RRECOMMENDS_${PN}-dbg = "" | ||
35 | |||
36 | FILES_${PN}-sans = "${datadir}/fonts/truetype/DejaVuSans.ttf ${datadir}/fonts/truetype/DejaVuSans-*.ttf" | ||
37 | FILES_${PN}-sans-mono = "${datadir}/fonts/truetype/DejaVuSansMono*.ttf" | ||
38 | FILES_${PN}-sans-condensed = "${datadir}/fonts/truetype/DejaVuSansCondensed*.ttf" | ||
39 | FILES_${PN}-serif = "${datadir}/fonts/truetype/DejaVuSerif.ttf ${datadir}/fonts/truetype/DejaVuSerif-*.ttf" | ||
40 | FILES_${PN}-serif-condensed = "${datadir}/fonts/truetype/DejaVuSerifCondensed*.ttf" | ||
41 | FILES_${PN}-common = "${sysconfdir}" | ||
42 | |||
43 | SRC_URI[md5sum] = "ff871dff0b3e8a11cd5c54478f11073f" | ||
44 | SRC_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 @@ | |||
1 | require ttf.inc | ||
2 | |||
3 | DESCRIPTION = "Droid fonts - TTF Edition" | ||
4 | HOMEPAGE = "http://www.droidfonts.com/" | ||
5 | LICENSE = "Apache-2.0" | ||
6 | PR = "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) | ||
9 | SRCREV = "31f255e44e618ff3b923f332e8fcb83403fd39f5" | ||
10 | PV = "0.0+${PR}+gitr${SRCREV}" | ||
11 | |||
12 | SRC_URI = "git://android.git.kernel.org/platform/frameworks/base.git;protocol=git;branch=master" | ||
13 | |||
14 | S = "${WORKDIR}/git" | ||
15 | |||
16 | do_install_prepend() { | ||
17 | rm ${S}/Ahem.ttf # we're not packaging it | ||
18 | } | ||
19 | |||
20 | PACKAGES = "${PN}-dbg ttf-droid-sans ttf-droid-sans-mono \ | ||
21 | ttf-droid-sans-fallback ttf-droid-sans-japanese ttf-droid-serif" | ||
22 | RRECOMMENDS_${PN}-dbg = "" | ||
23 | |||
24 | FILES_ttf-droid-sans = "${datadir}/fonts/truetype/DroidSans.ttf ${datadir}/fonts/truetype/DroidSans-Bold.ttf" | ||
25 | FILES_ttf-droid-sans-mono = "${datadir}/fonts/truetype/DroidSansMono.ttf" | ||
26 | FILES_ttf-droid-sans-fallback = "${datadir}/fonts/truetype/DroidSansFallback.ttf" | ||
27 | FILES_ttf-droid-sans-japanese = "${datadir}/fonts/truetype/DroidSansJapanese.ttf" | ||
28 | FILES_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 @@ | |||
1 | require ttf.inc | ||
2 | |||
3 | DESCRIPTION = "Gentium fonts - TTF Version" | ||
4 | HOMEPAGE = "http://scripts.sil.org/gentium" | ||
5 | LICENSE = "SIL Open Font License" | ||
6 | LICENSE_URL = "http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&item_id=OFL" | ||
7 | PR = "r3" | ||
8 | |||
9 | SRC_URI = "${DEBIAN_MIRROR}/main/t/ttf-gentium/ttf-gentium_${PV}.orig.tar.gz \ | ||
10 | file://OFL.gz" | ||
11 | |||
12 | S = "${WORKDIR}/ttf-sil-gentium-${PV}" | ||
13 | |||
14 | do_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 | |||
24 | PACKAGES = "${PN}-dbg ${PN} ${PN}-alt" | ||
25 | |||
26 | FILES_ttf-gentium-alt = "${datadir}/fonts/truetype/GenAI*.ttf \ | ||
27 | ${datadir}/fonts/truetype/GenAR*.ttf \ | ||
28 | ${datadir}/doc/ttf-gentium-alt/*" | ||
29 | |||
30 | FILES_${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 | |||
134 | SRC_URI[md5sum] = "4c3e6ae586be277537ebb68f2a45b883" | ||
135 | SRC_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 @@ | |||
1 | require ttf.inc | ||
2 | |||
3 | DESCRIPTION = "Hunky fonts - TTF Version" | ||
4 | HOMEPAGE = "http://sourceforge.net/projects/hunkyfonts" | ||
5 | LICENSE = "LGPL" | ||
6 | PR = "r3" | ||
7 | |||
8 | SRC_URI = "${SOURCEFORGE_MIRROR}/hunkyfonts/hunkyfonts-${PV}.tar.bz2" | ||
9 | |||
10 | S = "${WORKDIR}/hunkyfonts-${PV}/TTF/" | ||
11 | |||
12 | PACKAGES = "${PN}-dbg ttf-hunky-sans ttf-hunky-serif" | ||
13 | RRECOMMENDS_${PN}-dbg = "" | ||
14 | FILES_ttf-hunky-sans = "${datadir}/fonts/truetype/HunkySans*.ttf" | ||
15 | FILES_ttf-hunky-serif = "${datadir}/fonts/truetype/HunkySerif*.ttf" | ||
16 | |||
17 | SRC_URI[md5sum] = "36444795a356fb8a56c63b2840729bab" | ||
18 | SRC_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 @@ | |||
1 | require ttf.inc | ||
2 | |||
3 | DESCRIPTION = "MPlus font - TTF Edition" | ||
4 | HOMEPAGE = "http://dejavu.sourceforge.net/wiki/" | ||
5 | LICENSE = "${PN}" | ||
6 | PR = "r0" | ||
7 | |||
8 | SRC_URI = "http://osdn.dl.sourceforge.jp/mplus-fonts/6650/mplus-TESTFLIGHT-${PV}.tar.gz" | ||
9 | S = "${WORKDIR}/mplus-TESTFLIGHT-${PV}" | ||
10 | |||
11 | python 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 | |||
16 | do_install() { | ||
17 | install -d ${D}${datadir}/fonts/ttf-mplus | ||
18 | install -m 0644 *.ttf ${D}${datadir}/fonts/ttf-mplus/ | ||
19 | } | ||
20 | |||
21 | SRC_URI[md5sum] = "d1400184b51b3871e8d2fca6c50e18ae" | ||
22 | SRC_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 @@ | |||
1 | require ttf.inc | ||
2 | |||
3 | DESCRIPTION = "Sazanami Gothic/Mincho Japanese TrueType fonts" | ||
4 | DESCRIPTION_ttf-sazanami-gothic = "Sazanami Gothic Japanese TrueType font" | ||
5 | DESCRIPTION_ttf-sazanami-mincho = "Sazanami Mincho Japanese TrueType font" | ||
6 | AUTHOR = "Electronic Font Open Laboratory (/efont/)" | ||
7 | HOMEPAGE = "http://sourceforge.jp/projects/efont/" | ||
8 | LICENSE = "${PN}" | ||
9 | SRC_DISTRIBUTE_LICENSES += "${PN}" | ||
10 | RPROVIDES_${PN} = "virtual-japanese-font" | ||
11 | PR = "r5" | ||
12 | |||
13 | SRC_URI = "http://osdn.dl.sourceforge.jp/efont/10087/sazanami-20040629.tar.bz2" | ||
14 | S = "${WORKDIR}/sazanami-20040629" | ||
15 | |||
16 | PACKAGES = "${PN}-dbg ttf-sazanami-gothic ttf-sazanami-mincho" | ||
17 | RRECOMMENDS_${PN}-dbg = "" | ||
18 | FILES_ttf-sazanami-gothic = "${datadir}/fonts/truetype/sazanami-gothic.ttf \ | ||
19 | ${datadir}/doc/ttf-sazanami-gothic/README" | ||
20 | FILES_ttf-sazanami-mincho = "${datadir}/fonts/truetype/sazanami-mincho.ttf \ | ||
21 | ${datadir}/doc/ttf-sazanami-mincho/README" | ||
22 | |||
23 | do_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 | |||
32 | SRC_URI[md5sum] = "ceef10579a75c92483171f3bd7f77df2" | ||
33 | SRC_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 @@ | |||
1 | require ttf.inc | ||
2 | |||
3 | DESCRIPTION = "Ubuntu Font Family - TTF Version" | ||
4 | HOMEPAGE = "http://font.ubuntu.com" | ||
5 | LICENSE = "UFL" | ||
6 | PR = "r0" | ||
7 | |||
8 | SRC_URI = "http://font.ubuntu.com/download/ubuntu-font-family-${PV}+ufl.zip" | ||
9 | SRC_URI[md5sum] = "2c3287ea72f81ce025095f7a6d68af28" | ||
10 | SRC_URI[sha256sum] = "23206a306d92ec57404ab3bc75610b6d8cfed0b8ddcfbe51b99fb48519a4855b" | ||
11 | S = "${WORKDIR}/ubuntu-font-family-0.69+ufl" | ||
12 | |||
13 | PACKAGES = "${PN}-dbg ttf-ubuntu-mono ttf-ubuntu-sans ttf-ubuntu-serif" | ||
14 | RRECOMMENDS_${PN}-dbg = "" | ||
15 | |||
16 | FILES_ttf-ubuntu-mono = "${datadir}/fonts/truetype/*Mono*" | ||
17 | FILES_ttf-ubuntu-sans = "${datadir}/fonts/truetype/Ubuntu-*" | ||
18 | FILES_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 @@ | |||
1 | require ttf.inc | ||
2 | |||
3 | DESCRIPTION = "WenQuanYi Zen Hei - A Hei-Ti Style Chinese font" | ||
4 | AUTHOR = "Qianqian Fang and The WenQuanYi Project Contributors" | ||
5 | HOMEPAGE = "http://wqy.sourceforge.net/en/" | ||
6 | LICENSE = "GPLv2" | ||
7 | |||
8 | SRC_URI = "${SOURCEFORGE_MIRROR}/wqy/wqy-zenhei-${PV}-0.tar.gz" | ||
9 | S = "${WORKDIR}/wqy-zenhei" | ||
10 | |||
11 | do_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 | |||
17 | PACKAGES = "${PN}" | ||
18 | |||
19 | FILES_${PN} = "${datadir}/fonts ${sysconfdir}" | ||
20 | |||
21 | SRC_URI[md5sum] = "bf2c1cb512606d995873bada27c777da" | ||
22 | SRC_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 @@ | |||
1 | DESCRIPTION ?= "TrueType font package ${PN}" | ||
2 | SECTION = "fonts" | ||
3 | PRIORITY = "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 | ||
5 | RRECOMMENDS += "font-update-common" | ||
6 | |||
7 | # we don't need a compiler nor a c library for these fonts | ||
8 | INHIBIT_DEFAULT_DEPS = "1" | ||
9 | |||
10 | do_install() { | ||
11 | install -d ${D}${datadir}/fonts/truetype/ | ||
12 | find ./ -name '*.tt[cf]' -exec install -m 0644 {} ${D}${datadir}/fonts/truetype/ \; | ||
13 | } | ||
14 | |||
15 | pkg_postinst_append() { | ||
16 | update-fonts | ||
17 | } | ||
18 | |||
19 | pkg_postrm_append() { | ||
20 | update-fonts | ||
21 | } | ||
22 | |||
23 | PACKAGE_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 @@ | |||
1 | From 05efb061f1945425d214ff6b6050883e6d8633bf Mon Sep 17 00:00:00 2001 | ||
2 | From: Koen Kooi <koen@dominion.thruhere.net> | ||
3 | Date: Wed, 26 Jan 2011 13:21:12 +0100 | ||
4 | Subject: [PATCH 1/3] blacklist tv out | ||
5 | |||
6 | Signed-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 | |||
11 | diff --git a/src/omapfb-output-dss.c b/src/omapfb-output-dss.c | ||
12 | index 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 | -- | ||
27 | 1.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 @@ | |||
1 | From 316f31253902eb3567ef62faf52b3f0a5d6b0c93 Mon Sep 17 00:00:00 2001 | ||
2 | From: Koen Kooi <koen@dominion.thruhere.net> | ||
3 | Date: Wed, 26 Jan 2011 13:27:20 +0100 | ||
4 | Subject: [PATCH 2/3] Revert "Set virtual size when configuring framebuffer" | ||
5 | |||
6 | This reverts commit 2653ef07883fbd1a5e7025f9300cf89b79ba429a. | ||
7 | --- | ||
8 | src/omapfb-crtc.c | 2 -- | ||
9 | 1 files changed, 0 insertions(+), 2 deletions(-) | ||
10 | |||
11 | diff --git a/src/omapfb-crtc.c b/src/omapfb-crtc.c | ||
12 | index 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 | -- | ||
25 | 1.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 @@ | |||
1 | From b7acfade1ac15332ebfd24d4bf02b466858c8cf8 Mon Sep 17 00:00:00 2001 | ||
2 | From: Koen Kooi <koen@dominion.thruhere.net> | ||
3 | Date: Wed, 26 Jan 2011 13:20:20 +0100 | ||
4 | Subject: [PATCH 3/3] force 'plain' mode | ||
5 | |||
6 | Signed-off-by: Koen Kooi <koen@dominion.thruhere.net> | ||
7 | --- | ||
8 | src/omapfb-driver.c | 2 +- | ||
9 | 1 files changed, 1 insertions(+), 1 deletions(-) | ||
10 | |||
11 | diff --git a/src/omapfb-driver.c b/src/omapfb-driver.c | ||
12 | index 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 | -- | ||
25 | 1.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 @@ | |||
1 | require recipes-graphics/xorg-driver/xf86-driver-common.inc | ||
2 | |||
3 | INC_PR ?= "r15" | ||
4 | |||
5 | DESCRIPTION = "X.Org X server -- OMAP display driver" | ||
6 | PE = "1" | ||
7 | PV = "0.1.1+${PR}+gitr${SRCREV}" | ||
8 | PR = "${INC_PR}.2" | ||
9 | |||
10 | LICENSE = "MIT-X" | ||
11 | LIC_FILES_CHKSUM = "file://src/omapfb-driver.c;beginline=1;endline=30;md5=a44c2a37e04d1c2c5f0313afb493f833" | ||
12 | |||
13 | SRC_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 | |||
19 | SRCREV_pn-${PN} = "044617665d6737f4909aab96f91b06261dff05d2" | ||
20 | S = "${WORKDIR}/git" | ||
21 | |||
22 | EXTRA_OECONF_armv7a = " --enable-neon " | ||
23 | |||
24 | # Use overlay 2 on omap3 to enable other apps to use overlay 1 (e.g. dmai or omapfbplay) | ||
25 | do_compile_prepend_armv7a () { | ||
26 | sed -i -e s:fb1:fb2:g ${S}/src/omapfb-xv.c | ||
27 | } | ||
28 | |||
29 | CFLAGS += " -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 @@ | |||
1 | DESCRIPTION = "X11 miscellaneous extension library" | ||
2 | |||
3 | require xorg-lib-common.inc | ||
4 | |||
5 | LICENSE = "MIT-style" | ||
6 | LIC_FILES_CHKSUM = "file://COPYING;md5=0542b0321c1c9a7a20b23a1b9fa45f91" | ||
7 | |||
8 | DEPENDS += "xproto virtual/libx11 xextproto libxau libxdmcp" | ||
9 | PROVIDES = "xext" | ||
10 | |||
11 | PR = "r0" | ||
12 | PE = "1" | ||
13 | |||
14 | XORG_PN = "libXext" | ||
15 | |||
16 | |||
17 | SRC_URI[md5sum] = "9bb236ff0193e9fc1c1fb504dd840331" | ||
18 | SRC_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 @@ | |||
1 | DESCRIPTION = "X11 Rendering Extension client library" | ||
2 | |||
3 | require xorg-lib-common.inc | ||
4 | |||
5 | LICENSE = "MIT-style" | ||
6 | LIC_FILES_CHKSUM = "file://COPYING;md5=0db75cc842842b36f097fdae571b4b70" | ||
7 | |||
8 | DEPENDS += "virtual/libx11 renderproto xproto xdmcp" | ||
9 | |||
10 | PR = "r0" | ||
11 | PE = "1" | ||
12 | |||
13 | XORG_PN = "libXrender" | ||
14 | |||
15 | |||
16 | SRC_URI[md5sum] = "3b3b7d076c2384b6c600c0b5f4ba971f" | ||
17 | SRC_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 @@ | |||
1 | From 38aabb3be87ea68e37f34256c778d07f62680ec6 Mon Sep 17 00:00:00 2001 | ||
2 | From: Siarhei Siamashka <siarhei.siamashka@nokia.com> | ||
3 | Date: Thu, 10 Dec 2009 00:51:50 +0200 | ||
4 | Subject: [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 | |||
18 | diff --git a/pixman/pixman-access.c b/pixman/pixman-access.c | ||
19 | index 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 | ||
59 | diff --git a/pixman/pixman-private.h b/pixman/pixman-private.h | ||
60 | index 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 | -- | ||
76 | 1.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 @@ | |||
1 | From 97b2bb933455f222b392b5c60a8bde82d7d6329f Mon Sep 17 00:00:00 2001 | ||
2 | From: Siarhei Siamashka <siarhei.siamashka@nokia.com> | ||
3 | Date: Tue, 16 Mar 2010 16:55:28 +0100 | ||
4 | Subject: [PATCH 1/8] Generic C implementation of pixman_blt with overlapping support | ||
5 | |||
6 | Uses memcpy/memmove functions to copy pixels, can handle the | ||
7 | case when both source and destination areas are in the same | ||
8 | image (this is useful for scrolling). | ||
9 | |||
10 | It is assumed that copying direction is only important when | ||
11 | using the same image for both source and destination (and | ||
12 | src_stride == dst_stride). Copying direction is undefined | ||
13 | for the images with different source and destination stride | ||
14 | which happen to be in the overlapped areas (but this is an | ||
15 | unrealistic case anyway). | ||
16 | --- | ||
17 | pixman/pixman-general.c | 21 ++++++++++++++++++--- | ||
18 | pixman/pixman-private.h | 43 +++++++++++++++++++++++++++++++++++++++++++ | ||
19 | 2 files changed, 61 insertions(+), 3 deletions(-) | ||
20 | |||
21 | diff --git a/pixman/pixman-general.c b/pixman/pixman-general.c | ||
22 | index 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 | ||
53 | diff --git a/pixman/pixman-private.h b/pixman/pixman-private.h | ||
54 | index 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 | -- | ||
113 | 1.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 @@ | |||
1 | From 47b31f936641da07431093ede340465625bfcb3d Mon Sep 17 00:00:00 2001 | ||
2 | From: Siarhei Siamashka <siarhei.siamashka@nokia.com> | ||
3 | Date: Thu, 22 Oct 2009 05:45:47 +0300 | ||
4 | Subject: [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 | |||
10 | diff --git a/pixman/pixman-mmx.c b/pixman/pixman-mmx.c | ||
11 | index 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 | -- | ||
90 | 1.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 @@ | |||
1 | From 13be027637602fffda3b3cb6e171d8d6a67b3b4b Mon Sep 17 00:00:00 2001 | ||
2 | From: Siarhei Siamashka <siarhei.siamashka@nokia.com> | ||
3 | Date: Thu, 22 Oct 2009 05:45:54 +0300 | ||
4 | Subject: [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 | |||
10 | diff --git a/pixman/pixman-sse2.c b/pixman/pixman-sse2.c | ||
11 | index 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 | -- | ||
90 | 1.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 @@ | |||
1 | From a913cc05a1a1c5a813cf06d248334edede9caab7 Mon Sep 17 00:00:00 2001 | ||
2 | From: Siarhei Siamashka <siarhei.siamashka@nokia.com> | ||
3 | Date: Wed, 18 Nov 2009 06:08:48 +0200 | ||
4 | Subject: [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 | |||
10 | diff --git a/pixman/pixman-arm-neon.c b/pixman/pixman-arm-neon.c | ||
11 | index 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 | -- | ||
93 | 1.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 @@ | |||
1 | From f75e9d1868e21dd75ff3a2ca3561546d23877ddb Mon Sep 17 00:00:00 2001 | ||
2 | From: Siarhei Siamashka <siarhei.siamashka@nokia.com> | ||
3 | Date: Thu, 10 Dec 2009 00:51:50 +0200 | ||
4 | Subject: [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 | |||
11 | diff --git a/pixman/pixman-arm-neon-asm.S b/pixman/pixman-arm-neon-asm.S | ||
12 | index 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 | ||
49 | diff --git a/pixman/pixman-arm-neon.c b/pixman/pixman-arm-neon.c | ||
50 | index 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 | -- | ||
108 | 1.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 @@ | |||
1 | From a1cd695c5e22f0f4a2b7272fab675a3cc510bacb Mon Sep 17 00:00:00 2001 | ||
2 | From: Siarhei Siamashka <siarhei.siamashka@nokia.com> | ||
3 | Date: Thu, 23 Sep 2010 21:10:56 +0300 | ||
4 | Subject: [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 | |||
11 | diff --git a/pixman/pixman-arm-neon-asm.S b/pixman/pixman-arm-neon-asm.S | ||
12 | index 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 | ||
86 | diff --git a/pixman/pixman-arm-neon.c b/pixman/pixman-arm-neon.c | ||
87 | index 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 | -- | ||
147 | 1.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 @@ | |||
1 | From d6ae7da60cc797900b5eff0786536c4a11ab0f50 Mon Sep 17 00:00:00 2001 | ||
2 | From: Siarhei Siamashka <siarhei.siamashka@nokia.com> | ||
3 | Date: Fri, 24 Sep 2010 18:22:44 +0300 | ||
4 | Subject: [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 | |||
11 | diff --git a/pixman/pixman-arm-neon-asm.S b/pixman/pixman-arm-neon-asm.S | ||
12 | index 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 | ||
36 | diff --git a/pixman/pixman-arm-neon.c b/pixman/pixman-arm-neon.c | ||
37 | index 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 | -- | ||
76 | 1.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 @@ | |||
1 | From e1191ad6563a1fb02a45982b1c4d7fed3c655e97 Mon Sep 17 00:00:00 2001 | ||
2 | From: Siarhei Siamashka <siarhei.siamashka@nokia.com> | ||
3 | Date: Mon, 4 Oct 2010 01:56:59 +0300 | ||
4 | Subject: [PATCH 8/8] ARM optimization for scaled src_0565_0565 operation with nearest filter | ||
5 | |||
6 | The code actually uses only armv4t instructions. | ||
7 | |||
8 | Benchmark 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 | |||
16 | Benchmark 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 | |||
28 | diff --git a/pixman/pixman-arm-simd-asm.S b/pixman/pixman-arm-simd-asm.S | ||
29 | index 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 | ||
108 | diff --git a/pixman/pixman-arm-simd.c b/pixman/pixman-arm-simd.c | ||
109 | index 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 | -- | ||
171 | 1.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 @@ | |||
1 | From 6593d86679fde724e49efa96b16ca22d9521b288 Mon Sep 17 00:00:00 2001 | ||
2 | From: Siarhei Siamashka <siarhei.siamashka@nokia.com> | ||
3 | Date: Thu, 10 Dec 2009 00:51:50 +0200 | ||
4 | Subject: [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 | |||
16 | diff --git a/pixman/pixman-access.c b/pixman/pixman-access.c | ||
17 | index 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 | ||
57 | diff --git a/pixman/pixman-private.h b/pixman/pixman-private.h | ||
58 | index 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 | -- | ||
74 | 1.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 @@ | |||
1 | From 8e8b2809b505486001dc213becab0d50bfd96c1b Mon Sep 17 00:00:00 2001 | ||
2 | From: Siarhei Siamashka <siarhei.siamashka@nokia.com> | ||
3 | Date: Tue, 16 Mar 2010 16:55:28 +0100 | ||
4 | Subject: [PATCH 18/24] Generic C implementation of pixman_blt with overlapping support | ||
5 | |||
6 | Uses memcpy/memmove functions to copy pixels, can handle the | ||
7 | case when both source and destination areas are in the same | ||
8 | image (this is useful for scrolling). | ||
9 | |||
10 | It is assumed that copying direction is only important when | ||
11 | using the same image for both source and destination (and | ||
12 | src_stride == dst_stride). Copying direction is undefined | ||
13 | for the images with different source and destination stride | ||
14 | which happen to be in the overlapped areas (but this is an | ||
15 | unrealistic case anyway). | ||
16 | --- | ||
17 | pixman/pixman-general.c | 21 ++++++++++++++++++--- | ||
18 | pixman/pixman-private.h | 43 +++++++++++++++++++++++++++++++++++++++++++ | ||
19 | 2 files changed, 61 insertions(+), 3 deletions(-) | ||
20 | |||
21 | diff --git a/pixman/pixman-general.c b/pixman/pixman-general.c | ||
22 | index 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 | ||
53 | diff --git a/pixman/pixman-private.h b/pixman/pixman-private.h | ||
54 | index 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 | -- | ||
113 | 1.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 @@ | |||
1 | From f5a54f7d5eb1169bc79f0e445e2998e98080ef13 Mon Sep 17 00:00:00 2001 | ||
2 | From: Siarhei Siamashka <siarhei.siamashka@nokia.com> | ||
3 | Date: Thu, 22 Oct 2009 05:45:47 +0300 | ||
4 | Subject: [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 | |||
10 | diff --git a/pixman/pixman-mmx.c b/pixman/pixman-mmx.c | ||
11 | index 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 | -- | ||
90 | 1.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 @@ | |||
1 | From c8755294fa9ea396f7113370230b17c424a93be1 Mon Sep 17 00:00:00 2001 | ||
2 | From: Siarhei Siamashka <siarhei.siamashka@nokia.com> | ||
3 | Date: Thu, 22 Oct 2009 05:45:54 +0300 | ||
4 | Subject: [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 | |||
10 | diff --git a/pixman/pixman-sse2.c b/pixman/pixman-sse2.c | ||
11 | index 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 | -- | ||
90 | 1.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 @@ | |||
1 | From 86c8198598ef6d639e656c04644015795cc249aa Mon Sep 17 00:00:00 2001 | ||
2 | From: Siarhei Siamashka <siarhei.siamashka@nokia.com> | ||
3 | Date: Wed, 18 Nov 2009 06:08:48 +0200 | ||
4 | Subject: [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 | |||
10 | diff --git a/pixman/pixman-arm-neon.c b/pixman/pixman-arm-neon.c | ||
11 | index 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 | -- | ||
93 | 1.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 @@ | |||
1 | From 60d972afbae8613d700d3a6b3cb107429d7e11c6 Mon Sep 17 00:00:00 2001 | ||
2 | From: Siarhei Siamashka <siarhei.siamashka@nokia.com> | ||
3 | Date: Thu, 10 Dec 2009 00:51:50 +0200 | ||
4 | Subject: [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 | |||
11 | diff --git a/pixman/pixman-arm-neon-asm.S b/pixman/pixman-arm-neon-asm.S | ||
12 | index 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 | ||
49 | diff --git a/pixman/pixman-arm-neon.c b/pixman/pixman-arm-neon.c | ||
50 | index 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 | -- | ||
108 | 1.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 @@ | |||
1 | From cc99d8d6fcbabd7f9f3ed99e65c78a2fb71792fa Mon Sep 17 00:00:00 2001 | ||
2 | From: Siarhei Siamashka <siarhei.siamashka@nokia.com> | ||
3 | Date: Thu, 23 Sep 2010 21:10:56 +0300 | ||
4 | Subject: [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 | |||
11 | diff --git a/pixman/pixman-arm-neon-asm.S b/pixman/pixman-arm-neon-asm.S | ||
12 | index 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 | ||
86 | diff --git a/pixman/pixman-arm-neon.c b/pixman/pixman-arm-neon.c | ||
87 | index 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 | -- | ||
147 | 1.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 @@ | |||
1 | From cf3b8fdc53144ff62c4054996559d3a1a4d62b75 Mon Sep 17 00:00:00 2001 | ||
2 | From: Siarhei Siamashka <siarhei.siamashka@nokia.com> | ||
3 | Date: Fri, 24 Sep 2010 18:22:44 +0300 | ||
4 | Subject: [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 | |||
11 | diff --git a/pixman/pixman-arm-neon-asm.S b/pixman/pixman-arm-neon-asm.S | ||
12 | index 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 | ||
36 | diff --git a/pixman/pixman-arm-neon.c b/pixman/pixman-arm-neon.c | ||
37 | index 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 | -- | ||
76 | 1.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 @@ | |||
1 | SECTION = "libs" | ||
2 | PRIORITY = "optional" | ||
3 | DESCRIPTION = "Low-level pixel manipulation library." | ||
4 | LICENSE = "X11" | ||
5 | |||
6 | DEPENDS = "perl-native" | ||
7 | |||
8 | BBCLASSEXTEND = "native" | ||
9 | |||
10 | SRC_URI = "http://cairographics.org/releases/${BPN}-${PV}.tar.gz;name=archive " | ||
11 | |||
12 | INC_PR = "r5" | ||
13 | |||
14 | inherit 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 @@ | |||
1 | require pixman.inc | ||
2 | |||
3 | SRC_URI[archive.md5sum] = "c1a31d5cedfa97c5af7148a2d1fd4356" | ||
4 | SRC_URI[archive.sha256sum] = "9c02c22c6cc3f28f3633d02ef6f0cac130518f621edb011ebbbf08cd1a81251a" | ||
5 | |||
6 | PR = "${INC_PR}.0" | ||
7 | |||
8 | SRC_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 | |||
20 | NEON = " --disable-arm-neon " | ||
21 | NEON_armv7a = " " | ||
22 | |||
23 | EXTRA_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 @@ | |||
1 | require pixman.inc | ||
2 | |||
3 | SRC_URI[archive.md5sum] = "e50975ace979cd416a505827c15191b4" | ||
4 | SRC_URI[archive.sha256sum] = "57783330ee2f96121dc267b7f25b98356fd09fe9de185cd39e72e906b6444013" | ||
5 | |||
6 | LICENSE = "MIT & MIT-style & Public Domain" | ||
7 | LIC_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 | |||
12 | PR = "${INC_PR}.0" | ||
13 | |||
14 | SRC_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 | |||
25 | NEON = " --disable-arm-neon " | ||
26 | NEON_armv7a = " " | ||
27 | |||
28 | EXTRA_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 @@ | |||
1 | HOMEPAGE = "http://www.x.org" | ||
2 | BUGTRACKER = "https://bugs.freedesktop.org/enter_bug.cgi?product=xorg" | ||
3 | |||
4 | SECTION = "x11/libs" | ||
5 | LICENSE = "MIT-X" | ||
6 | DEPENDS = "util-macros" | ||
7 | |||
8 | XORG_PN = "${BPN}" | ||
9 | INC_PR = "r9" | ||
10 | |||
11 | SRC_URI = "${XORG_MIRROR}/individual/lib/${XORG_PN}-${PV}.tar.bz2" | ||
12 | |||
13 | S = "${WORKDIR}/${XORG_PN}-${PV}" | ||
14 | |||
15 | inherit autotools pkgconfig | ||
16 | |||
17 | EXTRA_OECONF = "--enable-malloc0returnsnull" | ||
18 | |||
19 | BBCLASSEXTEND = "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 @@ | |||
1 | require xorg-proto-common.inc | ||
2 | |||
3 | LICENSE = "MIT-style" | ||
4 | LIC_FILES_CHKSUM = "file://COPYING;md5=f826d99765196352e6122a406cf0d024 \ | ||
5 | file://renderproto.h;beginline=4;endline=24;md5=3e5e2851dad240b0a3a27c4776b4fd1f" | ||
6 | |||
7 | CONFLICTS = "renderext" | ||
8 | PR = "r0" | ||
9 | PE = "1" | ||
10 | |||
11 | BBCLASSEXTEND = "native nativesdk" | ||
12 | |||
13 | SRC_URI[md5sum] = "a914ccc1de66ddeb4b611c6b0686e274" | ||
14 | SRC_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 @@ | |||
1 | DESCRIPTION = "X protocol headers: ${BPN}" | ||
2 | HOMEPAGE = "http://www.x.org" | ||
3 | SECTION = "x11/libs" | ||
4 | LICENSE = "MIT-X" | ||
5 | |||
6 | DEPENDS = "util-macros" | ||
7 | |||
8 | ALLOW_EMPTY = "1" | ||
9 | |||
10 | INC_PR = "r2" | ||
11 | |||
12 | SRC_URI = "${XORG_MIRROR}/individual/proto/${BPN}-${PV}.tar.bz2;name=archive" | ||
13 | |||
14 | S = "${WORKDIR}/${BPN}-${PV}" | ||
15 | |||
16 | inherit autotools pkgconfig | ||
17 | |||