diff options
34 files changed, 1552 insertions, 91 deletions
diff --git a/community/acpid/PKGBUILD b/community/acpid/PKGBUILD index 66537479d..53ff54a87 100644 --- a/community/acpid/PKGBUILD +++ b/community/acpid/PKGBUILD @@ -1,11 +1,11 @@ -# $Id: PKGBUILD 68371 2012-03-23 10:07:50Z seblu $ +# $Id: PKGBUILD 69396 2012-04-15 17:01:41Z seblu $ # Maintainer: Sébastien Luttringer <seblu@aur.archlinux.org> # Contributor: xduugu # Contributor: Manolis Tzanidakis # Contributor: Jonathan Schmidt <j.schmidt@archlinux.us pkgname=acpid -pkgver=2.0.15 +pkgver=2.0.16 pkgrel=1 pkgdesc='A daemon for delivering ACPI power management events with netlink support' arch=('i686' 'x86_64') @@ -20,7 +20,7 @@ source=("http://www.tedfelix.com/linux/$pkgname-$pkgver.tar.xz" 'anything' 'handler.sh' 'acpid.conf.d') -md5sums=('1b1c8775adab6a994a386c45af6b86dc' +md5sums=('d59fc02c9c34f0d5c137495302e2c074' 'd69203a032c4583f9abaafcf21a7ed84' '2d37b98d6e74bab815604b8b48c6cfd4' '615439f4a89716c747907d4fc3c8df75' diff --git a/community/assimp/PKGBUILD b/community/assimp/PKGBUILD new file mode 100644 index 000000000..8dc5bff69 --- /dev/null +++ b/community/assimp/PKGBUILD @@ -0,0 +1,29 @@ +# Maintainer: Sven-Hendrik Haase <sh@lutzhaase.com> +# Contributor: jepaan <jepaan at hotmail dot com> + +pkgname=assimp +pkgver=2.0.863 +pkgrel=1 +pkgdesc="Portable Open Source library to import various well-known 3D model formats in an uniform manner" +arch=('i686' 'x86_64') +license=('BSD') +makedepends=('cmake' 'boost') +url=('http://assimp.sourceforge.net/index.html') +source=("http://downloads.sourceforge.net/assimp/assimp--${pkgver}-sdk.zip") +md5sums=('9f41662501bd9d9533c4cf03b7c25d5b') + +build() { + cd ${srcdir} + mkdir build + cd build + cmake ../${pkgname}--${pkgver}-sdk \ + -DCMAKE_INSTALL_PREFIX=/usr + make +} + +package() { + cd ${srcdir}/build + + make DESTDIR=$pkgdir install + install -Dm644 ${srcdir}/${pkgname}--${pkgver}-sdk/LICENSE ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE +} diff --git a/community/bitcoin/PKGBUILD b/community/bitcoin/PKGBUILD new file mode 100644 index 000000000..00d2cc85f --- /dev/null +++ b/community/bitcoin/PKGBUILD @@ -0,0 +1,62 @@ +# $Id: PKGBUILD 69400 2012-04-15 20:25:26Z tredaelli $ +# Maintainer: Timothy Redaelli <timothy.redaelli@gmail.com> +# Contributor: shahid <helllamer@gmail.com> + +pkgbase=bitcoin +pkgname=('bitcoin-daemon' 'bitcoin-qt') +pkgver=0.6.0 +pkgrel=1 +arch=('i686' 'x86_64') +url="http://www.bitcoin.org/" +makedepends=('boost' 'automoc4' 'miniupnpc') +conflicts=('bitcoin' 'bitcoin-bin' 'bitcoin-git') +replaces=('bitcoin' 'bitcoin-bin' 'bitcoin-git') +license=('MIT') +source=("http://downloads.sourceforge.net/sourceforge/${pkgbase}/${pkgbase}-${pkgver}-linux.tar.gz") +sha256sums=('13faa8b7c8c9ce3518ebe31ff2d97920f4feb4f06c1d08455b272fdaaeeb1f97') + +build() { + cd "$srcdir/$pkgbase-$pkgver-linux/src" + + # FIXME GCC 4.7.0 is too strict + echo "QMAKE_CXXFLAGS += $CXXFLAGS -fpermissive" >> bitcoin-qt.pro + + # and make qt gui + qmake + make + + # make bitcoind + make -f makefile.unix -C src CXXFLAGS="$CXXFLAGS -fpermissive" USE_UPNP=1 +} + + +package_bitcoin-qt() { + pkgdesc="Bitcoin is a peer-to-peer network based digital currency - QT" + depends=(boost-libs qt miniupnpc) + install=bitcoin-qt.install + + cd "$srcdir/$pkgbase-$pkgver-linux/src" + install -Dm755 bitcoin-qt "$pkgdir"/usr/bin/bitcoin-qt + install -Dm644 contrib/debian/bitcoin-qt.desktop \ + "$pkgdir"/usr/share/applications/bitcoin.desktop + install -Dm644 share/pixmaps/bitcoin80.xpm \ + "$pkgdir"/usr/share/pixmaps/bitcoin80.xpm + + install -Dm644 COPYING "$pkgdir/usr/share/licenses/$pkgname/COPYING" +} + +package_bitcoin-daemon() { + pkgdesc="Bitcoin is a peer-to-peer network based digital currency - daemon" + depends=(boost-libs miniupnpc openssl) + + cd "$srcdir/$pkgbase-$pkgver-linux/src" + install -Dm755 src/bitcoind "$pkgdir"/usr/bin/bitcoind + install -Dm644 contrib/debian/examples/bitcoin.conf \ + "$pkgdir/usr/share/doc/$pkgname/examples/bitcoin.conf" + install -Dm644 contrib/debian/manpages/bitcoind.1 \ + "$pkgdir"/usr/share/man/man1/bitcoind.1 + install -Dm644 contrib/debian/manpages/bitcoin.conf.5 \ + "$pkgdir"/usr/share/man/man5/bitcoin.conf.5 + install -Dm644 COPYING "$pkgdir/usr/share/licenses/$pkgname/COPYING" +} + diff --git a/community/bitcoin/bitcoin-qt.install b/community/bitcoin/bitcoin-qt.install new file mode 100644 index 000000000..f98ba7338 --- /dev/null +++ b/community/bitcoin/bitcoin-qt.install @@ -0,0 +1,11 @@ +post_install() { + update-desktop-database -q +} + +post_upgrade() { + post_install $1 +} + +post_remove() { + post_install $1 +} diff --git a/community/desmume/PKGBUILD b/community/desmume/PKGBUILD index 5138954fd..187177a00 100644 --- a/community/desmume/PKGBUILD +++ b/community/desmume/PKGBUILD @@ -1,4 +1,4 @@ -# $Id: PKGBUILD 67526 2012-03-13 10:38:03Z giovanni $ +# $Id: PKGBUILD 69392 2012-04-15 16:03:24Z schuay $ # Maintainer: Jonathan Conder <jonno dot conder at gmail dot com> # Maintainer: Brad Fanella <bradfanella@archlinux.us> # Contributor: Arkham <arkham at archlinux dot us> @@ -11,27 +11,22 @@ # Contributor: Asher256 <achrafcherti at gmail dot com> pkgname=desmume -pkgver=0.9.7 -pkgrel=4 +pkgver=0.9.8 +pkgrel=1 pkgdesc="Nintendo DS emulator" arch=('i686' 'x86_64') url="http://desmume.org/" license=('GPL') -depends=('agg' 'gtkglext' 'libglade' 'desktop-file-utils' 'libpcap') +depends=('agg' 'gtkglext' 'libglade' 'desktop-file-utils' 'libpcap' + 'soundtouch' 'alsa-lib' 'zziplib') makedepends=('intltool') -replaces=('desmume-core' 'desmume-cli' 'desmume-gtk' 'desmume-glade') install=desmume.install -source=("http://downloads.sourceforge.net/$pkgname/$pkgname-$pkgver.tar.gz" - 'desmume-0.9.7-zlib.1.2.6-fix.patch') -sha256sums=('0a0f7ef3cc76ff0bbc6f3df47c3689653617074ea7ffc354e9fa1240c5336523' - 'baaf68be32f09690975d6309af6988c038e708ef322ed7e4b370d87087c7b6ba') +source=("http://downloads.sourceforge.net/$pkgname/$pkgname-$pkgver.tar.gz") build() { cd "$srcdir/$pkgname-$pkgver" - patch -Np1 -i "${srcdir}/desmume-0.9.7-zlib.1.2.6-fix.patch" - ./configure --prefix=/usr \ - --enable-wifi + ./configure --prefix=/usr --enable-wifi make } @@ -40,3 +35,5 @@ package() { make DESTDIR="$pkgdir/" install } + +sha256sums=('f405b44e2d7ab3578d6be91a6546bbaa0afc60b2a8d193e4415fea5c5332d585') diff --git a/community/glfw/PKGBUILD b/community/glfw/PKGBUILD index 452f0cb2e..dda84c6ff 100644 --- a/community/glfw/PKGBUILD +++ b/community/glfw/PKGBUILD @@ -1,4 +1,4 @@ -# $Id: PKGBUILD 68357 2012-03-22 23:04:26Z svenstaro $ +# $Id: PKGBUILD 69414 2012-04-16 00:32:44Z svenstaro $ # Maintainer: Sven-Hendrik Haase <sh@lutzhaase.com> # Contributor: philefou <tuxication AT gmail DOT com> # Contributor: lindquist <tomas@famolsen.dk> @@ -7,7 +7,7 @@ # Contributor: SpepS <dreamspepser at yahoo dot it> pkgname=glfw -pkgver=2.7.4 +pkgver=2.7.5 pkgrel=1 pkgdesc="A free, open source, portable framework for OpenGL application development" arch=('i686' 'x86_64') @@ -16,7 +16,7 @@ license=('custom:ZLIB') depends=('libgl' 'libxrandr') makedepends=('mesa') source=("http://switch.dl.sourceforge.net/sourceforge/$pkgname/$pkgname-$pkgver.tar.bz2") -md5sums=('cf3843ff6b4324a3e8003252f6b20cd0') +md5sums=('b9ef11d08b6283b1b4a274fcf995fd79') build() { cd "$srcdir/$pkgname-$pkgver" diff --git a/community/midori/PKGBUILD b/community/midori/PKGBUILD index de185bc66..22da899e8 100644 --- a/community/midori/PKGBUILD +++ b/community/midori/PKGBUILD @@ -1,10 +1,10 @@ -# $Id: PKGBUILD 67337 2012-03-09 05:57:19Z bpiotrowski $ +# $Id: PKGBUILD 69383 2012-04-15 05:22:45Z bpiotrowski $ # Maintainer: Andreas Radke <andyrtr@archlinux.org> # Contributor: rabyte <rabyte.at.gmail.dot.com> # Contributor: Johannes Krampf <wuischke.at.amule.dot.org> pkgname=midori -pkgver=0.4.4 +pkgver=0.4.5 pkgrel=1 pkgdesc="A lightweight web browser based on Gtk WebKit" arch=('i686' 'x86_64') @@ -15,7 +15,7 @@ depends=('libwebkit>=1.3.13' 'libunique' 'hicolor-icon-theme' 'desktop-file-util makedepends=('libxml2' 'intltool' 'gtk-doc' 'librsvg' 'python2>=2.7.1' 'vala') # 'git' optdepends=('vala: for use in extensions') source=(http://archive.xfce.org/src/apps/$pkgname/${pkgver%.*}/$pkgname-$pkgver.tar.bz2) -md5sums=('a6578ebfd237c0f22cce49113b95f70c') +md5sums=('14288197a1e2251b7c0803e1448daa0e') build() { cd "${srcdir}/${pkgname}-${pkgver}" diff --git a/community/mythtv/PKGBUILD b/community/mythtv/PKGBUILD index 37a58eecd..108d6605c 100644 --- a/community/mythtv/PKGBUILD +++ b/community/mythtv/PKGBUILD @@ -1,4 +1,4 @@ -# $Id: PKGBUILD 69262 2012-04-11 06:53:29Z jconder $ +# $Id: PKGBUILD 69416 2012-04-16 01:26:19Z jconder $ # Maintainer: Jonathan Conder <jonno.conder@gmail.com> # Contributor: Giovanni Scafora <giovanni@archlinux.org> # Contributor: Juergen Hoetzel <juergen@archlinux.org> @@ -7,7 +7,7 @@ pkgname=mythtv pkgver=0.25 -pkgrel=1 +pkgrel=2 epoch=1 pkgdesc="A Homebrew PVR project" arch=('i686' 'x86_64') @@ -24,6 +24,8 @@ optdepends=('glew: for GPU commercial flagging' 'libxml2: to read blu-ray metadata' 'openssl: for AirTunes (RAOP) support' 'xmltv: to download tv listings') +conflicts=('myththemes') +replaces=('myththemes') backup=('etc/conf.d/mythbackend') install='mythtv.install' source=("ftp://ftp.osuosl.org/pub/$pkgname/$pkgname-$pkgver.tar.bz2" @@ -33,7 +35,7 @@ source=("ftp://ftp.osuosl.org/pub/$pkgname/$pkgname-$pkgver.tar.bz2" md5sums=('e49c81de40e279c83dcb1b2aa9a45748' '6090f5f22a8584db80b76cf19869ee41' '62fd98347c56b1d9b795792f83269d25' - '1f72db0586f97a7c3fd3155dfa9a6c6f') + 'ab962d83614cbd0ac11ce3fcc929829d') build() { cd "$srcdir/$pkgname-$pkgver" diff --git a/community/mythtv/mythbackend.conf b/community/mythtv/mythbackend.conf index 15a248450..49bbca877 100644 --- a/community/mythtv/mythbackend.conf +++ b/community/mythtv/mythbackend.conf @@ -1,4 +1,3 @@ -#!/bin/bash # # Copyright (c) by the MythTV Development Team. # diff --git a/community/naev/PKGBUILD b/community/naev/PKGBUILD index d16836288..b5b065b6e 100644 --- a/community/naev/PKGBUILD +++ b/community/naev/PKGBUILD @@ -1,9 +1,9 @@ -# $Id: PKGBUILD 68487 2012-03-26 07:00:35Z svenstaro $ +# $Id: PKGBUILD 69406 2012-04-15 22:34:54Z svenstaro $ # Maintainer: Sven-Hendrik Haase <sh@lutzhaase.com> # Contributor: Johan Rehnberg <cleanrock@gmail.com> pkgname=naev -pkgver=0.5.2 +pkgver=0.5.3 pkgrel=1 pkgdesc='2D action/rpg space game' arch=('i686' 'x86_64' 'mips64el') @@ -12,7 +12,7 @@ license=('GPL3') depends=('openal' 'libvorbis' 'sdl_image' 'sdl_mixer' 'libgl' 'libxml2' 'freetype2' 'libpng' 'naev-data') makedepends=('freeglut') source=("http://downloads.sourceforge.net/sourceforge/${pkgname}/${pkgname}-${pkgver}.tar.bz2") -md5sums=('c23a2ca80553a7d1d75497dc6672e61b') +md5sums=('bec719b3daa33ec190d785120a7b0159') build() { cd "$srcdir/$pkgname-$pkgver" diff --git a/community/sslh/PKGBUILD b/community/sslh/PKGBUILD index 2f882aa11..297188a87 100644 --- a/community/sslh/PKGBUILD +++ b/community/sslh/PKGBUILD @@ -1,22 +1,24 @@ -# $Id$ -# Maintainer: Sebastien Luttringer <seblu+arch@seblu.net> +# $Id: PKGBUILD 69412 2012-04-15 23:37:55Z seblu $ +# Maintainer: Sébastien Luttringer <seblu@aur.archlinux.org> # Contributor: Le_suisse <lesuisse.dev+aur at gmail dot com> # Contributor: Jason Rodriguez <jason-aur@catloaf.net> pkgname=sslh pkgver=1.10 -pkgrel=5 +pkgrel=6 pkgdesc='SSL/SSH/OpenVPN/XMPP/tinc port multiplexer' arch=('i686' 'x86_64' 'mips64el') url='http://www.rutschle.net/tech/sslh.shtml' license=('GPL2') backup=('etc/conf.d/sslh') -source=("http://www.rutschle.net/tech/${pkgname}-${pkgver}.tar.gz" +source=("http://www.rutschle.net/tech/$pkgname-$pkgver.tar.gz" 'sslh.rc' - 'sslh.conf') + 'sslh.conf' + 'sslh.service') md5sums=('bc34e9a4770d634633e70589c72708cc' - '0680f09267c33205acf16ac6d4adf926' - '808199410bd6ab67421bf3544f805d1a') + 'f64da291e97f1a99c33cb6ebf939b95b' + '808199410bd6ab67421bf3544f805d1a' + 'ee8a4fcfc1f6839f7c93deb6f59f7fd6') build() { cd $pkgname-$pkgver @@ -27,10 +29,17 @@ build() { } package() { - install -D -m 755 sslh.rc "${pkgdir}/etc/rc.d/sslh" - install -D -m 644 sslh.conf "${pkgdir}/etc/conf.d/sslh" + # install initscripts + install -Dm 755 sslh.rc "$pkgdir/etc/rc.d/sslh" + install -Dm 644 sslh.conf "$pkgdir/etc/conf.d/sslh" + # install systemd service + install -Dm 644 sslh.service "$pkgdir/usr/lib/systemd/system/sslh.service" + # manually install to have both ssl-fork and ssl-select cd $pkgname-$pkgver - make PREFIX="$pkgdir/usr" install + install -Dm 0755 sslh-fork "$pkgdir/usr/bin/sslh-fork" + install -Dm 0755 sslh-select "$pkgdir/usr/bin/sslh-select" + ln -s sslh-fork "$pkgdir/usr/bin/sslh" + install -Dm 0644 sslh.8.gz "$pkgdir/usr/share/man/man8/sslh.8.gz" } # vim:set ts=2 sw=2 ft=sh et: diff --git a/community/sslh/sslh.rc b/community/sslh/sslh.rc index 05b03bc3e..9c31435a0 100644 --- a/community/sslh/sslh.rc +++ b/community/sslh/sslh.rc @@ -5,7 +5,7 @@ . /etc/conf.d/${0##*/} NAME=sslh -DAEMON=/usr/sbin/sslh +DAEMON=/usr/bin/sslh PID=$(pidof -o %PPID $DAEMON) case "$1" in @@ -24,7 +24,7 @@ case "$1" in $0 start exit 0 ;; - *) + *) echo "usage: ${0##*/} {start|stop|restart}" >&2 ;; esac diff --git a/community/sslh/sslh.service b/community/sslh/sslh.service new file mode 100644 index 000000000..7ccad70e9 --- /dev/null +++ b/community/sslh/sslh.service @@ -0,0 +1,9 @@ +[Unit] +Description=SSL/SSH multiplexer + +[Service] +EnvironmentFile=/etc/conf.d/sslh +ExecStart=/usr/bin/sslh --foreground $DAEMON_OPTS + +[Install] +WantedBy=multi-user.target diff --git a/community/uget/PKGBUILD b/community/uget/PKGBUILD index 01eb6df30..bf103729d 100644 --- a/community/uget/PKGBUILD +++ b/community/uget/PKGBUILD @@ -1,26 +1,23 @@ -# $Id: PKGBUILD 68396 2012-03-24 05:49:50Z bgyorgy $ +# $Id: PKGBUILD 69404 2012-04-15 22:27:21Z bgyorgy $ # Maintainer: Balló György <ballogyor+arch at gmail dot com> pkgname=uget -pkgver=1.8.0 -pkgrel=3 +pkgver=1.8.1 +pkgrel=1 pkgdesc="GTK+ download manager featuring download classification and HTML import" arch=('i686' 'x86_64') url="http://urlget.sourceforge.net/" -license=('GPL') +license=('LGPL') depends=('libnotify' 'gtk3' 'gstreamer0.10' 'curl' 'hicolor-icon-theme' 'xdg-utils') makedepends=('intltool') optdepends=('aria2: alternative backend') install=$pkgname.install source=(http://downloads.sourceforge.net/urlget/$pkgname-$pkgver.tar.gz) -md5sums=('2e0ad66ecdd0104b8fb27b29fdb44df1') +md5sums=('e3fc14042820f0496f12c85c3847c6f8') build() { cd "$srcdir/$pkgname-$pkgver" - # Fix aria2 arguments - sed -i 's/\"--enable-xml-rpc\"/"--enable-rpc"/' uget-gtk/UgSetting.c - ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var \ --disable-appindicator --with-gtk3 make diff --git a/core/expat/PKGBUILD b/core/expat/PKGBUILD index 9a06455d7..a57f076ff 100644 --- a/core/expat/PKGBUILD +++ b/core/expat/PKGBUILD @@ -1,4 +1,4 @@ -# $Id: PKGBUILD 155403 2012-04-03 11:10:06Z allan $ +# $Id: PKGBUILD 156201 2012-04-16 03:41:12Z allan $ # Maintainer: Allan McRae <allan@archlinux.org> # Committer: Judd Vinet <jvinet@zeroflux.org> diff --git a/core/gmp/PKGBUILD b/core/gmp/PKGBUILD index fdf85819b..e2ddd4af4 100644 --- a/core/gmp/PKGBUILD +++ b/core/gmp/PKGBUILD @@ -1,4 +1,4 @@ -# $Id: PKGBUILD 150226 2012-02-15 09:53:48Z allan $ +# $Id: PKGBUILD 156203 2012-04-16 03:46:32Z allan $ # Maintainer: Allan McRae <allan@archlinux.org> # Maintainer: Jan de Groot <jgc@archlinux.org> diff --git a/core/pkg-config/PKGBUILD b/core/pkg-config/PKGBUILD index ed96f3380..edaaa0a5e 100644 --- a/core/pkg-config/PKGBUILD +++ b/core/pkg-config/PKGBUILD @@ -1,4 +1,4 @@ -# $Id: PKGBUILD 142076 2011-11-04 23:36:11Z allan $ +# $Id: PKGBUILD 156205 2012-04-16 03:57:28Z allan $ # Maintainer: Allan McRae <allan@archlinux.org> # Committer: Judd Vinet <jvinet@zeroflux.org> diff --git a/extra/llvm/PKGBUILD b/extra/llvm/PKGBUILD index 49238012b..262416a74 100644 --- a/extra/llvm/PKGBUILD +++ b/extra/llvm/PKGBUILD @@ -1,4 +1,4 @@ -# $Id: PKGBUILD 156067 2012-04-12 16:34:12Z foutrelis $ +# $Id: PKGBUILD 156168 2012-04-15 04:29:31Z heftig $ # Maintainer: Evangelos Foutras <evangelos@foutrelis.com> # Contributor: Jan "heftig" Steffens <jan.steffens@gmail.com> # Contributor: Sebastian Nowicki <sebnow@gmail.com> @@ -11,7 +11,7 @@ pkgname=('llvm' 'llvm-ocaml' 'clang' 'clang-analyzer') pkgver=3.0 -pkgrel=2 +pkgrel=3 arch=('i686' 'x86_64' 'mips64el') url="http://llvm.org/" license=('custom:University of Illinois/NCSA Open Source License') diff --git a/extra/tomcat-native/PKGBUILD b/extra/tomcat-native/PKGBUILD index 9e7ac5f54..37869770f 100644 --- a/extra/tomcat-native/PKGBUILD +++ b/extra/tomcat-native/PKGBUILD @@ -2,16 +2,16 @@ # Contributor: Vitaliy Berdinskikh ur6lad[at]i.ua pkgname=tomcat-native -pkgver=1.1.22 +pkgver=1.1.23 pkgrel=1 pkgdesc="The Apache Tomcat Native Library" arch=('i686' 'x86_64' 'mips64el') url="http://tomcat.apache.org/" -license="Apache" +license=("Apache") depends=('apr' 'openssl') makedepends=('java-environment') source=(http://www.apache.org/dist/tomcat/tomcat-connectors/native/${pkgver}/source/${pkgname}-${pkgver}-src.tar.gz) -md5sums=('44d764f8d99d0454c7337ba9701558ee') +md5sums=('f2a55b5a19adbe491edc98e0c11d9028') build() { cd "${srcdir}/tomcat-native-${pkgver}-src/jni/native" diff --git a/extra/xf86-video-intel/0001-uxa-gen3-Remove-special-casing-of-solid-pictures.patch b/extra/xf86-video-intel/0001-uxa-gen3-Remove-special-casing-of-solid-pictures.patch new file mode 100644 index 000000000..5c3b1d7d6 --- /dev/null +++ b/extra/xf86-video-intel/0001-uxa-gen3-Remove-special-casing-of-solid-pictures.patch @@ -0,0 +1,533 @@ +From fbee314a4194671bfc6dfaa90141498a2f45de4e Mon Sep 17 00:00:00 2001 +From: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon, 27 Feb 2012 16:29:38 +0000 +Subject: [PATCH 1/5] uxa/gen3: Remove special casing of solid pictures + +Fixes use of alpha-groups and opacity masks in cairo. + +Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> +--- + src/i915_render.c | 366 ++++++++++++++++++----------------------------------- + 1 file changed, 122 insertions(+), 244 deletions(-) + +diff --git a/src/i915_render.c b/src/i915_render.c +index 87d2336..6210035 100644 +--- a/src/i915_render.c ++++ b/src/i915_render.c +@@ -257,11 +257,8 @@ i915_check_composite_texture(ScreenPtr screen, PicturePtr picture) + return FALSE; + } + +- if (picture->pSourcePict) { +- SourcePict *source = picture->pSourcePict; +- if (source->type == SourcePictTypeSolidFill) +- return TRUE; +- } ++ if (picture->pSourcePict) ++ return FALSE; + + if (picture->pDrawable) { + int w, h, i; +@@ -387,23 +384,6 @@ static Bool i915_texture_setup(PicturePtr picture, PixmapPtr pixmap, int unit) + } + + static void +-i915_emit_composite_primitive_constant(intel_screen_private *intel, +- int srcX, int srcY, +- int maskX, int maskY, +- int dstX, int dstY, +- int w, int h) +-{ +- OUT_VERTEX(dstX + w); +- OUT_VERTEX(dstY + h); +- +- OUT_VERTEX(dstX); +- OUT_VERTEX(dstY + h); +- +- OUT_VERTEX(dstX); +- OUT_VERTEX(dstY); +-} +- +-static void + i915_emit_composite_primitive_identity_source(intel_screen_private *intel, + int srcX, int srcY, + int maskX, int maskY, +@@ -470,29 +450,6 @@ i915_emit_composite_primitive_affine_source(intel_screen_private *intel, + } + + static void +-i915_emit_composite_primitive_constant_identity_mask(intel_screen_private *intel, +- int srcX, int srcY, +- int maskX, int maskY, +- int dstX, int dstY, +- int w, int h) +-{ +- OUT_VERTEX(dstX + w); +- OUT_VERTEX(dstY + h); +- OUT_VERTEX((maskX + w) * intel->scale_units[0][0]); +- OUT_VERTEX((maskY + h) * intel->scale_units[0][1]); +- +- OUT_VERTEX(dstX); +- OUT_VERTEX(dstY + h); +- OUT_VERTEX(maskX * intel->scale_units[0][0]); +- OUT_VERTEX((maskY + h) * intel->scale_units[0][1]); +- +- OUT_VERTEX(dstX); +- OUT_VERTEX(dstY); +- OUT_VERTEX(maskX * intel->scale_units[0][0]); +- OUT_VERTEX(maskY * intel->scale_units[0][1]); +-} +- +-static void + i915_emit_composite_primitive_identity_source_mask(intel_screen_private *intel, + int srcX, int srcY, + int maskX, int maskY, +@@ -536,63 +493,61 @@ i915_emit_composite_primitive(intel_screen_private *intel, + + per_vertex = 2; /* dest x/y */ + +- if (! intel->render_source_is_solid) { +- src_unit = tex_unit++; +- +- is_affine_src = intel_transform_is_affine(intel->transform[src_unit]); +- if (is_affine_src) { +- if (!intel_get_transformed_coordinates(srcX, srcY, +- intel-> +- transform[src_unit], +- &src_x[0], +- &src_y[0])) +- return; +- +- if (!intel_get_transformed_coordinates(srcX, srcY + h, +- intel-> +- transform[src_unit], +- &src_x[1], +- &src_y[1])) +- return; +- +- if (!intel_get_transformed_coordinates(srcX + w, srcY + h, +- intel-> +- transform[src_unit], +- &src_x[2], +- &src_y[2])) +- return; +- +- per_vertex += 2; /* src x/y */ +- } else { +- if (!intel_get_transformed_coordinates_3d(srcX, srcY, +- intel-> +- transform[src_unit], +- &src_x[0], +- &src_y[0], +- &src_w[0])) +- return; +- +- if (!intel_get_transformed_coordinates_3d(srcX, srcY + h, +- intel-> +- transform[src_unit], +- &src_x[1], +- &src_y[1], +- &src_w[1])) +- return; +- +- if (!intel_get_transformed_coordinates_3d(srcX + w, srcY + h, +- intel-> +- transform[src_unit], +- &src_x[2], +- &src_y[2], +- &src_w[2])) +- return; +- +- per_vertex += 4; /* src x/y/z/w */ +- } ++ src_unit = tex_unit++; ++ ++ is_affine_src = intel_transform_is_affine(intel->transform[src_unit]); ++ if (is_affine_src) { ++ if (!intel_get_transformed_coordinates(srcX, srcY, ++ intel-> ++ transform[src_unit], ++ &src_x[0], ++ &src_y[0])) ++ return; ++ ++ if (!intel_get_transformed_coordinates(srcX, srcY + h, ++ intel-> ++ transform[src_unit], ++ &src_x[1], ++ &src_y[1])) ++ return; ++ ++ if (!intel_get_transformed_coordinates(srcX + w, srcY + h, ++ intel-> ++ transform[src_unit], ++ &src_x[2], ++ &src_y[2])) ++ return; ++ ++ per_vertex += 2; /* src x/y */ ++ } else { ++ if (!intel_get_transformed_coordinates_3d(srcX, srcY, ++ intel-> ++ transform[src_unit], ++ &src_x[0], ++ &src_y[0], ++ &src_w[0])) ++ return; ++ ++ if (!intel_get_transformed_coordinates_3d(srcX, srcY + h, ++ intel-> ++ transform[src_unit], ++ &src_x[1], ++ &src_y[1], ++ &src_w[1])) ++ return; ++ ++ if (!intel_get_transformed_coordinates_3d(srcX + w, srcY + h, ++ intel-> ++ transform[src_unit], ++ &src_x[2], ++ &src_y[2], ++ &src_w[2])) ++ return; ++ ++ per_vertex += 4; /* src x/y/z/w */ + } + +- if (intel->render_mask && ! intel->render_mask_is_solid) { ++ if (intel->render_mask) { + mask_unit = tex_unit++; + + is_affine_mask = intel_transform_is_affine(intel->transform[mask_unit]); +@@ -650,15 +605,13 @@ i915_emit_composite_primitive(intel_screen_private *intel, + + OUT_VERTEX(dstX + w); + OUT_VERTEX(dstY + h); +- if (! intel->render_source_is_solid) { +- OUT_VERTEX(src_x[2] * intel->scale_units[src_unit][0]); +- OUT_VERTEX(src_y[2] * intel->scale_units[src_unit][1]); +- if (!is_affine_src) { ++ OUT_VERTEX(src_x[2] * intel->scale_units[src_unit][0]); ++ OUT_VERTEX(src_y[2] * intel->scale_units[src_unit][1]); ++ if (!is_affine_src) { + OUT_VERTEX(0.0); + OUT_VERTEX(src_w[2]); +- } + } +- if (intel->render_mask && ! intel->render_mask_is_solid) { ++ if (intel->render_mask) { + OUT_VERTEX(mask_x[2] * intel->scale_units[mask_unit][0]); + OUT_VERTEX(mask_y[2] * intel->scale_units[mask_unit][1]); + if (!is_affine_mask) { +@@ -669,15 +622,13 @@ i915_emit_composite_primitive(intel_screen_private *intel, + + OUT_VERTEX(dstX); + OUT_VERTEX(dstY + h); +- if (! intel->render_source_is_solid) { +- OUT_VERTEX(src_x[1] * intel->scale_units[src_unit][0]); +- OUT_VERTEX(src_y[1] * intel->scale_units[src_unit][1]); +- if (!is_affine_src) { ++ OUT_VERTEX(src_x[1] * intel->scale_units[src_unit][0]); ++ OUT_VERTEX(src_y[1] * intel->scale_units[src_unit][1]); ++ if (!is_affine_src) { + OUT_VERTEX(0.0); + OUT_VERTEX(src_w[1]); +- } + } +- if (intel->render_mask && ! intel->render_mask_is_solid) { ++ if (intel->render_mask) { + OUT_VERTEX(mask_x[1] * intel->scale_units[mask_unit][0]); + OUT_VERTEX(mask_y[1] * intel->scale_units[mask_unit][1]); + if (!is_affine_mask) { +@@ -688,15 +639,13 @@ i915_emit_composite_primitive(intel_screen_private *intel, + + OUT_VERTEX(dstX); + OUT_VERTEX(dstY); +- if (! intel->render_source_is_solid) { +- OUT_VERTEX(src_x[0] * intel->scale_units[src_unit][0]); +- OUT_VERTEX(src_y[0] * intel->scale_units[src_unit][1]); +- if (!is_affine_src) { ++ OUT_VERTEX(src_x[0] * intel->scale_units[src_unit][0]); ++ OUT_VERTEX(src_y[0] * intel->scale_units[src_unit][1]); ++ if (!is_affine_src) { + OUT_VERTEX(0.0); + OUT_VERTEX(src_w[0]); +- } + } +- if (intel->render_mask && ! intel->render_mask_is_solid) { ++ if (intel->render_mask) { + OUT_VERTEX(mask_x[0] * intel->scale_units[mask_unit][0]); + OUT_VERTEX(mask_y[0] * intel->scale_units[mask_unit][1]); + if (!is_affine_mask) { +@@ -729,29 +678,11 @@ i915_prepare_composite(int op, PicturePtr source_picture, + intel->render_dest_picture = dest_picture; + intel->render_dest = dest; + +- intel->render_source_is_solid = FALSE; +- if (source_picture->pSourcePict) { +- SourcePict *source = source_picture->pSourcePict; +- if (source->type == SourcePictTypeSolidFill) { +- intel->render_source_is_solid = TRUE; +- intel->render_source_solid = source->solidFill.color; +- } +- } +- if (!intel->render_source_is_solid && !intel_check_pitch_3d(source)) ++ if (!intel_check_pitch_3d(source)) + return FALSE; + +- intel->render_mask_is_solid = FALSE; +- if (mask) { +- if (mask_picture->pSourcePict) { +- SourcePict *source = mask_picture->pSourcePict; +- if (source->type == SourcePictTypeSolidFill) { +- intel->render_mask_is_solid = TRUE; +- intel->render_mask_solid = source->solidFill.color; +- } +- } +- if (!intel->render_mask_is_solid && !intel_check_pitch_3d(mask)) +- return FALSE; +- } ++ if (mask && !intel_check_pitch_3d(mask)) ++ return FALSE; + + if (!intel_check_pitch_3d(dest)) + return FALSE; +@@ -787,31 +718,27 @@ i915_prepare_composite(int op, PicturePtr source_picture, + intel->scale_units[1][1] = -1; + + floats_per_vertex = 2; /* dest x/y */ +- if (! intel->render_source_is_solid) { +- if (!i915_texture_setup(source_picture, source, tex_unit++)) { +- intel_debug_fallback(scrn, "fail to setup src texture\n"); +- return FALSE; +- } +- +- if (intel_transform_is_affine(source_picture->transform)) +- floats_per_vertex += 2; /* src x/y */ +- else +- floats_per_vertex += 4; /* src x/y/z/w */ ++ if (!i915_texture_setup(source_picture, source, tex_unit++)) { ++ intel_debug_fallback(scrn, "fail to setup src texture\n"); ++ return FALSE; + } + +- if (mask != NULL) { +- if (! intel->render_mask_is_solid) { +- if (!i915_texture_setup(mask_picture, mask, tex_unit++)) { +- intel_debug_fallback(scrn, +- "fail to setup mask texture\n"); +- return FALSE; +- } ++ if (intel_transform_is_affine(source_picture->transform)) ++ floats_per_vertex += 2; /* src x/y */ ++ else ++ floats_per_vertex += 4; /* src x/y/z/w */ + +- if (intel_transform_is_affine(mask_picture->transform)) +- floats_per_vertex += 2; /* mask x/y */ +- else +- floats_per_vertex += 4; /* mask x/y/z/w */ ++ if (mask != NULL) { ++ if (!i915_texture_setup(mask_picture, mask, tex_unit++)) { ++ intel_debug_fallback(scrn, ++ "fail to setup mask texture\n"); ++ return FALSE; + } ++ ++ if (intel_transform_is_affine(mask_picture->transform)) ++ floats_per_vertex += 2; /* mask x/y */ ++ else ++ floats_per_vertex += 4; /* mask x/y/z/w */ + } + + intel->i915_render_state.op = op; +@@ -827,17 +754,13 @@ i915_prepare_composite(int op, PicturePtr source_picture, + + intel->prim_emit = i915_emit_composite_primitive; + if (!mask) { +- if (intel->render_source_is_solid) +- intel->prim_emit = i915_emit_composite_primitive_constant; +- else if (intel->transform[0] == NULL) ++ if (intel->transform[0] == NULL) + intel->prim_emit = i915_emit_composite_primitive_identity_source; + else if (intel_transform_is_affine(intel->transform[0])) + intel->prim_emit = i915_emit_composite_primitive_affine_source; + } else { + if (intel->transform[0] == NULL) { +- if (intel->render_source_is_solid) +- intel->prim_emit = i915_emit_composite_primitive_constant_identity_mask; +- else if (intel->transform[1] == NULL) ++ if (intel->transform[1] == NULL) + intel->prim_emit = i915_emit_composite_primitive_identity_source_mask; + } + } +@@ -856,39 +779,25 @@ i915_composite_emit_shader(intel_screen_private *intel, CARD8 op) + PicturePtr mask_picture = intel->render_mask_picture; + PixmapPtr mask = intel->render_mask; + int src_reg, mask_reg; +- Bool is_solid_src, is_solid_mask; + Bool dest_is_alpha = PIXMAN_FORMAT_RGB(intel->render_dest_picture->format) == 0; +- int tex_unit, t; + FS_LOCALS(); + +- is_solid_src = intel->render_source_is_solid; +- is_solid_mask = intel->render_mask_is_solid; +- + FS_BEGIN(); + + /* Declare the registers necessary for our program. */ +- t = 0; +- if (is_solid_src) { +- i915_fs_dcl(FS_T8); +- src_reg = FS_T8; +- } else { +- i915_fs_dcl(FS_T0); +- i915_fs_dcl(FS_S0); +- t++; +- } ++ i915_fs_dcl(FS_T0); ++ i915_fs_dcl(FS_S0); + if (!mask) { + /* No mask, so load directly to output color */ +- if (! is_solid_src) { +- if (dest_is_alpha) +- src_reg = FS_R0; +- else +- src_reg = FS_OC; ++ if (dest_is_alpha) ++ src_reg = FS_R0; ++ else ++ src_reg = FS_OC; + +- if (intel_transform_is_affine(intel->transform[0])) +- i915_fs_texld(src_reg, FS_S0, FS_T0); +- else +- i915_fs_texldp(src_reg, FS_S0, FS_T0); +- } ++ if (intel_transform_is_affine(intel->transform[0])) ++ i915_fs_texld(src_reg, FS_S0, FS_T0); ++ else ++ i915_fs_texldp(src_reg, FS_S0, FS_T0); + + if (src_reg != FS_OC) { + if (dest_is_alpha) +@@ -897,35 +806,24 @@ i915_composite_emit_shader(intel_screen_private *intel, CARD8 op) + i915_fs_mov(FS_OC, i915_fs_operand_reg(src_reg)); + } + } else { +- if (is_solid_mask) { +- i915_fs_dcl(FS_T9); +- mask_reg = FS_T9; +- } else { +- i915_fs_dcl(FS_T0 + t); +- i915_fs_dcl(FS_S0 + t); +- } ++ i915_fs_dcl(FS_T1); ++ i915_fs_dcl(FS_S1); + +- tex_unit = 0; +- if (! is_solid_src) { +- /* Load the source_picture texel */ +- if (intel_transform_is_affine(intel->transform[tex_unit])) +- i915_fs_texld(FS_R0, FS_S0, FS_T0); +- else +- i915_fs_texldp(FS_R0, FS_S0, FS_T0); ++ /* Load the source_picture texel */ ++ if (intel_transform_is_affine(intel->transform[0])) ++ i915_fs_texld(FS_R0, FS_S0, FS_T0); ++ else ++ i915_fs_texldp(FS_R0, FS_S0, FS_T0); + +- src_reg = FS_R0; +- tex_unit++; +- } ++ src_reg = FS_R0; + +- if (! is_solid_mask) { +- /* Load the mask_picture texel */ +- if (intel_transform_is_affine(intel->transform[tex_unit])) +- i915_fs_texld(FS_R1, FS_S0 + t, FS_T0 + t); +- else +- i915_fs_texldp(FS_R1, FS_S0 + t, FS_T0 + t); ++ /* Load the mask_picture texel */ ++ if (intel_transform_is_affine(intel->transform[1])) ++ i915_fs_texld(FS_R1, FS_S1, FS_T1); ++ else ++ i915_fs_texldp(FS_R1, FS_S1, FS_T1); + +- mask_reg = FS_R1; +- } ++ mask_reg = FS_R1; + + if (dest_is_alpha) { + i915_fs_mul(FS_OC, +@@ -972,7 +870,6 @@ static void i915_emit_composite_setup(ScrnInfoPtr scrn) + PicturePtr dest_picture = intel->render_dest_picture; + PixmapPtr mask = intel->render_mask; + PixmapPtr dest = intel->render_dest; +- Bool is_solid_src, is_solid_mask; + int tex_count, t; + + intel->needs_render_state_emit = FALSE; +@@ -980,12 +877,7 @@ static void i915_emit_composite_setup(ScrnInfoPtr scrn) + IntelEmitInvarientState(scrn); + intel->last_3d = LAST_3D_RENDER; + +- is_solid_src = intel->render_source_is_solid; +- is_solid_mask = intel->render_mask_is_solid; +- +- tex_count = 0; +- tex_count += ! is_solid_src; +- tex_count += mask && ! is_solid_mask; ++ tex_count = 1 + (mask != NULL); + + assert(intel->in_batch_atomic); + +@@ -1007,15 +899,6 @@ static void i915_emit_composite_setup(ScrnInfoPtr scrn) + } + } + +- if (is_solid_src) { +- OUT_BATCH (_3DSTATE_DFLT_DIFFUSE_CMD); +- OUT_BATCH (intel->render_source_solid); +- } +- if (mask && is_solid_mask) { +- OUT_BATCH (_3DSTATE_DFLT_SPEC_CMD); +- OUT_BATCH (intel->render_mask_solid); +- } +- + /* BUF_INFO is an implicit flush, so avoid if the target has not changed. + * XXX However for reasons unfathomed, correct rendering in KDE requires + * at least a MI_FLUSH | INHIBIT_RENDER_CACHE_FLUSH here. +@@ -1058,20 +941,15 @@ static void i915_emit_composite_setup(ScrnInfoPtr scrn) + uint32_t ss2; + + ss2 = ~0; +- t = 0; +- if (! is_solid_src) { +- ss2 &= ~S2_TEXCOORD_FMT(t, TEXCOORDFMT_NOT_PRESENT); +- ss2 |= S2_TEXCOORD_FMT(t, +- intel_transform_is_affine(intel->transform[t]) ? +- TEXCOORDFMT_2D : TEXCOORDFMT_4D); +- t++; +- } +- if (mask && ! is_solid_mask) { +- ss2 &= ~S2_TEXCOORD_FMT(t, TEXCOORDFMT_NOT_PRESENT); +- ss2 |= S2_TEXCOORD_FMT(t, +- intel_transform_is_affine(intel->transform[t]) ? ++ ss2 &= ~S2_TEXCOORD_FMT(0, TEXCOORDFMT_NOT_PRESENT); ++ ss2 |= S2_TEXCOORD_FMT(0, ++ intel_transform_is_affine(intel->transform[0]) ? ++ TEXCOORDFMT_2D : TEXCOORDFMT_4D); ++ if (mask) { ++ ss2 &= ~S2_TEXCOORD_FMT(1, TEXCOORDFMT_NOT_PRESENT); ++ ss2 |= S2_TEXCOORD_FMT(1, ++ intel_transform_is_affine(intel->transform[1]) ? + TEXCOORDFMT_2D : TEXCOORDFMT_4D); +- t++; + } + + if (intel->needs_render_ca_pass) { +-- +1.7.10 + diff --git a/extra/xf86-video-intel/0002-uxa-Defer-the-call-to-EnterVT-till-after-outputs-are.patch b/extra/xf86-video-intel/0002-uxa-Defer-the-call-to-EnterVT-till-after-outputs-are.patch new file mode 100644 index 000000000..89f43459d --- /dev/null +++ b/extra/xf86-video-intel/0002-uxa-Defer-the-call-to-EnterVT-till-after-outputs-are.patch @@ -0,0 +1,50 @@ +From fd25a4586b0667b1591d85b23daaa99464e9b0d8 Mon Sep 17 00:00:00 2001 +From: Chris Wilson <chris@chris-wilson.co.uk> +Date: Mon, 19 Mar 2012 15:51:43 +0000 +Subject: [PATCH 2/5] uxa: Defer the call to EnterVT till after outputs are + initialised + +We need to do this apparently or else we never perform the VT switch. +However, we can not do it too early, especially not before we have +finished intialising the outputs. + +Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=47395 +Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> +--- + src/intel_driver.c | 13 +++++-------- + 1 file changed, 5 insertions(+), 8 deletions(-) + +diff --git a/src/intel_driver.c b/src/intel_driver.c +index e2e43fa..ff29754 100644 +--- a/src/intel_driver.c ++++ b/src/intel_driver.c +@@ -1013,13 +1013,6 @@ I830ScreenInit(int scrnIndex, ScreenPtr screen, int argc, char **argv) + "Hardware cursor initialization failed\n"); + } + +- /* Must force it before EnterVT, so we are in control of VT and +- * later memory should be bound when allocating, e.g rotate_mem */ +- scrn->vtSema = TRUE; +- +- if (!I830EnterVT(scrnIndex, 0)) +- return FALSE; +- + intel->BlockHandler = screen->BlockHandler; + screen->BlockHandler = I830BlockHandler; + +@@ -1092,7 +1085,11 @@ I830ScreenInit(int scrnIndex, ScreenPtr screen, int argc, char **argv) + I830UeventInit(scrn); + #endif + +- return TRUE; ++ /* Must force it before EnterVT, so we are in control of VT and ++ * later memory should be bound when allocating, e.g rotate_mem */ ++ scrn->vtSema = TRUE; ++ ++ return I830EnterVT(scrnIndex, 0); + } + + static void i830AdjustFrame(int scrnIndex, int x, int y, int flags) +-- +1.7.10 + diff --git a/extra/xf86-video-intel/0003-uxa-Remove-hook-for-CompositeRectangles.patch b/extra/xf86-video-intel/0003-uxa-Remove-hook-for-CompositeRectangles.patch new file mode 100644 index 000000000..c1c4d55e8 --- /dev/null +++ b/extra/xf86-video-intel/0003-uxa-Remove-hook-for-CompositeRectangles.patch @@ -0,0 +1,255 @@ +From b669f171adece9df7f0c340c664b70e94118a55e Mon Sep 17 00:00:00 2001 +From: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri, 23 Mar 2012 14:56:06 +0000 +Subject: [PATCH 3/5] uxa: Remove hook for CompositeRectangles + +It was broken and not flushing damage correctly. With the +improvements made to the kernel, it is no longer a significant advantage +per se and not worth its additional complexity. + +Reported-by: Tilman Sauerbeck <tilman@code-monkey.de> +Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=32547 +Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> +--- + uxa/uxa-priv.h | 1 - + uxa/uxa-render.c | 189 ------------------------------------------------------ + uxa/uxa.c | 4 -- + 3 files changed, 194 deletions(-) + +diff --git a/uxa/uxa-priv.h b/uxa/uxa-priv.h +index 0de45f5..b24ec4f 100644 +--- a/uxa/uxa-priv.h ++++ b/uxa/uxa-priv.h +@@ -123,7 +123,6 @@ typedef struct { + BitmapToRegionProcPtr SavedBitmapToRegion; + #ifdef RENDER + CompositeProcPtr SavedComposite; +- CompositeRectsProcPtr SavedCompositeRects; + TrianglesProcPtr SavedTriangles; + GlyphsProcPtr SavedGlyphs; + TrapezoidsProcPtr SavedTrapezoids; +diff --git a/uxa/uxa-render.c b/uxa/uxa-render.c +index 877b286..1e88c5d 100644 +--- a/uxa/uxa-render.c ++++ b/uxa/uxa-render.c +@@ -947,195 +947,6 @@ uxa_acquire_mask(ScreenPtr screen, + out_x, out_y); + } + +-static Bool +-_pixman_region_init_rectangles(pixman_region16_t *region, +- int num_rects, +- xRectangle *rects, +- int tx, int ty) +-{ +- pixman_box16_t stack_boxes[64], *boxes = stack_boxes; +- pixman_bool_t ret; +- int i; +- +- if (num_rects > sizeof(stack_boxes) / sizeof(stack_boxes[0])) { +- boxes = malloc(sizeof(pixman_box16_t) * num_rects); +- if (boxes == NULL) +- return FALSE; +- } +- +- for (i = 0; i < num_rects; i++) { +- boxes[i].x1 = rects[i].x + tx; +- boxes[i].y1 = rects[i].y + ty; +- boxes[i].x2 = rects[i].x + tx + rects[i].width; +- boxes[i].y2 = rects[i].y + ty + rects[i].height; +- } +- +- ret = pixman_region_init_rects(region, boxes, num_rects); +- +- if (boxes != stack_boxes) +- free(boxes); +- +- return ret; +-} +- +-void +-uxa_solid_rects (CARD8 op, +- PicturePtr dst, +- xRenderColor *color, +- int num_rects, +- xRectangle *rects) +-{ +- ScreenPtr screen = dst->pDrawable->pScreen; +- uxa_screen_t *uxa_screen = uxa_get_screen(screen); +- PixmapPtr dst_pixmap, src_pixmap = NULL; +- pixman_region16_t region; +- pixman_box16_t *boxes, *extents; +- PicturePtr src; +- int dst_x, dst_y; +- int num_boxes; +- +- if (!pixman_region_not_empty(dst->pCompositeClip)) +- return; +- +- if (uxa_screen->info->flags & UXA_USE_GLAMOR) { +- int ok; +- +- uxa_picture_prepare_access(dst, UXA_GLAMOR_ACCESS_RW); +- ok = glamor_composite_rects_nf(op, dst, color, +- num_rects, rects); +- uxa_picture_finish_access(dst, UXA_GLAMOR_ACCESS_RW); +- +- if (!ok) +- goto fallback; +- +- return; +- } +- +- if (dst->alphaMap) +- goto fallback; +- +- dst_pixmap = uxa_get_offscreen_pixmap(dst->pDrawable, &dst_x, &dst_y); +- if (!dst_pixmap) +- goto fallback; +- +- if (!_pixman_region_init_rectangles(®ion, +- num_rects, rects, +- dst->pDrawable->x, dst->pDrawable->y)) +- goto fallback; +- +- if (!pixman_region_intersect(®ion, ®ion, dst->pCompositeClip)) { +- pixman_region_fini(®ion); +- return; +- } +- +- pixman_region_translate(®ion, dst_x, dst_y); +- boxes = pixman_region_rectangles(®ion, &num_boxes); +- extents = pixman_region_extents (®ion); +- +- if (op == PictOpClear) +- color->red = color->green = color->blue = color->alpha = 0; +- if (color->alpha >= 0xff00 && op == PictOpOver) { +- color->alpha = 0xffff; +- op = PictOpSrc; +- } +- +- /* Using GEM, the relocation costs outweigh the advantages of the blitter */ +- if (num_boxes == 1 && (op == PictOpSrc || op == PictOpClear)) { +- CARD32 pixel; +- +-try_solid: +- if (uxa_screen->info->check_solid && +- !uxa_screen->info->check_solid(&dst_pixmap->drawable, GXcopy, FB_ALLONES)) +- goto err_region; +- +- if (!uxa_get_pixel_from_rgba(&pixel, +- color->red, +- color->green, +- color->blue, +- color->alpha, +- dst->format)) +- goto err_region; +- +- if (!uxa_screen->info->prepare_solid(dst_pixmap, GXcopy, FB_ALLONES, pixel)) +- goto err_region; +- +- while (num_boxes--) { +- uxa_screen->info->solid(dst_pixmap, +- boxes->x1, boxes->y1, +- boxes->x2, boxes->y2); +- boxes++; +- } +- +- uxa_screen->info->done_solid(dst_pixmap); +- } else { +- int error; +- +- src = CreateSolidPicture(0, color, &error); +- if (!src) +- goto err_region; +- +- if (!uxa_screen->info->check_composite(op, src, NULL, dst, +- extents->x2 - extents->x1, +- extents->y2 - extents->y1)) { +- if (op == PictOpSrc || op == PictOpClear) { +- FreePicture(src, 0); +- goto try_solid; +- } +- +- goto err_src; +- } +- +- if (!uxa_screen->info->check_composite_texture || +- !uxa_screen->info->check_composite_texture(screen, src)) { +- PicturePtr solid; +- int src_off_x, src_off_y; +- +- solid = uxa_acquire_solid(screen, src->pSourcePict); +- if (!solid) +- goto err_src; +- FreePicture(src, 0); +- +- src = solid; +- src_pixmap = uxa_get_offscreen_pixmap(src->pDrawable, +- &src_off_x, &src_off_y); +- if (!src_pixmap) +- goto err_src; +- } +- +- if (!uxa_screen->info->prepare_composite(op, src, NULL, dst, src_pixmap, NULL, dst_pixmap)) +- goto err_src; +- +- while (num_boxes--) { +- uxa_screen->info->composite(dst_pixmap, +- 0, 0, 0, 0, +- boxes->x1, +- boxes->y1, +- boxes->x2 - boxes->x1, +- boxes->y2 - boxes->y1); +- boxes++; +- } +- +- uxa_screen->info->done_composite(dst_pixmap); +- FreePicture(src, 0); +- } +- +- /* XXX xserver-1.8: CompositeRects is not tracked by Damage, so we must +- * manually append the damaged regions ourselves. +- */ +- pixman_region_translate(®ion, -dst_x, -dst_y); +- DamageRegionAppend(dst->pDrawable, ®ion); +- +- pixman_region_fini(®ion); +- return; +- +-err_src: +- FreePicture(src, 0); +-err_region: +- pixman_region_fini(®ion); +-fallback: +- uxa_screen->SavedCompositeRects(op, dst, color, num_rects, rects); +-} +- + static int + uxa_try_driver_composite(CARD8 op, + PicturePtr pSrc, +diff --git a/uxa/uxa.c b/uxa/uxa.c +index eb2ae03..b4a1da6 100644 +--- a/uxa/uxa.c ++++ b/uxa/uxa.c +@@ -407,7 +407,6 @@ static Bool uxa_close_screen(int i, ScreenPtr pScreen) + #ifdef RENDER + if (ps) { + ps->Composite = uxa_screen->SavedComposite; +- ps->CompositeRects = uxa_screen->SavedCompositeRects; + ps->Glyphs = uxa_screen->SavedGlyphs; + ps->Trapezoids = uxa_screen->SavedTrapezoids; + ps->AddTraps = uxa_screen->SavedAddTraps; +@@ -536,9 +535,6 @@ Bool uxa_driver_init(ScreenPtr screen, uxa_driver_t * uxa_driver) + uxa_screen->SavedComposite = ps->Composite; + ps->Composite = uxa_composite; + +- uxa_screen->SavedCompositeRects = ps->CompositeRects; +- ps->CompositeRects = uxa_solid_rects; +- + uxa_screen->SavedGlyphs = ps->Glyphs; + ps->Glyphs = uxa_glyphs; + +-- +1.7.10 + diff --git a/extra/xf86-video-intel/0004-uxa-Remove-broken-render-glyphs-to-dst.patch b/extra/xf86-video-intel/0004-uxa-Remove-broken-render-glyphs-to-dst.patch new file mode 100644 index 000000000..3bf15c1a1 --- /dev/null +++ b/extra/xf86-video-intel/0004-uxa-Remove-broken-render-glyphs-to-dst.patch @@ -0,0 +1,391 @@ +From 1aee0af6d8296c108b6b4eb1bcf583aae385d22d Mon Sep 17 00:00:00 2001 +From: Chris Wilson <chris@chris-wilson.co.uk> +Date: Fri, 30 Mar 2012 12:47:21 +0100 +Subject: [PATCH 4/5] uxa: Remove broken render glyphs-to-dst + +Reported-by: Vincent Untz <vuntz@gnome.org> +Reported-by: Robert Bradford <robert.bradford@intel.com> +Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=48045 +Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> +--- + uxa/uxa-glyphs.c | 330 +++--------------------------------------------------- + 1 file changed, 17 insertions(+), 313 deletions(-) + +diff --git a/uxa/uxa-glyphs.c b/uxa/uxa-glyphs.c +index 6172f2f..b754f4e 100644 +--- a/uxa/uxa-glyphs.c ++++ b/uxa/uxa-glyphs.c +@@ -663,190 +663,6 @@ uxa_glyph_cache(ScreenPtr screen, GlyphPtr glyph, int *out_x, int *out_y) + return cache->picture; + } + +-static int +-uxa_glyphs_to_dst(CARD8 op, +- PicturePtr pSrc, +- PicturePtr pDst, +- INT16 src_x, INT16 src_y, +- INT16 xDst, INT16 yDst, +- int nlist, GlyphListPtr list, GlyphPtr * glyphs, +- BoxPtr extents) +-{ +- ScreenPtr screen = pDst->pDrawable->pScreen; +- uxa_screen_t *uxa_screen = uxa_get_screen(screen); +- PixmapPtr src_pixmap, dst_pixmap; +- PicturePtr localSrc, glyph_atlas; +- int x, y, n; +- BoxRec box; +- +- if (uxa_screen->info->check_composite_texture && +- uxa_screen->info->check_composite_texture(screen, pSrc)) { +- if (pSrc->pDrawable) { +- int src_off_x, src_off_y; +- +- src_pixmap = uxa_get_offscreen_pixmap(pSrc->pDrawable, &src_off_x, &src_off_y); +- if (src_pixmap == NULL) +- return -1; +- +- src_x += pSrc->pDrawable->x + src_off_x; +- src_y += pSrc->pDrawable->y + src_off_y; +- } else { +- src_pixmap = NULL; +- } +- localSrc = pSrc; +- } else { +- int width, height; +- +- if (extents == NULL) { +- uxa_glyph_extents(nlist, list, glyphs, &box); +- extents = &box; +- } +- +- width = extents->x2 - extents->x1; +- height = extents->y2 - extents->y1; +- if (width == 0 || height == 0) +- return 0; +- +- if (pSrc->pDrawable) { +- int src_off_x, src_off_y; +- +- src_off_x = extents->x1 - xDst; +- src_off_y = extents->y1 - yDst; +- localSrc = uxa_acquire_drawable(screen, pSrc, +- src_x + src_off_x, src_y + src_off_y, +- width, height, +- &src_x, &src_y); +- if (uxa_screen->info->check_composite_texture && +- !uxa_screen->info->check_composite_texture(screen, localSrc)) { +- if (localSrc != pSrc) +- FreePicture(localSrc, 0); +- return -1; +- } +- +- src_pixmap = uxa_get_offscreen_pixmap(localSrc->pDrawable, &src_off_x, &src_off_y); +- if (src_pixmap == NULL) { +- if (localSrc != pSrc) +- FreePicture(localSrc, 0); +- return -1; +- } +- +- src_x += localSrc->pDrawable->x + src_off_x; +- src_y += localSrc->pDrawable->y + src_off_y; +- } else { +- localSrc = uxa_acquire_pattern(screen, pSrc, +- PICT_a8r8g8b8, x, y, width, height); +- if (!localSrc) +- return 1; +- +- src_pixmap = uxa_get_drawable_pixmap(localSrc->pDrawable); +- if (src_pixmap == NULL) { +- FreePicture(localSrc, 0); +- return -1; +- } +- +- src_x = src_y = 0; +- } +- } +- +- dst_pixmap = uxa_get_offscreen_pixmap(pDst->pDrawable, &x, &y); +- x += xDst + pDst->pDrawable->x - list->xOff; +- y += yDst + pDst->pDrawable->y - list->yOff; +- +- glyph_atlas = NULL; +- while (nlist--) { +- x += list->xOff; +- y += list->yOff; +- n = list->len; +- while (n--) { +- GlyphPtr glyph = *glyphs++; +- PicturePtr this_atlas; +- int mask_x, mask_y, nrect; +- struct uxa_glyph *priv; +- BoxPtr rects; +- +- if (glyph->info.width == 0 || glyph->info.height == 0) +- goto next_glyph; +- +- priv = uxa_glyph_get_private(glyph); +- if (priv != NULL) { +- mask_x = priv->x; +- mask_y = priv->y; +- this_atlas = priv->cache->picture; +- } else { +- if (glyph_atlas) { +- uxa_screen->info->done_composite(dst_pixmap); +- glyph_atlas = NULL; +- } +- this_atlas = uxa_glyph_cache(screen, glyph, &mask_x, &mask_y); +- if (this_atlas == NULL) { +- /* no cache for this glyph */ +- this_atlas = GlyphPicture(glyph)[screen->myNum]; +- mask_x = mask_y = 0; +- } +- } +- +- if (this_atlas != glyph_atlas) { +- PixmapPtr mask_pixmap; +- +- if (glyph_atlas) +- uxa_screen->info->done_composite(dst_pixmap); +- +- mask_pixmap = +- uxa_get_drawable_pixmap(this_atlas->pDrawable); +- if (!uxa_pixmap_is_offscreen(mask_pixmap) || +- !uxa_screen->info->prepare_composite(op, +- localSrc, this_atlas, pDst, +- src_pixmap, mask_pixmap, dst_pixmap)) +- return -1; +- +- glyph_atlas = this_atlas; +- } +- +- rects = REGION_RECTS(pDst->pCompositeClip); +- nrect = REGION_NUM_RECTS(pDst->pCompositeClip); +- while (nrect--) { +- int x1 = x - glyph->info.x, dx = 0; +- int y1 = y - glyph->info.y, dy = 0; +- int x2 = x1 + glyph->info.width; +- int y2 = y1 + glyph->info.height; +- +- if (rects->y1 >= y2) +- break; +- +- if (x1 < rects->x1) +- dx = rects->x1 - x1, x1 = rects->x1; +- if (x2 > rects->x2) +- x2 = rects->x2; +- if (y1 < rects->y1) +- dy = rects->y1 - y1, y1 = rects->y1; +- if (y2 > rects->y2) +- y2 = rects->y2; +- +- if (x1 < x2 && y1 < y2) { +- uxa_screen->info->composite(dst_pixmap, +- x1 + src_x, y1 + src_y, +- dx + mask_x, dy + mask_y, +- x1, y1, +- x2 - x1, y2 - y1); +- } +- rects++; +- } +- +-next_glyph: +- x += glyph->info.xOff; +- y += glyph->info.yOff; +- } +- list++; +- } +- if (glyph_atlas) +- uxa_screen->info->done_composite(dst_pixmap); +- +- if (localSrc != pSrc) +- FreePicture(localSrc, 0); +- +- return 0; +-} +- + static void + uxa_clear_pixmap(ScreenPtr screen, + uxa_screen_t *uxa_screen, +@@ -894,37 +710,30 @@ uxa_glyphs_via_mask(CARD8 op, + PicturePtr pDst, + PictFormatPtr maskFormat, + INT16 xSrc, INT16 ySrc, +- INT16 xDst, INT16 yDst, +- int nlist, GlyphListPtr list, GlyphPtr * glyphs, +- BoxPtr extents) ++ int nlist, GlyphListPtr list, GlyphPtr * glyphs) + { + ScreenPtr screen = pDst->pDrawable->pScreen; + uxa_screen_t *uxa_screen = uxa_get_screen(screen); + CARD32 component_alpha; + PixmapPtr pixmap; + PicturePtr glyph_atlas, mask; ++ int xDst = list->xOff, yDst = list->yOff; + int x, y, width, height; + int dst_off_x, dst_off_y; + int n, error; + BoxRec box; + +- if (!extents) { +- uxa_glyph_extents(nlist, list, glyphs, &box); ++ uxa_glyph_extents(nlist, list, glyphs, &box); ++ if (box.x2 <= box.x1 || box.y2 <= box.y1) ++ return 0; + +- if (box.x2 <= box.x1 || box.y2 <= box.y1) +- return 0; ++ dst_off_x = box.x1; ++ dst_off_y = box.y1; + +- extents = &box; +- dst_off_x = box.x1; +- dst_off_y = box.y1; +- } else { +- dst_off_x = dst_off_y = 0; +- } +- +- width = extents->x2 - extents->x1; +- height = extents->y2 - extents->y1; +- x = -extents->x1; +- y = -extents->y1; ++ width = box.x2 - box.x1; ++ height = box.y2 - box.y1; ++ x = -box.x1; ++ y = -box.y1; + + if (maskFormat->depth == 1) { + PictFormatPtr a8Format = +@@ -1061,11 +870,6 @@ uxa_glyphs(CARD8 op, + { + ScreenPtr screen = pDst->pDrawable->pScreen; + uxa_screen_t *uxa_screen = uxa_get_screen(screen); +- int xDst = list->xOff, yDst = list->yOff; +- BoxRec extents = { 0, 0, 0, 0 }; +- Bool have_extents = FALSE; +- int width, height, ret; +- PicturePtr localDst = pDst; + + if (uxa_screen->info->flags & UXA_USE_GLAMOR) { + int ok; +@@ -1128,112 +932,12 @@ fallback: + } + } + +- if (!maskFormat && +- uxa_screen->info->check_composite_target && +- !uxa_screen->info->check_composite_target(uxa_get_drawable_pixmap(pDst->pDrawable))) { +- int depth = pDst->pDrawable->depth; +- PixmapPtr pixmap; +- int x, y, error; +- GCPtr gc; +- +- pixmap = uxa_get_drawable_pixmap(pDst->pDrawable); +- if (uxa_screen->info->check_copy && +- !uxa_screen->info->check_copy(pixmap, pixmap, GXcopy, FB_ALLONES)) +- goto fallback; +- +- uxa_glyph_extents(nlist, list, glyphs, &extents); +- +- /* clip against dst bounds */ +- if (extents.x1 < 0) +- extents.x1 = 0; +- if (extents.y1 < 0) +- extents.y1 = 0; +- if (extents.x2 > pDst->pDrawable->width) +- extents.x2 = pDst->pDrawable->width; +- if (extents.y2 > pDst->pDrawable->height) +- extents.y2 = pDst->pDrawable->height; +- +- if (extents.x2 <= extents.x1 || extents.y2 <= extents.y1) +- return; +- width = extents.x2 - extents.x1; +- height = extents.y2 - extents.y1; +- x = -extents.x1; +- y = -extents.y1; +- have_extents = TRUE; +- +- xDst += x; +- yDst += y; +- +- pixmap = screen->CreatePixmap(screen, +- width, height, depth, +- CREATE_PIXMAP_USAGE_SCRATCH); +- if (!pixmap) +- return; +- +- if (!uxa_pixmap_is_offscreen(pixmap)) { +- screen->DestroyPixmap(pixmap); +- goto fallback; +- } +- +- gc = GetScratchGC(depth, screen); +- if (!gc) { +- screen->DestroyPixmap(pixmap); +- return; +- } +- +- ValidateGC(&pixmap->drawable, gc); +- gc->ops->CopyArea(pDst->pDrawable, &pixmap->drawable, gc, +- extents.x1, extents.y1, +- width, height, +- 0, 0); +- FreeScratchGC(gc); +- +- localDst = CreatePicture(0, &pixmap->drawable, +- PictureMatchFormat(screen, depth, pDst->format), +- 0, 0, serverClient, &error); +- screen->DestroyPixmap(pixmap); +- +- if (!localDst) +- return; +- +- ValidatePicture(localDst); +- } +- +- if (maskFormat) { +- ret = uxa_glyphs_via_mask(op, +- pSrc, localDst, maskFormat, +- xSrc, ySrc, +- xDst, yDst, +- nlist, list, glyphs, +- have_extents ? &extents : NULL); +- } else { +- ret = uxa_glyphs_to_dst(op, +- pSrc, localDst, +- xSrc, ySrc, +- xDst, yDst, +- nlist, list, glyphs, +- have_extents ? &extents : NULL); +- } +- if (ret) { +- if (localDst != pDst) +- FreePicture(localDst, 0); +- ++ if (!maskFormat) + goto fallback; +- } + +- if (localDst != pDst) { +- GCPtr gc; +- +- gc = GetScratchGC(pDst->pDrawable->depth, screen); +- if (gc) { +- ValidateGC(pDst->pDrawable, gc); +- gc->ops->CopyArea(localDst->pDrawable, pDst->pDrawable, gc, +- 0, 0, +- width, height, +- extents.x1, extents.y1); +- FreeScratchGC(gc); +- } +- +- FreePicture(localDst, 0); +- } ++ if (uxa_glyphs_via_mask(op, ++ pSrc, pDst, maskFormat, ++ xSrc, ySrc, ++ nlist, list, glyphs)) ++ goto fallback; + } +-- +1.7.10 + diff --git a/extra/xf86-video-intel/0005-uxa-Fix-leak-of-glyph-mask-for-unhandled-glyph-compo.patch b/extra/xf86-video-intel/0005-uxa-Fix-leak-of-glyph-mask-for-unhandled-glyph-compo.patch new file mode 100644 index 000000000..865679078 --- /dev/null +++ b/extra/xf86-video-intel/0005-uxa-Fix-leak-of-glyph-mask-for-unhandled-glyph-compo.patch @@ -0,0 +1,40 @@ +From af5c698fd43308c3b799783b662b9cd871f90a62 Mon Sep 17 00:00:00 2001 +From: Chris Wilson <chris@chris-wilson.co.uk> +Date: Sat, 14 Apr 2012 19:03:25 +0100 +Subject: [PATCH 5/5] uxa: Fix leak of glyph mask for unhandled glyph + composition + +==1401== 7,344 bytes in 34 blocks are possibly lost in loss record 570 of 587 +==1401== at 0x4027034: calloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) +==1401== by 0x8BE5150: drm_intel_gem_bo_alloc_internal (intel_bufmgr_gem.c:689) +==1401== by 0x899FC04: intel_uxa_create_pixmap (intel_uxa.c:1077) +==1401== by 0x89C2C41: uxa_glyphs (uxa-glyphs.c:254) +==1401== by 0x21F05E: damageGlyphs (damage.c:647) +==1401== by 0x218E06: ProcRenderCompositeGlyphs (render.c:1434) +==1401== by 0x15AA40: Dispatch (dispatch.c:439) +==1401== by 0x1499E9: main (main.c:287) + +Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> +--- + uxa/uxa-glyphs.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/uxa/uxa-glyphs.c b/uxa/uxa-glyphs.c +index b754f4e..921b99c 100644 +--- a/uxa/uxa-glyphs.c ++++ b/uxa/uxa-glyphs.c +@@ -812,8 +812,10 @@ uxa_glyphs_via_mask(CARD8 op, + if (!uxa_pixmap_is_offscreen(src_pixmap) || + !uxa_screen->info->prepare_composite(PictOpAdd, + this_atlas, NULL, mask, +- src_pixmap, NULL, pixmap)) ++ src_pixmap, NULL, pixmap)) { ++ FreePicture(mask, 0); + return -1; ++ } + + glyph_atlas = this_atlas; + } +-- +1.7.10 + diff --git a/extra/xf86-video-intel/PKGBUILD b/extra/xf86-video-intel/PKGBUILD index ca1e15eb0..ad44b5329 100644 --- a/extra/xf86-video-intel/PKGBUILD +++ b/extra/xf86-video-intel/PKGBUILD @@ -1,23 +1,38 @@ -# $Id: PKGBUILD 153342 2012-03-12 20:53:36Z andyrtr $ +# $Id: PKGBUILD 156183 2012-04-15 12:22:45Z jgc $ # Maintainer: Jan de Groot <jgc@archlinux.org> pkgname=xf86-video-intel pkgver=2.18.0 -pkgrel=1 +pkgrel=3 pkgdesc="X.org Intel i810/i830/i915/945G/G965+ video drivers" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" license=('custom') depends=('intel-dri' 'libxvmc' 'libpciaccess' 'libdrm' 'xcb-util>=0.3.8' 'libxfixes' 'udev') -makedepends=('xorg-server-devel>=1.11.99.903' 'libx11' 'libdrm' 'xf86driproto' 'glproto' 'mesa' 'libxvmc' 'libxrender') -conflicts=('xorg-server<1.11.99.903' 'xf86-video-i810' 'xf86-video-intel-legacy') +makedepends=('xorg-server-devel>=1.12.0' 'libx11' 'libdrm' 'xf86driproto' 'glproto' 'mesa' 'libxvmc' 'libxrender') +conflicts=('xorg-server<1.12.0' 'xf86-video-i810' 'xf86-video-intel-legacy') options=('!libtool') groups=('xorg-drivers' 'xorg') -source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) -sha1sums=('77fae98e73414140bf214dca5da32bcf079c4463') +source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2 + 0001-uxa-gen3-Remove-special-casing-of-solid-pictures.patch + 0002-uxa-Defer-the-call-to-EnterVT-till-after-outputs-are.patch + 0003-uxa-Remove-hook-for-CompositeRectangles.patch + 0004-uxa-Remove-broken-render-glyphs-to-dst.patch + 0005-uxa-Fix-leak-of-glyph-mask-for-unhandled-glyph-compo.patch) +sha1sums=('77fae98e73414140bf214dca5da32bcf079c4463' + '8b46a5120c8c0b94fcd75801e5ce91d6baccd1ac' + 'd959c66ab40f521bfe4df66b6f43c98b13f59283' + '5525715f1bbf80edfc34d55946b0528f6b8dbf75' + '3e54a4b3911e004d29b6a8e07adb7c16eba5bc4f' + '32e2e5a53926ce29290bf6454e7dcdbd18e91d5e') build() { cd "${srcdir}/${pkgname}-${pkgver}" + patch -Np1 -i "${srcdir}/0001-uxa-gen3-Remove-special-casing-of-solid-pictures.patch" + patch -Np1 -i "${srcdir}/0002-uxa-Defer-the-call-to-EnterVT-till-after-outputs-are.patch" + patch -Np1 -i "${srcdir}/0003-uxa-Remove-hook-for-CompositeRectangles.patch" + patch -Np1 -i "${srcdir}/0004-uxa-Remove-broken-render-glyphs-to-dst.patch" + patch -Np1 -i "${srcdir}/0005-uxa-Fix-leak-of-glyph-mask-for-unhandled-glyph-compo.patch" ./configure --prefix=/usr --enable-dri make } diff --git a/kernels/linux-libre-xen/PKGBUILD b/kernels/linux-libre-xen/PKGBUILD index 685710c52..caa0d045b 100644 --- a/kernels/linux-libre-xen/PKGBUILD +++ b/kernels/linux-libre-xen/PKGBUILD @@ -11,8 +11,7 @@ pkgname=('linux-libre-xen' 'linux-libre-xen-headers') # Build stock -LIBRE kerne # pkgname=linux-custom # Build kernel with a different name _kernelname=-LIBRE-XEN _basekernel=3.3 -#pkgver=${_basekernel}.11 -pkgver=${_basekernel} +pkgver=${_basekernel}.2 pkgrel=1 arch=('i686') url="http://linux-libre.fsfla.org/" @@ -20,7 +19,7 @@ license=('GPL2') makedepends=('xmlto' 'docbook-xsl') options=('!strip') source=("http://linux-libre.fsfla.org/pub/linux-libre/releases/${_basekernel}-gnu/linux-libre-${_basekernel}-gnu.tar.xz" - #"http://linux-libre.fsfla.org/pub/linux-libre/releases/${pkgver}-libre/patch-${_basekernel}-libre-${pkgver}-libre.xz" + "http://linux-libre.fsfla.org/pub/linux-libre/releases/${pkgver}-gnu/patch-${_basekernel}-gnu-${pkgver}-gnu.xz" # the main kernel config files 'config.i686' # standard config files for mkinitcpio ramdisk @@ -28,29 +27,26 @@ source=("http://linux-libre.fsfla.org/pub/linux-libre/releases/${_basekernel}-gn 'boot-logo.patch' 'change-default-console-loglevel.patch' 'i915-fix-ghost-tv-output.patch' - 'i915-gpu-finish.patch' 'ext4-options.patch') md5sums=('5487da14ca81715a469c7594d39722fa' - '1f29ffc2b18d7c37c781d7938ada59ab' + 'b43d3bdecfa355bf45bd1154819e3687' + '7e49ab7e4e63c890d0196be139a55656' 'b7c2805bb287a644c0a303bf7721e534' '04b21c79df0a952c22d681dd4f4562df' '9d3c56a4b999c8bfbd4018089a62f662' '263725f20c0b9eb9c353040792d644e5' - '4cd79aa147825837dc8bc9f6b736c0a0' - 'c8299cf750a84e12d60b372c8ca7e1e8') + 'bb7fd1aa23016c8057046b84fd4eb528') build() { cd "${srcdir}/linux-${_basekernel}" -# patch -Np1 -i "${srcdir}/patch-${_basekernel}-libre-${pkgver}-libre" + if [ "${_basekernel}" != "${pkgver}" ]; then + patch -Np1 -i "${srcdir}/patch-${_basekernel}-gnu-${pkgver}-gnu" + fi # Add freedo as boot logo patch -Np1 -i "${srcdir}/boot-logo.patch" - # fix FS#27883 - # drm/i915: Only clear the GPU domains upon a successful finish - patch -Np1 -i "${srcdir}/i915-gpu-finish.patch" - # Some chips detect a ghost TV output # mailing list discussion: http://lists.freedesktop.org/archives/intel-gfx/2011-April/010371.html # Arch Linux bug report: FS#19234 @@ -171,7 +167,7 @@ package_linux-libre-xen-headers() { mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/include" for i in acpi asm-generic config crypto drm generated linux math-emu \ - media net pcmcia scsi sound trace video xen; do + media mtd net pcmcia scsi sound trace video xen; do cp -a include/${i} "${pkgdir}/usr/src/linux-${_kernver}/include/" done diff --git a/kernels/linux-libre-xen/config.i686 b/kernels/linux-libre-xen/config.i686 index e6a221b4f..b1d41d390 100644 --- a/kernels/linux-libre-xen/config.i686 +++ b/kernels/linux-libre-xen/config.i686 @@ -1,6 +1,6 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/i386 3.3.0 Kernel Configuration +# Linux/i386 3.3.2 Kernel Configuration # # CONFIG_64BIT is not set CONFIG_X86_32=y @@ -5120,7 +5120,6 @@ CONFIG_RTLLIB_CRYPTO_TKIP=m CONFIG_RTLLIB_CRYPTO_WEP=m CONFIG_RTL8192E=m CONFIG_R8712U=m -CONFIG_R8712_AP=y CONFIG_RTS_PSTOR=m # CONFIG_RTS_PSTOR_DEBUG is not set CONFIG_RTS5139=m diff --git a/kernels/linux-libre-xen/ext4-options.patch b/kernels/linux-libre-xen/ext4-options.patch index 812b05f04..ea48c384b 100644 --- a/kernels/linux-libre-xen/ext4-options.patch +++ b/kernels/linux-libre-xen/ext4-options.patch @@ -46,4 +46,5 @@ index 502c61f..30de9cd 100644 +#endif default: ext4_msg(sb, KERN_ERR, - "Unrecognized mount option \"%s\" "
\ No newline at end of file + "Unrecognized mount option \"%s\" " + diff --git a/kernels/linux-libre-xen/linux-libre-xen.install b/kernels/linux-libre-xen/linux-libre-xen.install index 55645b3fd..06c1f6ae8 100644 --- a/kernels/linux-libre-xen/linux-libre-xen.install +++ b/kernels/linux-libre-xen/linux-libre-xen.install @@ -2,7 +2,7 @@ # arg 2: the old package version KERNEL_NAME=-xen -KERNEL_VERSION=3.3.0-1-LIBRE-XEN +KERNEL_VERSION=3.3.2-1-LIBRE-XEN post_install () { # updating module dependencies diff --git a/libre/linux-libre-api-headers/PKGBUILD b/libre/linux-libre-api-headers/PKGBUILD index 0a449ef3e..72f4c464d 100644 --- a/libre/linux-libre-api-headers/PKGBUILD +++ b/libre/linux-libre-api-headers/PKGBUILD @@ -5,8 +5,9 @@ # toolchain build order: linux-libre-api-headers->glibc->binutils->gcc->binutils->glibc pkgname=linux-libre-api-headers -pkgver=3.3 -_basever=3.3 +_basekernel=3.3 +_sublevel=2 +pkgver=${_basekernel}.${_sublevel} pkgrel=1 pkgdesc="Kernel Libre headers sanitized for use in userspace" arch=('i686' 'x86_64' 'mips64el') @@ -15,20 +16,24 @@ license=('GPL2') provides=("linux-api-headers=${pkgver}" "kernel-headers=${pkgver}") conflicts=('linux-api-headers' 'kernel-headers') replaces=('linux-api-headers' 'kernel-headers') -source=("http://linux-libre.fsfla.org/pub/linux-libre/releases/${_basever}-gnu/linux-libre-${_basever}-gnu.tar.xz") - #"http://linux-libre.fsfla.org/pub/linux-libre/releases/${pkgver}-gnu/patch-${_basever}-gnu-${pkgver}-gnu.xz") -md5sums=('5487da14ca81715a469c7594d39722fa') +source=("http://linux-libre.fsfla.org/pub/linux-libre/releases/${_basekernel}-gnu/linux-libre-${_basekernel}-gnu.tar.xz" + "http://linux-libre.fsfla.org/pub/linux-libre/releases/${pkgver}-gnu/patch-${_basekernel}-gnu-${pkgver}-gnu.xz") +md5sums=('5487da14ca81715a469c7594d39722fa' + 'b43d3bdecfa355bf45bd1154819e3687') build() { - cd ${srcdir}/linux-${_basever} - [[ $pkgver != $_basever ]] && patch -Np1 -i ${srcdir}/patch-${_basever}-gnu-${pkgver}-gnu + cd ${srcdir}/linux-${_basekernel} + + if [ "${_basekernel}" != "${pkgver}" ]; then + patch -Np1 -i "${srcdir}/patch-${_basekernel}-gnu-${pkgver}-gnu" + fi make mrproper make headers_check } package() { - cd ${srcdir}/linux-${_basever} + cd ${srcdir}/linux-${_basekernel} make INSTALL_HDR_PATH=${pkgdir}/usr headers_install # use headers from libdrm diff --git a/libre/linux-libre-lts/.directory b/libre/linux-libre-lts/.directory index 60156bc93..89e875be9 100644 --- a/libre/linux-libre-lts/.directory +++ b/libre/linux-libre-lts/.directory @@ -1,2 +1,2 @@ [Dolphin] -Timestamp=2012,3,15,16,10,14 +Timestamp=2012,4,16,17,55,34 diff --git a/libre/linux-libre-lts/PKGBUILD b/libre/linux-libre-lts/PKGBUILD index 790ea5e0b..5fe592460 100644 --- a/libre/linux-libre-lts/PKGBUILD +++ b/libre/linux-libre-lts/PKGBUILD @@ -9,7 +9,7 @@ pkgname=('linux-libre-lts' 'linux-libre-lts-headers') # Build stock -LIBRE kerne # pkgname=linux-custom # Build kernel with a different name _kernelname=-LIBRE-LTS _basekernel=3.0 -_sublevel=27 +_sublevel=28 pkgver=${_basekernel}.${_sublevel} _lxopkgver=${_basekernel}.26 # nearly always the same as pkgver pkgrel=1 @@ -32,7 +32,7 @@ source=("http://linux-libre.fsfla.org/pub/linux-libre/releases/${_basekernel}-gn 'ext4-options.patch' "http://www.linux-libre.fsfla.org/pub/linux-libre/lemote/gnewsense/pool/linux-patches-${_lxopkgver}-gnu_0loongsonlibre_mipsel.tar.bz2") md5sums=('5f64180fe7df4e574dac5911b78f5067' - '365d490f97b1960c8880eb22257d5ef0' + '150cef79eaa9a41cd5ccd65c696e7f10' 'c7acde811ca6808b294dc06480048c61' '792766d6d403cc967977f6a46aa95d1d' 'd2c0701480bce49fd4b40dc46b9863f1' diff --git a/libre/linux-libre-lts/linux-libre-lts.install b/libre/linux-libre-lts/linux-libre-lts.install index acb2b71f5..5f32392c0 100644 --- a/libre/linux-libre-lts/linux-libre-lts.install +++ b/libre/linux-libre-lts/linux-libre-lts.install @@ -2,7 +2,7 @@ # arg 2: the old package version KERNEL_NAME=-lts -KERNEL_VERSION=3.0.27-1-LIBRE-LTS +KERNEL_VERSION=3.0.28-1-LIBRE-LTS post_install () { # updating module dependencies diff --git a/libre/python2-libre/13156-revert-tls-changeset-subinterpreter.patch b/libre/python2-libre/13156-revert-tls-changeset-subinterpreter.patch new file mode 100644 index 000000000..ed8154df5 --- /dev/null +++ b/libre/python2-libre/13156-revert-tls-changeset-subinterpreter.patch @@ -0,0 +1,61 @@ + +# HG changeset patch +# User Charles-François Natali <neologix@free.fr> +# Date 1318446474 -7200 +# Node ID ee4fe16d9b4822457ad855ea6c44e65030166304 +# Parent f6feed6ec3f9b024cecd0fd587595c403f55624f +Issue #13156: revert changeset f6feed6ec3f9, which was only relevant for native +TLS implementations, and fails with the ad-hoc TLS implementation when a thread +doesn't have an auto thread state (e.g. a thread created outside of Python +calling into a subinterpreter). + +diff --git a/Include/pystate.h b/Include/pystate.h +--- a/Include/pystate.h ++++ b/Include/pystate.h +@@ -111,7 +111,6 @@ PyAPI_FUNC(void) PyThreadState_Clear(PyT + PyAPI_FUNC(void) PyThreadState_Delete(PyThreadState *); + #ifdef WITH_THREAD + PyAPI_FUNC(void) PyThreadState_DeleteCurrent(void); +-PyAPI_FUNC(void) _PyGILState_Reinit(void); + #endif + + PyAPI_FUNC(PyThreadState *) PyThreadState_Get(void); +diff --git a/Modules/signalmodule.c b/Modules/signalmodule.c +--- a/Modules/signalmodule.c ++++ b/Modules/signalmodule.c +@@ -976,7 +976,6 @@ void + PyOS_AfterFork(void) + { + #ifdef WITH_THREAD +- _PyGILState_Reinit(); + PyEval_ReInitThreads(); + main_thread = PyThread_get_thread_ident(); + main_pid = getpid(); +diff --git a/Python/pystate.c b/Python/pystate.c +--- a/Python/pystate.c ++++ b/Python/pystate.c +@@ -537,23 +537,6 @@ void + autoInterpreterState = NULL; + } + +-/* Reset the TLS key - called by PyOS_AfterFork. +- * This should not be necessary, but some - buggy - pthread implementations +- * don't flush TLS on fork, see issue #10517. +- */ +-void +-_PyGILState_Reinit(void) +-{ +- PyThreadState *tstate = PyGILState_GetThisThreadState(); +- PyThread_delete_key(autoTLSkey); +- if ((autoTLSkey = PyThread_create_key()) == -1) +- Py_FatalError("Could not allocate TLS entry"); +- +- /* re-associate the current thread state with the new key */ +- if (PyThread_set_key_value(autoTLSkey, (void *)tstate) < 0) +- Py_FatalError("Couldn't create autoTLSkey mapping"); +-} +- + /* When a thread state is created for a thread by some mechanism other than + PyGILState_Ensure, it's important that the GILState machinery knows about + it so it doesn't try to create another thread state for the thread (this is + |