diff options
Diffstat (limited to 'abs/core-testing')
248 files changed, 23863 insertions, 1746 deletions
diff --git a/abs/core-testing/LinHES-config/PKGBUILD b/abs/core-testing/LinHES-config/PKGBUILD index 1058a17..ef555bc 100755 --- a/abs/core-testing/LinHES-config/PKGBUILD +++ b/abs/core-testing/LinHES-config/PKGBUILD @@ -1,6 +1,6 @@ pkgname=LinHES-config pkgver=1.0 -pkgrel=148 +pkgrel=151 conflicts=(MythVantage-config MythVantage-config-dev LinHES-config-dev ) pkgdesc="Install and configure your system" depends=(bc libstatgrab mysql-python expect curl dnsutils parted sg3_utils nmbscan ) diff --git a/abs/core-testing/LinHES-config/templates/xorg/xorg.conf.ati b/abs/core-testing/LinHES-config/templates/xorg/xorg.conf.ati index c6d9249..53c8e0b 100644 --- a/abs/core-testing/LinHES-config/templates/xorg/xorg.conf.ati +++ b/abs/core-testing/LinHES-config/templates/xorg/xorg.conf.ati @@ -6,7 +6,7 @@ Section "ServerLayout" EndSection Section "Files" - RgbPath "/usr/share/X11/rgb" +# RgbPath "/usr/share/X11/rgb" ModulePath "/usr/lib/xorg/modules" FontPath "/usr/share/fonts/misc" FontPath "/usr/share/fonts/75dpi" diff --git a/abs/core-testing/LinHES-config/templates/xorg/xorg.conf.intel b/abs/core-testing/LinHES-config/templates/xorg/xorg.conf.intel index a4d258a..f3684fb 100644 --- a/abs/core-testing/LinHES-config/templates/xorg/xorg.conf.intel +++ b/abs/core-testing/LinHES-config/templates/xorg/xorg.conf.intel @@ -13,7 +13,7 @@ Section "ServerFlags" EndSection Section "Files" - RgbPath "/usr/share/X11/rgb" +# RgbPath "/usr/share/X11/rgb" ModulePath "/usr/lib/xorg/modules" FontPath "/usr/share/fonts/misc:unscaled" FontPath "/usr/share/fonts/misc" diff --git a/abs/core-testing/LinHES-config/templates/xorg/xorg.conf.nvidia b/abs/core-testing/LinHES-config/templates/xorg/xorg.conf.nvidia index dec0f42..2cc4cb6 100755 --- a/abs/core-testing/LinHES-config/templates/xorg/xorg.conf.nvidia +++ b/abs/core-testing/LinHES-config/templates/xorg/xorg.conf.nvidia @@ -9,7 +9,7 @@ Section "ServerLayout" EndSection Section "Files" - RgbPath "/usr/X11R6/lib/X11/rgb" +# RgbPath "/usr/X11R6/lib/X11/rgb" EndSection Section "Module" diff --git a/abs/core-testing/LinHES-config/templates/xorg/xorg.conf.vesa b/abs/core-testing/LinHES-config/templates/xorg/xorg.conf.vesa index c569819..ce62457 100755 --- a/abs/core-testing/LinHES-config/templates/xorg/xorg.conf.vesa +++ b/abs/core-testing/LinHES-config/templates/xorg/xorg.conf.vesa @@ -9,7 +9,7 @@ Section "ServerLayout" EndSection Section "Files" - RgbPath "/usr/X11R6/lib/X11/rgb" +# RgbPath "/usr/X11R6/lib/X11/rgb" EndSection Section "Module" diff --git a/abs/core-testing/LinHES-config/templates/xorg/xorg.conf.via b/abs/core-testing/LinHES-config/templates/xorg/xorg.conf.via index 6dd7821..8454767 100644 --- a/abs/core-testing/LinHES-config/templates/xorg/xorg.conf.via +++ b/abs/core-testing/LinHES-config/templates/xorg/xorg.conf.via @@ -9,7 +9,7 @@ Section "ServerLayout" EndSection Section "Files" - RgbPath "/usr/X11R6/lib/X11/rgb" +# RgbPath "/usr/X11R6/lib/X11/rgb" EndSection Section "Module" diff --git a/abs/core-testing/LinHES-config/templates/xorg/xorg.conf.vmware b/abs/core-testing/LinHES-config/templates/xorg/xorg.conf.vmware index 843f2f4..a7a5113 100755 --- a/abs/core-testing/LinHES-config/templates/xorg/xorg.conf.vmware +++ b/abs/core-testing/LinHES-config/templates/xorg/xorg.conf.vmware @@ -9,7 +9,7 @@ Section "ServerLayout" EndSection Section "Files" - RgbPath "/usr/X11R6/lib/X11/rgb" +# RgbPath "/usr/X11R6/lib/X11/rgb" EndSection Section "Module" diff --git a/abs/core-testing/LinHES-config/xconfig.sh b/abs/core-testing/LinHES-config/xconfig.sh index ef3e836..f718a1f 100755 --- a/abs/core-testing/LinHES-config/xconfig.sh +++ b/abs/core-testing/LinHES-config/xconfig.sh @@ -1,4 +1,5 @@ #!/bin/bash +NVPKGS="ati-dri xf86-video-ati xf86-video-radeonhd intel-dri xf86-video-intel unichrome-dri xf86-video-unichrome xf86-video-mga xf86-video-savage xf86-video-trident" BASE="" . /etc/profile NVIDIA_96XX="$TEMPLATES/xorg/96xx_supported.txt" @@ -179,12 +180,12 @@ function setupX { then #install 96xx drivers echo "installing nvidia 96xx drivers" - pacman --noconfirm -R libgl-dri > /dev/null 2>&1 + pacman --noconfirm -R $NVPKGS > /dev/null 2>&1 pacman --noconfirm -S nvidia-96xx nvidia-96xx-utils > /dev/null 2>&1 else #install latest drivers echo "installing current nvidia drivers" - pacman --noconfirm -R libgl-dri > /dev/null 2>&1 + pacman --noconfirm -R $NVPKGS > /dev/null 2>&1 pacman --noconfirm -S nvidia nvidia-utils > /dev/null 2>&1 fi fi @@ -198,7 +199,7 @@ function setupX { if [ ! x$TESTMODE = "xtest" ] then pacman --noconfirm -R nvidia nvidia-utils > /dev/null 2>&1 - pacman --noconfirm -S libgl-dri > /dev/null 2>&1 + pacman --noconfirm -S libgl > /dev/null 2>&1 fi ;; @@ -207,7 +208,7 @@ function setupX { if [ ! x$TESTMODE = "xtest" ] then pacman --noconfirm -R nvidia-utils > /dev/null 2>&1 - pacman --noconfirm -S libgl-dri > /dev/null 2>&1 + pacman --noconfirm -S libgl > /dev/null 2>&1 fi ;; diff --git a/abs/core-testing/aalib/PKGBUILD b/abs/core-testing/aalib/PKGBUILD index ee23967..0ae5b05 100644 --- a/abs/core-testing/aalib/PKGBUILD +++ b/abs/core-testing/aalib/PKGBUILD @@ -1,10 +1,10 @@ -# $Id: PKGBUILD 2990 2008-06-18 01:46:24Z eric $ +# $Id: PKGBUILD 9082 2008-08-17 03:29:36Z allan $ # Maintainer: arjan <arjan@archlinux.org> # Contributor: Tom Newsom <Jeepster@gmx.co.uk> # pkgname=aalib pkgver=1.4rc5 -pkgrel=5 +pkgrel=6 pkgdesc="AAlib is a portable ASCII art GFX library" arch=('i686' 'x86_64') url="http://aa-project.sourceforge.net/aalib/" @@ -18,7 +18,8 @@ md5sums=('9801095c42bba12edebd1902bcf0a990' '863a96a6689aa7ee073ca448bc2f133d') build() { cd $startdir/src/$pkgname-1.4.0 patch -Np0 -i ${startdir}/src/aclocal-fixes.patch || return 1 - ./configure --prefix=/usr --mandir=/usr/share/man + ./configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info make || return 1 make DESTDIR=$startdir/pkg install + rm ${pkgdir}/usr/share/info/dir } diff --git a/abs/core-testing/acpid/PKGBUILD b/abs/core-testing/acpid/PKGBUILD index f39bbc1..4fbbdf2 100644 --- a/abs/core-testing/acpid/PKGBUILD +++ b/abs/core-testing/acpid/PKGBUILD @@ -1,31 +1,38 @@ +# $Id: PKGBUILD 20369 2008-12-03 02:03:14Z thayer $ +# Contributor: Manolis Tzanidakis +# Contributor: Judd Vinet <jvinet@zeroflux.org> +# Maintainer: Thayer Williams <thayer@archlinux.org> pkgname=acpid -pkgver=1.0.6 -pkgrel=3 -arch=('i686') -pkgdesc="Utilities for using ACPI power management" +pkgver=1.0.8 +pkgrel=1 +pkgdesc="A daemon for delivering ACPI power management events" url="http://acpid.sourceforge.net" +license=('GPL2') +arch=('i686' 'x86_64') depends=(glibc) -source=(http://easynews.dl.sourceforge.net/sourceforge/$pkgname/$pkgname-$pkgver.tar.gz - acpid-1.0.4-gcc4.patch - acpid - anything - handler.sh - Makefile ) +source=(http://downloads.sourceforge.net/sourceforge/$pkgname/$pkgname-$pkgver.tar.gz + acpid + anything + handler.sh) backup=('etc/acpi/handler.sh' 'etc/acpi/events/anything') -#options='-D_GNU_SOURCE' -MAKEFLAGS="-j2" +md5sums=('1d9c52fe2c0b51f8463f357c2a3d3ddb' + '15903690f1bae4b3b0625b369de65521' + '2d37b98d6e74bab815604b8b48c6cfd4' + '0e8dd13793b1baa79a745f4034888367') build() { - cd $startdir/src/$pkgname-$pkgver - # patch -Np1 -i ${startdir}/src/acpid-1.0.4-gcc4.patch || return 1 - cp ../Makefile . - /usr/bin/make || return 1 - /bin/install -d -m0755 $startdir/pkg/usr/bin - /usr/bin/make INSTPREFIX=$startdir/pkg \ - MAN8DIR=$startdir/pkg/usr/man/man8 install - /bin/install -D -m0755 ../acpid $startdir/pkg/etc/rc.d/acpid - /bin/install -d -m0755 $startdir/pkg/etc/acpi/events - /bin/install -D -m0644 ../anything $startdir/pkg/etc/acpi/events/anything - /bin/install -D -m0755 ../handler.sh $startdir/pkg/etc/acpi/handler.sh + cd $srcdir/$pkgname-$pkgver + /usr/bin/make || return 1 + /bin/install -d -m0755 $pkgdir/usr/bin || return 1 + /usr/bin/make INSTPREFIX=$pkgdir \ + MAN8DIR=$pkgdir/usr/share/man/man8 install || return 1 + + # install our supplementary scripts + /bin/install -D -m0755 $srcdir/acpid $pkgdir/etc/rc.d/acpid || return 1 + /bin/install -D -m0644 $srcdir/anything $pkgdir/etc/acpi/events/anything || return 1 + /bin/install -D -m0755 $srcdir/handler.sh $pkgdir/etc/acpi/handler.sh || return 1 + + # set world readable bit on the acpid binary + /bin/chmod 755 $pkgdir/usr/sbin/acpid || return 1 } diff --git a/abs/core-testing/acpid/handler.sh b/abs/core-testing/acpid/handler.sh index b885f77..ad31d1a 100755 --- a/abs/core-testing/acpid/handler.sh +++ b/abs/core-testing/acpid/handler.sh @@ -11,59 +11,55 @@ setspeed="/sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed" set $* case "$1" in - button/power) - #echo "PowerButton pressed!">/dev/tty5 - case "$2" in - PWRF) logger "PowerButton pressed: $2" - xsay "Please wait while the system powers off" & - /sbin/halt-runit - ;; - *) logger "ACPI action undefined: $2" ;; - esac - ;; - button/sleep) - case "$2" in - SLPB) echo -n mem >/sys/power/state ;; - *) logger "ACPI action undefined: $2" ;; - esac - ;; - ac_adapter) - case "$2" in - AC) - case "$4" in - 00000000) - echo -n $minspeed >$setspeed - #/etc/laptop-mode/laptop-mode start - ;; - 00000001) - echo -n $maxspeed >$setspeed - #/etc/laptop-mode/laptop-mode stop - ;; - esac - ;; - *) logger "ACPI action undefined: $2" ;; - esac - ;; - battery) - case "$2" in - BAT0) - case "$4" in - 00000000) #echo "offline" >/dev/tty5 - ;; - 00000001) #echo "online" >/dev/tty5 - ;; - esac - ;; - CPU0) - ;; - *) logger "ACPI action undefined: $2" ;; - esac - ;; - - button/lid) - #echo "LID switched!">/dev/tty5 - ;; - *) - logger "ACPI group/action undefined: $1 / $2" - ;; + button/power) + #echo "PowerButton pressed!">/dev/tty5 + case "$2" in + PWRF) logger "PowerButton pressed: $2" ;; + *) logger "ACPI action undefined: $2" ;; + esac + ;; + button/sleep) + case "$2" in + SLPB) echo -n mem >/sys/power/state ;; + *) logger "ACPI action undefined: $2" ;; + esac + ;; + ac_adapter) + case "$2" in + AC) + case "$4" in + 00000000) + echo -n $minspeed >$setspeed + #/etc/laptop-mode/laptop-mode start + ;; + 00000001) + echo -n $maxspeed >$setspeed + #/etc/laptop-mode/laptop-mode stop + ;; + esac + ;; + *) logger "ACPI action undefined: $2" ;; + esac + ;; + battery) + case "$2" in + BAT0) + case "$4" in + 00000000) #echo "offline" >/dev/tty5 + ;; + 00000001) #echo "online" >/dev/tty5 + ;; + esac + ;; + CPU0) + ;; + *) logger "ACPI action undefined: $2" ;; + esac + ;; + button/lid) + #echo "LID switched!">/dev/tty5 + ;; + *) + logger "ACPI group/action undefined: $1 / $2" + ;; esac diff --git a/abs/core-testing/alsa-lib/PKGBUILD b/abs/core-testing/alsa-lib/PKGBUILD index 785f6b2..b49354a 100644 --- a/abs/core-testing/alsa-lib/PKGBUILD +++ b/abs/core-testing/alsa-lib/PKGBUILD @@ -1,11 +1,11 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 18680 2008-11-08 16:21:16Z tpowa $ # Maintainer: judd <jvinet@zeroflux.org> pkgname=alsa-lib -pkgver=1.0.16 +pkgver=1.0.18 pkgrel=1 pkgdesc="An alternative implementation of Linux sound support" -arch=(i686 x86_64) +arch=('i686' 'x86_64') url="http://www.alsa-project.org" depends=('glibc') optdepends=('python') @@ -13,11 +13,11 @@ makedepends=('python') license=('GPL') options=(!libtool) source=(ftp://ftp.alsa-project.org/pub/lib/$pkgname-$pkgver.tar.bz2) -md5sums=('73b0986758bb762648a5fafc93e287c1') build() { - cd $startdir/src/$pkgname-$pkgver + cd $srcdir/$pkgname-$pkgver ./configure --prefix=/usr make || return 1 - make DESTDIR=$startdir/pkg install + make DESTDIR=$pkgdir install } +md5sums=('de60df7541fafe8c6a3397e0f105ff0e') diff --git a/abs/core-testing/alsa-oss/PKGBUILD b/abs/core-testing/alsa-oss/PKGBUILD index d70a9e9..66f7030 100644 --- a/abs/core-testing/alsa-oss/PKGBUILD +++ b/abs/core-testing/alsa-oss/PKGBUILD @@ -1,14 +1,14 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 13736 2008-09-28 09:04:09Z tpowa $ # Maintainer: judd <jvinet@zeroflux.org> pkgname=alsa-oss -pkgver=1.0.15 +pkgver=1.0.17 pkgrel=1 pkgdesc="OSS compatibility library" arch=(i686 x86_64) license=('GPL') url="http://www.alsa-project.org" options=(!libtool) -depends=('glibc' 'alsa-lib>=1.0.15') +depends=('glibc' 'alsa-lib>=1.0.17a') source=(ftp://ftp.alsa-project.org/pub/oss-lib/$pkgname-$pkgver.tar.bz2) build() { @@ -17,4 +17,4 @@ build() { make || return 1 make DESTDIR=$startdir/pkg install } -md5sums=('49fb5fbae8bf955b248e46ff9c9a2aa1') +md5sums=('1b1850c2fc91476a73d50f537cbd402f') diff --git a/abs/core-testing/alsa-utils/PKGBUILD b/abs/core-testing/alsa-utils/PKGBUILD index a14e0ad..caa636c 100644 --- a/abs/core-testing/alsa-utils/PKGBUILD +++ b/abs/core-testing/alsa-utils/PKGBUILD @@ -1,27 +1,29 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 18682 2008-11-08 16:46:01Z tpowa $ # Maintainer: judd <jvinet@zeroflux.org> pkgname=alsa-utils -pkgver=1.0.16 +pkgver=1.0.18 pkgrel=1 pkgdesc="An alternative implementation of Linux sound support" -arch=(i686 x86_64) +arch=('i686' 'x86_64') url="http://www.alsa-project.org" -depends=('alsa-lib>=1.0.16' 'dialog' 'pciutils' 'ncurses') +#can not use >=$pkgver due to use of letters in alsa-lib update versioning +depends=("alsa-lib>1.0.17.999" 'dialog' 'pciutils' 'ncurses') +makedepends=('xmlto' 'docbook-xsl') license=('GPL') source=(ftp://ftp.alsa-project.org/pub/utils/$pkgname-${pkgver}.tar.bz2 \ alsa alsaconf.patch alsa.conf.d) backup=(etc/conf.d/alsa) -md5sums=('b9f803f45e6988bb27a6bed521a949fc' - 'cce0969b0203a2bb35540fdf4f7e96ae' - '538f82650d08e901efea86c5395520df' - '366d370f874a45e67b63ce4a8b048202') build() { cd $startdir/src/$pkgname-${pkgver} patch -Np1 -i ../alsaconf.patch || return 1 - ./configure --prefix=/usr --with-curses=ncursesw + ./configure --prefix=/usr make || return 1 make DESTDIR=$startdir/pkg install install -D -m755 ../alsa $startdir/pkg/etc/rc.d/alsa install -D -m644 ../alsa.conf.d $startdir/pkg/etc/conf.d/alsa } +md5sums=('0a6b26d27cc2adfd591d91d8c155fdb7' + '9dff78913b13b10e67c4195e90395ed2' + '538f82650d08e901efea86c5395520df' + '93089f0d8872078939f76dd2acaebc2b') diff --git a/abs/core-testing/alsa-utils/alsa b/abs/core-testing/alsa-utils/alsa index 2581a9a..e1d6f28 100755 --- a/abs/core-testing/alsa-utils/alsa +++ b/abs/core-testing/alsa-utils/alsa @@ -7,7 +7,7 @@ case "$1" in start) stat_busy "Restoring ALSA Levels" - /usr/sbin/alsactl restore + /usr/sbin/alsactl $ALSA_ARGS restore if [ $? -gt 0 ]; then stat_fail else @@ -17,20 +17,28 @@ case "$1" in POWERSAVE=${POWERSAVE:-0} if [ -e /sys/module/snd_ac97_codec/parameters/power_save \ - -a $POWERSAVE -ne 0 ]; then - echo $POWERSAVE > /sys/module/snd_ac97_codec/parameters/power_save - echo 1 > /dev/dsp + -a $POWERSAVE -ne 0 ]; then + echo $POWERSAVE > /sys/module/snd_ac97_codec/parameters/power_save + echo 1 > /dev/dsp fi if [ -e /sys/module/snd_hda_intel/parameters/power_save \ - -a $POWERSAVE -ne 0 ]; then - echo $POWERSAVE > /sys/module/snd_hda_intel/parameters/power_save - echo 1 > /dev/dsp + -a $POWERSAVE -ne 0 ]; then + echo $POWERSAVE > /sys/module/snd_hda_intel/parameters/power_save + echo 1 > /dev/dsp fi ;; stop) - stat_busy "Saving ALSA Levels" - /usr/sbin/alsactl store + SAVE_VOLUME=${SAVE_VOLUME:-yes} + if [ "$SAVE_VOLUME" == "yes" ]; then + stat_busy "Saving ALSA Levels" + /usr/sbin/alsactl $ALSA_ARGS store + else + stat_busy "Stopping ALSA" + fi + if [ "$MUTE_VOLUME" == "yes" ]; then + /usr/bin/amixer -q set Master 0 mute + fi if [ $? -gt 0 ]; then stat_fail else @@ -44,5 +52,5 @@ case "$1" in $0 start ;; *) - echo "usage: $0 {start|stop|restart}" + echo "usage: $0 {start|stop|restart}" esac diff --git a/abs/core-testing/alsa-utils/alsa.conf.d b/abs/core-testing/alsa-utils/alsa.conf.d index 1fa3d38..2c4a92e 100644 --- a/abs/core-testing/alsa-utils/alsa.conf.d +++ b/abs/core-testing/alsa-utils/alsa.conf.d @@ -1,4 +1,15 @@ +# Arguments for alsactl +# example: ALSA_ARGS="--file /var/run/alsa-state" +ALSA_ARGS="" + # Enables powersaving mode for AC97 and hda_intel audio chips. # Set to 1 to enable powersaving. # Set to 0 to disable powersaving (default). POWERSAVE=0 + +# Whether to save volume levels when stopped ("yes" or "no"). +SAVE_VOLUME="yes" + +# Whether to mute the master volume when stopped ("yes" or "no"). +# Useful for bad audio cards which make a noise on system poweroff. +MUTE_VOLUME="no" diff --git a/abs/core-testing/aspell/PKGBUILD b/abs/core-testing/aspell/PKGBUILD index 0b8a590..8d584b9 100644 --- a/abs/core-testing/aspell/PKGBUILD +++ b/abs/core-testing/aspell/PKGBUILD @@ -1,24 +1,31 @@ -# $Id: PKGBUILD 521 2008-04-20 13:00:37Z andyrtr $ -# Maintainer: dorphell <dorphell@archlinux.org> +# $Id: PKGBUILD 19099 2008-11-14 21:50:10Z thayer $ # Contributor: Jochem Kossen <j.kossen@home.nl> +# Contributor: dorphell <dorphell@archlinux.org> +# Maintainer: Thayer Williams <thayer@archlinux.org> + pkgname=aspell pkgver=0.60.6 _pkgmajorver=0.60 -pkgrel=1 -pkgdesc="A Free and Open Source spell checker designed to eventually replace Ispell" -arch=(i686 x86_64) +pkgrel=4 +pkgdesc="A spell checker designed to eventually replace Ispell" +url="http://aspell.net/" +arch=('i686' 'x86_64') license=('LGPL') -depends=('gcc-libs' 'ncurses') +depends=('gcc-libs' 'ncurses>=5.6-7') +optdepends=('perl: to import old dictionaries') options=(!libtool) -source=(ftp://ftp.gnu.org/gnu/${pkgname}/${pkgname}-${pkgver}.tar.gz) install=aspell.install -url="http://aspell.net/" +source=(ftp://ftp.gnu.org/gnu/${pkgname}/${pkgname}-${pkgver}.tar.gz) md5sums=('bc80f0198773d5c05086522be67334eb') build() { - cd ${startdir}/src/${pkgname}-${pkgver} - ./configure --prefix=/usr + cd ${srcdir}/${pkgname}-${pkgver} + ./configure --prefix=/usr || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install - ln -s ${pkgname}-${_pkgmajorver} ${startdir}/pkg/usr/lib/${pkgname} + make DESTDIR=${pkgdir} install || return 1 + ln -s ${pkgname}-${_pkgmajorver} ${pkgdir}/usr/lib/${pkgname} || return 1 + + # cleanup info files + rm ${pkgdir}/usr/share/info/dir || return 1 + gzip ${pkgdir}/usr/share/info/* || return 1 } diff --git a/abs/core-testing/aspell/aspell.install b/abs/core-testing/aspell/aspell.install index b635a4a..2747f02 100644 --- a/abs/core-testing/aspell/aspell.install +++ b/abs/core-testing/aspell/aspell.install @@ -1,8 +1,23 @@ +infodir=/usr/share/info +filelist=(aspell.info aspell-dev.info) + post_install() { - echo "NOTE: aspell comes with no default dictionary" + for file in ${filelist[@]}; do + install-info $infodir/$file $infodir/dir 2> /dev/null + done + echo "==> aspell comes with no default dictionary" +} + +post_upgrade() { + for file in ${filelist[@]}; do + install-info $infodir/$file $infodir/dir 2> /dev/null + done } -op=$1 -shift +pre_remove() { + for file in ${filelist[@]}; do + install-info --delete $infodir/$file $infodir/dir 2> /dev/null + done +} -[ "$(type -t "$op")" = "function" ] && $op "$@" +# vim:set ts=2 sw=2 et: diff --git a/abs/core-testing/ati-dri/PKGBUILD b/abs/core-testing/ati-dri/PKGBUILD new file mode 100644 index 0000000..253f136 --- /dev/null +++ b/abs/core-testing/ati-dri/PKGBUILD @@ -0,0 +1,38 @@ +# $Id: PKGBUILD 17170 2008-10-26 11:01:19Z andyrtr $ +# Maintainer: Jan de Groot <jgc@archlinux.org> +# Contributor: Alexander Baldeck <alexander@archlinux.org> +pkgname=ati-dri +pkgver=7.2 +pkgrel=1 +pkgdesc="DRI drivers for ATI/AMD videochips" +arch=(i686 x86_64) +url="http://xorg.freedesktop.org/" +depends=('libdrm>=2.3.1' 'libgl>=7.2' 'expat>=2.0.1') +makedepends=('glproto>=1.4.9' 'pkgconfig' 'libxfixes' 'libxdamage' 'libxxf86vm' 'libxext') +conflicts=('xf86-video-ati<6.9.0-6') +options=('!libtool') +source=(http://downloads.sourceforge.net/sourceforge/mesa3d/MesaLib-${pkgver}.tar.bz2 + mesa-7.1-link-shared.patch) +md5sums=('04d379292e023df0b0266825cb0dbde5' + 'f0baa948d9810f268413111ee439d24b') + +build() { + cd "${srcdir}/Mesa-${pkgver}" + patch -Np1 -i "${srcdir}/mesa-7.1-link-shared.patch" || return 1 + ./configure --prefix=/usr \ + --with-dri-driverdir=/usr/lib/xorg/modules/dri \ + --with-dri-drivers=radeon,r200,r300 \ + --enable-glx-tls \ + --disable-ttm-api \ + --with-driver=dri \ + --enable-xcb \ + --disable-glu \ + --disable-glut \ + --disable-glw || return 1 + make || return 1 + cd src/mesa/drivers/dri || return 1 + make DESTDIR="${pkgdir}" install || return 1 + rm -f "${pkgdir}/usr/lib/xorg/modules/dri/libdricore.so" + rm -rf "${pkgdir}/usr/include" + rm -rf "${pkgdir}/usr/lib/pkgconfig" +} diff --git a/abs/core-testing/ati-dri/mesa-7.1-link-shared.patch b/abs/core-testing/ati-dri/mesa-7.1-link-shared.patch new file mode 100644 index 0000000..7fdbf14 --- /dev/null +++ b/abs/core-testing/ati-dri/mesa-7.1-link-shared.patch @@ -0,0 +1,102 @@ +diff -up mesa-20080814/src/mesa/drivers/dri/Makefile.dricore mesa-20080814/src/mesa/drivers/dri/Makefile +--- mesa-20080814/src/mesa/drivers/dri/Makefile.dricore 2008-08-14 02:28:38.000000000 +1000 ++++ mesa-20080814/src/mesa/drivers/dri/Makefile 2008-08-14 16:18:20.000000000 +1000 +@@ -6,12 +6,17 @@ include $(TOP)/configs/current + + + +-default: $(TOP)/$(LIB_DIR) subdirs ++default: $(TOP)/$(LIB_DIR) $(TOP)/$(LIB_DIR)/libdricore.so subdirs + + + $(TOP)/$(LIB_DIR): + -mkdir $(TOP)/$(LIB_DIR) + ++libdricore.so: ++ gcc -shared -o libdricore.so -Wl,--whole-archive ../../libmesa.a -Wl,--no-whole-archive -lm -lpthread -lc ++ ++$(TOP)/$(LIB_DIR)/libdricore.so: $(TOP)/$(LIB_DIR) libdricore.so ++ $(INSTALL) libdricore.so $(TOP)/$(LIB_DIR) + + subdirs: + @for dir in $(DRI_DIRS) ; do \ +@@ -31,12 +36,14 @@ dri.pc: dri.pc.in + $(pcedit) $< > $@ + + +-install: dri.pc ++install: dri.pc $(TOP)/$(LIB_DIR)/libdricore.so + @for dir in $(DRI_DIRS) ; do \ + if [ -d $$dir ] ; then \ + (cd $$dir && $(MAKE) install) || exit 1 ; \ + fi \ + done ++ $(INSTALL) -d $(DESTDIR)$(DRI_DRIVER_INSTALL_DIR) ++ $(INSTALL) -m 755 $(TOP)/$(LIB_DIR)/libdricore.so $(DESTDIR)$(DRI_DRIVER_INSTALL_DIR) + $(INSTALL) -d $(DESTDIR)$(INSTALL_INC_DIR)/GL/internal + $(INSTALL) -m 0644 $(TOP)/include/GL/internal/dri_interface.h \ + $(DESTDIR)$(INSTALL_INC_DIR)/GL/internal +@@ -52,5 +59,6 @@ clean: + (cd $$dir && $(MAKE) clean) ; \ + fi \ + done ++ -rm -f libdricore.so $(TOP)/$(LIB_DIR)/libdricore.so + -rm -f common/*.o + -rm -f *.pc +diff -up mesa-20080814/src/mesa/drivers/dri/Makefile.template.dricore mesa-20080814/src/mesa/drivers/dri/Makefile.template +--- mesa-20080814/src/mesa/drivers/dri/Makefile.template.dricore 2008-08-14 02:28:38.000000000 +1000 ++++ mesa-20080814/src/mesa/drivers/dri/Makefile.template 2008-08-14 16:19:37.000000000 +1000 +@@ -1,6 +1,6 @@ + # -*-makefile-*- + +-MESA_MODULES = $(TOP)/src/mesa/libmesa.a ++MESA_MODULES = $(TOP)/$(LIB_DIR)/libdricore.so + + COMMON_SOURCES = \ + ../common/utils.c \ +@@ -64,7 +64,9 @@ default: symlinks depend $(LIBNAME) $(TO + + $(LIBNAME): $(OBJECTS) $(MESA_MODULES) $(WINOBJ) Makefile $(TOP)/src/mesa/drivers/dri/Makefile.template + $(MKLIB) -o $@ -noprefix -linker '$(CC)' -ldflags '$(LDFLAGS)' \ +- $(OBJECTS) $(MESA_MODULES) $(WINOBJ) $(DRI_LIB_DEPS) ++ $(OBJECTS) $(WINOBJ) \ ++ -L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) -ldricore \ ++ $(DRI_LIB_DEPS) + + + $(TOP)/$(LIB_DIR)/$(LIBNAME): $(LIBNAME) +diff -up mesa-20080814/src/mesa/x86/read_rgba_span_x86.S.dricore mesa-20080814/src/mesa/x86/read_rgba_span_x86.S +--- mesa-20080814/src/mesa/x86/read_rgba_span_x86.S.dricore 2008-08-14 02:28:38.000000000 +1000 ++++ mesa-20080814/src/mesa/x86/read_rgba_span_x86.S 2008-08-14 16:16:49.000000000 +1000 +@@ -77,7 +77,6 @@ + */ + + .globl _generic_read_RGBA_span_BGRA8888_REV_MMX +-.hidden _generic_read_RGBA_span_BGRA8888_REV_MMX + .type _generic_read_RGBA_span_BGRA8888_REV_MMX, @function + _generic_read_RGBA_span_BGRA8888_REV_MMX: + pushl %ebx +@@ -172,7 +171,6 @@ _generic_read_RGBA_span_BGRA8888_REV_MMX + */ + + .globl _generic_read_RGBA_span_BGRA8888_REV_SSE +-.hidden _generic_read_RGBA_span_BGRA8888_REV_SSE + .type _generic_read_RGBA_span_BGRA8888_REV_SSE, @function + _generic_read_RGBA_span_BGRA8888_REV_SSE: + pushl %esi +@@ -335,7 +333,6 @@ _generic_read_RGBA_span_BGRA8888_REV_SSE + + .text + .globl _generic_read_RGBA_span_BGRA8888_REV_SSE2 +-.hidden _generic_read_RGBA_span_BGRA8888_REV_SSE2 + .type _generic_read_RGBA_span_BGRA8888_REV_SSE2, @function + _generic_read_RGBA_span_BGRA8888_REV_SSE2: + pushl %esi +@@ -494,7 +491,6 @@ _generic_read_RGBA_span_BGRA8888_REV_SSE + + .text + .globl _generic_read_RGBA_span_RGB565_MMX +- .hidden _generic_read_RGBA_span_RGB565_MMX + .type _generic_read_RGBA_span_RGB565_MMX, @function + + _generic_read_RGBA_span_RGB565_MMX: diff --git a/abs/core-testing/avahi/ChangeLog b/abs/core-testing/avahi/ChangeLog index e4d3f7a..e298fb4 100644 --- a/abs/core-testing/avahi/ChangeLog +++ b/abs/core-testing/avahi/ChangeLog @@ -1,4 +1,8 @@ +2009-01-04 Douglas Soares de Andrade <douglas@archlinux.org> + + * Updated for i686: 0.6.24 + 2008-07-22 Douglas Soares de Andrade <douglas@archlinux.org> * Updated for i686: 0.6.23 diff --git a/abs/core-testing/avahi/PKGBUILD b/abs/core-testing/avahi/PKGBUILD index f98180b..e068e17 100644 --- a/abs/core-testing/avahi/PKGBUILD +++ b/abs/core-testing/avahi/PKGBUILD @@ -1,26 +1,24 @@ -# $Id: PKGBUILD 6066 2008-07-23 03:45:52Z douglas $ -# Maintainer: Travis Willard <travis@archlinux.org> +# $Id: PKGBUILD 23159 2009-01-04 04:58:11Z douglas $ +# Maintainer: Douglas Soares de Andrade <douglas@archlinux.org> pkgname=avahi -pkgver=0.6.23 +pkgver=0.6.24 pkgrel=1 pkgdesc="A multicast/unicast DNS-SD framework" arch=('i686' 'x86_64') url="http://www.avahi.org/" license=('LGPL') -#depends=('dbus>=1.1.20-1' 'libcap' 'libdaemon>=0.11' 'gdbm' 'glib2' 'expat') -depends=('libcap' 'libdaemon>=0.11' 'gdbm' 'glib2' 'expat' 'dbus-python') +depends=('dbus>=1.1.20-1' 'libcap' 'libdaemon>=0.11' 'gdbm' 'glib2' 'expat') optdepends=('qt3:Qt3 UI support' 'libglade:Avahi-discover-standalone' 'nss-mdns:NSS support for mDNS') -makedepends=('qt3' 'libglade' 'intltool') - +makedepends=('mono' 'pygtk' 'gtk-sharp-2' 'dbus-python' 'qt3' 'libglade' 'intltool') backup=(etc/avahi/avahi-daemon.conf) install=avahi.install conflicts=('howl' 'mdnsresponder') provides=('howl' 'mdnsresponder') replaces=('howl' 'mdnsresponder') options=('!libtool') -source=(http://www.avahi.org/download/avahi-${pkgver}.tar.gz) +source=(http://www.avahi.org/download/avahi-${pkgver}.tar.gz gnome-nettool.png) build() { [ -z "${QTDIR}" ] && . /etc/profile.d/qt3.sh @@ -39,7 +37,10 @@ build() { --enable-compat-howl \ --with-distro=archlinux \ --with-avahi-priv-access-group=network \ - --disable-autoipd --disable-glib --disable-pygtk --disable-mono --disable-xmltoman + --enable-autoipd \ + --with-autoipd-user=avahi \ + --with-autoipd-group=avahi + make || return 1 make DESTDIR=${startdir}/pkg install @@ -57,9 +58,7 @@ build() { cd ${startdir}/pkg/usr/lib/pkgconfig ln -s avahi-compat-howl.pc howl.pc mkdir -p ${startdir}/pkg/usr/share/pixmaps -# install -m 644 ${startdir}/src/gnome-nettool.png ${startdir}/pkg/usr/share/pixmaps/gnome-nettool.png + install -m 644 ${startdir}/src/gnome-nettool.png ${startdir}/pkg/usr/share/pixmaps/gnome-nettool.png } - -md5sums=('aab1a304851d8145ea5f6a85c10af9e9' +md5sums=('068c1d220b07037e64caf87d4a7a0504' '42c2905307c7a5dc6ac4b75f4c3d65a3') - diff --git a/abs/core-testing/avahi/gnome-nettool.png b/abs/core-testing/avahi/gnome-nettool.png Binary files differnew file mode 100644 index 0000000..227d067 --- /dev/null +++ b/abs/core-testing/avahi/gnome-nettool.png diff --git a/abs/core-testing/dbus-core/PKGBUILD b/abs/core-testing/dbus-core/PKGBUILD new file mode 100644 index 0000000..7a1bc6e --- /dev/null +++ b/abs/core-testing/dbus-core/PKGBUILD @@ -0,0 +1,53 @@ +# $Id: PKGBUILD 19084 2008-11-14 21:36:59Z jgc $ +# Maintainer: Jan de Groot <jgc@archlinux.org> +# Contributor: Link Dupont <link@subpop.net> +# +pkgname=dbus-core +pkgver=1.2.4 +pkgrel=1 +pkgdesc="Freedesktop.org message bus system" +url="http://www.freedesktop.org/Software/dbus" +arch=(i686 x86_64) +license=('GPL' 'custom') +depends=('expat>=2.0') +conflicts=('dbus<1.2.3-2') +options=(!libtool) +install=dbus.install +source=(http://dbus.freedesktop.org/releases/dbus/dbus-${pkgver}.tar.gz + dbus) +md5sums=('2e643910a09f44b000a0d76038637999' + 'f3fd196cc278bd7b45a4ca01fb8f7894') + +build() { + cd "${srcdir}/dbus-${pkgver}" + ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var \ + --libexecdir=/usr/lib/dbus-1.0 --with-dbus-user=81 \ + --with-system-pid-file=/var/run/dbus.pid \ + --enable-inotify --disable-dnotify \ + --disable-verbose-mode --disable-static \ + --disable-tests --disable-asserts --without-x || return 1 + make || return 1 + make DESTDIR="${pkgdir}" install || return 1 + + rm -f ${pkgdir}/usr/bin/dbus-launch + rm -f ${pkgdir}/usr/share/man/man1/dbus-launch.1 + + chown 81:81 "${pkgdir}/var/run/dbus" || return 1 + + install -m755 -d "${pkgdir}/etc/rc.d" || return 1 + install -m755 "${srcdir}/dbus" "${pkgdir}/etc/rc.d/" || return 1 + + #Fix configuration file + sed -i -e 's|<user>81</user>|<user>dbus</user>|' "${pkgdir}/etc/dbus-1/system.conf" || return 1 + + #install .keep files so pacman doesn't delete empty dirs + touch "${pkgdir}/usr/share/dbus-1/services/.keep" || return 1 + touch "${pkgdir}/usr/share/dbus-1/system-services/.keep" || return 1 + touch "${pkgdir}/etc/dbus-1/session.d/.keep" || return 1 + touch "${pkgdir}/etc/dbus-1/system.d/.keep" || return 1 + + rmdir "${pkgdir}/usr/lib/dbus-1.0/dbus-1" || return 1 + + install -d -m755 "${pkgdir}/usr/share/licenses/dbus-core" + install -m644 COPYING "${pkgdir}/usr/share/licenses/dbus-core/" || return 1 +} diff --git a/abs/core-testing/dbus-core/dbus b/abs/core-testing/dbus-core/dbus new file mode 100644 index 0000000..cd26db8 --- /dev/null +++ b/abs/core-testing/dbus-core/dbus @@ -0,0 +1,57 @@ +#!/bin/bash + +# general config +. /etc/rc.conf +. /etc/rc.d/functions + +case "$1" in + start) + stat_busy "Starting D-BUS system messagebus" + if [ ! -x /var/run/dbus ] ; then + install -m755 -g 81 -o 81 -d /var/run/dbus + fi + if [ -x /usr/bin/dbus-uuidgen ] ; then + /usr/bin/dbus-uuidgen --ensure + fi + + /usr/bin/dbus-daemon --system + if [ $? -gt 0 ]; then + stat_fail + else + add_daemon dbus + stat_done + fi + ;; + stop) + stat_busy "Stopping D-BUS system messagebus" + [ -f /var/run/dbus.pid ] && kill `cat /var/run/dbus.pid` + if [ $? -gt 0 ]; then + stat_fail + else + rm -f /var/run/dbus.pid + rm_daemon dbus + stat_done + fi + ;; + restart) + $0 stop + sleep 1 + $0 start + ;; + reload) + stat_busy "Reloading D-BUS configuration" + [ -f /var/run/dbus.pid ] && /usr/bin/dbus-send \ + --system --type=method_call \ + --dest=org.freedesktop.DBus \ + / org.freedesktop.DBus.ReloadConfig + if [ $? -gt 0 ]; then + stat_fail + else + stat_done + fi + ;; + *) + echo "usage: $0 {start|stop|restart|reload}" + ;; +esac +exit 0 diff --git a/abs/core-testing/dbus-core/dbus.install b/abs/core-testing/dbus-core/dbus.install new file mode 100644 index 0000000..85dd9a7 --- /dev/null +++ b/abs/core-testing/dbus-core/dbus.install @@ -0,0 +1,21 @@ +post_install() { + getent group dbus >/dev/null || usr/sbin/groupadd -g 81 dbus + getent passwd dbus >/dev/null || usr/sbin/useradd -c 'System message bus' -u 81 -g dbus -d '/' -s /bin/false dbus + usr/bin/passwd -l dbus &>/dev/null + dbus-uuidgen --ensure +} + +# arg 1: the new package version +# arg 2: the old package version +post_upgrade() { + post_install $1 + + #Make sure new rc script can shutdown running dbus + [ -f var/run/dbus/pid ] && mv var/run/dbus/pid var/run/dbus.pid +} + +# arg 1: the old package version +pre_remove() { + usr/sbin/userdel dbus &>/dev/null + usr/sbin/groupdel dbus &>/dev/null +} diff --git a/abs/core-testing/dbus-glib/PKGBUILD b/abs/core-testing/dbus-glib/PKGBUILD index 4eb8838..c4e5026 100644 --- a/abs/core-testing/dbus-glib/PKGBUILD +++ b/abs/core-testing/dbus-glib/PKGBUILD @@ -1,22 +1,22 @@ -# $Id: PKGBUILD 3474 2008-06-22 20:19:25Z jgc $ +# $Id: PKGBUILD 22368 2008-12-26 15:52:52Z jgc $ # Maintainer: Jan de Groot <jgc@archlinux.org> pkgname=dbus-glib -pkgver=0.76 +pkgver=0.78 pkgrel=1 pkgdesc="GLib bindings for DBUS" arch=(i686 x86_64) license=('GPL') url="http://www.freedesktop.org/wiki/Software/DBusBindings" -depends=('dbus>=1.2.1' 'glib2>=2.16.3') +depends=('dbus>=1.2.4' 'glib2>=2.18.3') makedepends=('pkgconfig') options=('!libtool') source=(http://dbus.freedesktop.org/releases/${pkgname}/${pkgname}-${pkgver}.tar.gz) -md5sums=('d3b716a7e798faa1c6a867675f00306a') +md5sums=('d4aa04b9df35b4bd663be38e959941c8') build() { - cd ${startdir}/src/${pkgname}-${pkgver} + cd "${srcdir}/${pkgname}-${pkgver}" ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --enable-static=no || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 + make DESTDIR="${pkgdir}" install || return 1 } diff --git a/abs/core-testing/dbus-python/PKGBUILD b/abs/core-testing/dbus-python/PKGBUILD index e3e845f..ae77c04 100644 --- a/abs/core-testing/dbus-python/PKGBUILD +++ b/abs/core-testing/dbus-python/PKGBUILD @@ -1,18 +1,17 @@ -# $Id: PKGBUILD 9903 2008-08-20 20:08:55Z jgc $ +# $Id: PKGBUILD 17272 2008-10-27 16:25:58Z douglas $ # Maintainer: Jan de Groot <jgc@archlinux.org> pkgname=dbus-python pkgver=0.83.0 -pkgrel=1 +pkgrel=2 pkgdesc="Python bindings for DBUS" arch=(i686 x86_64) license=('GPL' 'LGPL') url="http://www.freedesktop.org/wiki/Software/DBusBindings" -depends=('dbus-glib>=0.76' 'python>=2.5') +depends=('dbus-glib>=0.76' 'python>=2.6') makedepends=('pkgconfig') options=('!libtool') source=(http://dbus.freedesktop.org/releases/${pkgname}/${pkgname}-${pkgver}.tar.gz) -md5sums=('562c78876219bf458d79a041af18293d') build() { cd ${startdir}/src/${pkgname}-${pkgver} @@ -20,3 +19,4 @@ build() { make || return 1 make DESTDIR=${startdir}/pkg install || return 1 } +md5sums=('562c78876219bf458d79a041af18293d') diff --git a/abs/core-testing/dbus/30-dbus b/abs/core-testing/dbus/30-dbus new file mode 100644 index 0000000..603e92d --- /dev/null +++ b/abs/core-testing/dbus/30-dbus @@ -0,0 +1,9 @@ +#!/bin/bash + +# launches a session dbus instance + +dbuslaunch="`which dbus-launch 2>/dev/null`" +if [ -n "$dbuslaunch" ] && [ -x "$dbuslaunch" ] && [ -z "$DBUS_SESSION_BUS_ADDRESS" ]; then + eval `$dbuslaunch --sh-syntax --exit-with-session` +fi + diff --git a/abs/core-testing/dbus/PKGBUILD b/abs/core-testing/dbus/PKGBUILD index dc747bc..3276f82 100644 --- a/abs/core-testing/dbus/PKGBUILD +++ b/abs/core-testing/dbus/PKGBUILD @@ -1,48 +1,38 @@ -# $Id: PKGBUILD 9899 2008-08-20 20:01:17Z jgc $ +# $Id: PKGBUILD 19087 2008-11-14 21:39:51Z jgc $ # Maintainer: Jan de Groot <jgc@archlinux.org> # Contributor: Link Dupont <link@subpop.net> # pkgname=dbus -pkgver=1.2.3 +pkgver=1.2.4 pkgrel=1 pkgdesc="Freedesktop.org message bus system" url="http://www.freedesktop.org/Software/dbus" arch=(i686 x86_64) license=('GPL' 'custom') -depends=('expat>=2.0' 'libx11' 'libsm') -options=(!libtool) -install=dbus.install +depends=("dbus-core>=${pkgver}" 'libx11' 'libsm') source=(http://dbus.freedesktop.org/releases/${pkgname}/${pkgname}-${pkgver}.tar.gz - dbus) -md5sums=('f71641385768e99361bd298568207cee' - 'f3fd196cc278bd7b45a4ca01fb8f7894') + 30-dbus) +md5sums=('2e643910a09f44b000a0d76038637999' + 'd14e59575f04e55d21a04907b6fd9f3c') build() { - cd ${startdir}/src/${pkgname}-${pkgver} + cd ${srcdir}/${pkgname}-${pkgver} ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var \ --libexecdir=/usr/lib/dbus-1.0 --with-dbus-user=81 \ --with-system-pid-file=/var/run/dbus.pid \ --disable-verbose-mode --disable-static \ + --enable-inotify --disable-dnotify \ --disable-tests --disable-asserts || return 1 - make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 - chown 81:81 ${startdir}/pkg/var/run/dbus || return 1 + cd tools || return 1 + make dbus-launch || return 1 + install -m755 -d ${pkgdir}/usr/bin + install -m755 -d ${pkgdir}/usr/share/man/man1 + install -m755 dbus-launch ${pkgdir}/usr/bin/ || return 1 + install -m644 dbus-launch.1 ${pkgdir}/usr/share/man/man1/ || return 1 - install -m755 -d ${startdir}/pkg/etc/rc.d || return 1 - install -m 755 ${startdir}/dbus ${startdir}/pkg/etc/rc.d/ || return 1 - - #Fix configuration file - sed -i -e 's|<user>81</user>|<user>dbus</user>|' ${startdir}/pkg/etc/dbus-1/system.conf || return 1 - - #install .keep files so pacman doesn't delete empty dirs - touch ${startdir}/pkg/usr/share/dbus-1/services/.keep || return 1 - touch ${startdir}/pkg/usr/share/dbus-1/system-services/.keep || return 1 - touch ${startdir}/pkg/etc/dbus-1/session.d/.keep || return 1 - touch ${startdir}/pkg/etc/dbus-1/system.d/.keep || return 1 - - rmdir ${startdir}/pkg/usr/lib/dbus-1.0/dbus-1 || return 1 + install -m755 -d ${pkgdir}/etc/X11/xinit/xinitrc.d + install -m755 ${srcdir}/30-dbus ${pkgdir}/etc/X11/xinit/xinitrc.d/ || return 1 install -d -m755 ${startdir}/pkg/usr/share/licenses/dbus - install -m644 ${startdir}/src/${pkgname}-${pkgver}/COPYING \ - ${startdir}/pkg/usr/share/licenses/dbus/ || return 1 + install -m644 ../COPYING ${pkgdir}/usr/share/licenses/dbus/ || return 1 } diff --git a/abs/core-testing/dvb-firmware/PKGBUILD b/abs/core-testing/dvb-firmware/PKGBUILD index 6ad5707..0a4fd33 100644 --- a/abs/core-testing/dvb-firmware/PKGBUILD +++ b/abs/core-testing/dvb-firmware/PKGBUILD @@ -3,13 +3,13 @@ pkgname=dvb-firmware pkgver=1 -pkgrel=1 +pkgrel=2 pkgdesc="Firmware for DVB cards" arch=('i586' 'i686' 'x86_64') license=('GPL2') url="http://linuxtv.org/" source=(ftp://ftp.knoppmyth.net/R6/sources/dvb-firmware.tar.bz2) -md5sums=('d58a3f2b556cf32ac5ab68cd86fcf6ec') +md5sums=('adc049deeeffc6ae8f57561396a73cb9') build() { cd $startdir/src/ diff --git a/abs/core-testing/fam/PKGBUILD b/abs/core-testing/fam/PKGBUILD new file mode 100644 index 0000000..e7f5e41 --- /dev/null +++ b/abs/core-testing/fam/PKGBUILD @@ -0,0 +1,49 @@ +# $Id: PKGBUILD 15741 2008-10-18 01:59:29Z allan $ +# Maintainer: Allan McRae <allan@archlinux.org> +# Contributor: Tom Newsom <Jeepster@gmx.co.uk> +pkgname=fam +pkgver=2.7.0 +pkgrel=11 +pkgdesc="File Alteration Monitor - used by KDE, GNOME and others" +arch=('i686' 'x86_64') +license=('LGPL' 'GPL') +depends=('portmap') +url="http://oss.sgi.com/projects/fam/" +backup=(etc/fam/fam.conf) +options=('!makeflags') # Don't !libtool +source=(ftp://oss.sgi.com/projects/fam/download/stable/${pkgname}-${pkgver}.tar.gz + fam-2.7.0-dnotify.patch + fam-2.7.0-largefiles.patch + fam-2.7.0-noc++.patch + fam-2.7.0-gcc43.patch + include_fam_h.patch + fam) +md5sums=('1bf3ae6c0c58d3201afc97c6a4834e39' + '073d1763318344635ea316293390205c' + '47b41e0b0498793af004696a096d7da1' + '0274cd113d3dcb015653b5606c7714ac' + '13c14778038aa9601a27498448e855e0' + '2638b8ffacb9f03b6e438e08ea7b290a' + '45b648907ba1c7edec17fb544f1f4a13') + +build() { + cd ${srcdir}/${pkgname}-${pkgver} + patch -Np1 -i ${srcdir}/fam-2.7.0-dnotify.patch || return 1 + patch -Np1 -i ${srcdir}/fam-2.7.0-largefiles.patch || return 1 + patch -Np0 -i ${srcdir}/include_fam_h.patch || return 1 + patch -Np1 -i ${srcdir}/fam-2.7.0-noc++.patch || return 1 + patch -Np1 -i ${srcdir}/fam-2.7.0-gcc43.patch || return 1 + + chmod 755 configure || return 1 + + autoheader || return 1 + aclocal || return 1 + automake -a -c || return 1 + autoconf || return 1 + libtoolize --copy --force || return 1 + + ./configure --prefix=/usr --sysconfdir=/etc/fam + make || return 1 + make DESTDIR=${pkgdir} install + install -D -m755 ../fam ${pkgdir}/etc/rc.d/fam +} diff --git a/abs/core-testing/fam/fam b/abs/core-testing/fam/fam new file mode 100755 index 0000000..3acceff --- /dev/null +++ b/abs/core-testing/fam/fam @@ -0,0 +1,44 @@ +#!/bin/bash + +. /etc/rc.conf +. /etc/rc.d/functions + +PID=`pidof -o %PPID /usr/sbin/famd` +case "$1" in + start) + #Check for running portmap, start when not running + ck_daemon portmap && /etc/rc.d/portmap start + stat_busy "Starting File Alteration Monitor" + if [ ! -f /var/run/daemons/portmap ]; then + stat_fail + echo "ERROR: PORTMAP is not running" + exit 1 + fi + if [ -z "$PID" ]; then + /usr/sbin/famd -T 0 -c /etc/fam/fam.conf + fi + if [ ! -z "$PID" -o $? -gt 0 ]; then + stat_fail + else + add_daemon fam + stat_done + fi + ;; + stop) + stat_busy "Stopping File Alteration Monitor" + [ ! -z "$PID" ] && kill $PID &> /dev/null + if [ $? -gt 0 ]; then + stat_fail + else + rm_daemon fam + stat_done + fi + ;; + restart) + $0 stop + sleep 1 + $0 start + ;; + *) + echo "usage: $0 {start|stop|restart}" +esac diff --git a/abs/core-testing/fam/fam-2.7.0-dnotify.patch b/abs/core-testing/fam/fam-2.7.0-dnotify.patch new file mode 100644 index 0000000..1d8910e --- /dev/null +++ b/abs/core-testing/fam/fam-2.7.0-dnotify.patch @@ -0,0 +1,975 @@ +--- fam-2.7.0/src/DNotify.c++ 2004-01-30 00:00:00.000000000 +0100 ++++ fam-2.7.0.dnotify/src/DNotify.c++ 2004-01-30 00:00:00.000000000 +0100 +@@ -0,0 +1,582 @@ ++// Copyright (C) 2001 Red Hat, Inc. All Rights Reserved. ++// Copyright (C) 1999 Silicon Graphics, Inc. All Rights Reserved. ++// ++// This program is free software; you can redistribute it and/or modify it ++// under the terms of version 2 of the GNU General Public License as ++// published by the Free Software Foundation. ++// ++// This program is distributed in the hope that it would be useful, but ++// WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Further, any ++// license provided herein, whether implied or otherwise, is limited to ++// this program in accordance with the express provisions of the GNU ++// General Public License. Patent licenses, if any, provided herein do not ++// apply to combinations of this program with other product or programs, or ++// any other product whatsoever. This program is distributed without any ++// warranty that the program is delivered free of the rightful claim of any ++// third person by way of infringement or the like. See the GNU General ++// Public License for more details. ++// ++// You should have received a copy of the GNU General Public License along ++// with this program; if not, write the Free Software Foundation, Inc., 59 ++// Temple Place - Suite 330, Boston MA 02111-1307, USA. ++ ++#define _GNU_SOURCE ++#include <fcntl.h> ++ ++#include <string.h> ++#include <signal.h> ++#include <stdio.h> ++#include <unistd.h> ++#include <sys/types.h> ++#include <sys/stat.h> ++#include <libgen.h> ++ ++#include "DNotify.h" ++ ++#include "Interest.h" ++#include "Log.h" ++#include "Scheduler.h" ++#include <memory> ++ ++ ++int DNotify::pipe_write_fd = -2; ++int DNotify::pipe_read_fd = -2; ++volatile sig_atomic_t DNotify::queue_overflowed = 0; ++volatile sig_atomic_t DNotify::queue_changed = 0; ++int DNotify::change_queue[QUEUESIZE]; ++volatile int DNotify::queue_head = 0; // Only modified by read handler ++volatile int DNotify::queue_tail = 0; // Only modified by signal handler ++DNotify::EventHandler DNotify::ehandler; ++ ++DNotify::DirWatch *DNotify::dir_hash[DIR_HASHSIZE]; ++DNotify::FileWatch *DNotify::file_hash[FILE_HASHSIZE]; ++ ++struct DNotify::FileWatch ++{ ++ DirWatch *dir_watch; ++ dev_t file_dev; ++ ino_t file_ino; ++ FileWatch *next; // The DirWatch.watches list ++ FileWatch *hash_link; ++}; ++ ++struct DNotify::DirWatch ++{ ++ int fd; ++ dev_t dir_dev; ++ ino_t dir_ino; ++ ++ DirWatch *hash_link; ++ FileWatch *watches; ++}; ++ ++struct DNotify::ChangeEventData ++{ ++ dev_t file_dev; ++ ino_t file_ino; ++}; ++ ++DNotify::DNotify(EventHandler h) ++{ ++ assert(ehandler == NULL); ++ ehandler = h; ++} ++ ++DNotify::~DNotify() ++{ ++ if (pipe_read_fd >= 0) ++ { ++ // Tell the scheduler. ++ ++ (void) Scheduler::remove_read_handler(pipe_read_fd); ++ ++ // Close the pipe. ++ ++ if (close(pipe_read_fd) < 0) ++ Log::perror("can't pipe read end"); ++ else ++ Log::debug("closed pipe read end"); ++ ++ if (close(pipe_write_fd) < 0) ++ Log::perror("can't pipe write end"); ++ else ++ Log::debug("closed pipe write end"); ++ pipe_read_fd = -1; ++ } ++ ehandler = NULL; ++} ++ ++void ++DNotify::overflow_signal_handler(int sig, siginfo_t *si, void *data) ++{ ++ char c = 'x'; ++ ++ { ++ char *str = "*************** overflow sigqueue ***********************\n"; ++ write (STDERR_FILENO, str, strlen(str)); ++ } ++ ++ if (!queue_overflowed) ++ { ++ queue_overflowed = 1; ++ // Trigger the read handler ++ write(pipe_write_fd, &c, 1); ++ } ++} ++ ++void ++DNotify::signal_handler(int sig, siginfo_t *si, void *data) ++{ ++ int left; ++ char c = 'x'; ++ ++ if (queue_head <= queue_tail) ++ left = (QUEUESIZE + queue_head) - queue_tail; ++ else ++ left = queue_head - queue_tail; ++ ++ // Must leave at least one item unused to see difference ++ // Betweeen empty and full ++ if (left <= 1) ++ { ++ queue_overflowed = 1; ++ { ++ char *str = "*************** overflow famqueue ****************\n"; ++ write (STDERR_FILENO, str, strlen(str)); ++ } ++ } ++ else ++ { ++ change_queue[queue_tail] = si->si_fd; ++ queue_tail = (queue_tail + 1) % QUEUESIZE; ++ } ++ ++ if (!queue_changed) ++ { ++ queue_changed = 1; ++ // Trigger the read handler ++ write(pipe_write_fd, &c, 1); ++ } ++} ++ ++bool ++DNotify::is_active() ++{ ++ if (pipe_read_fd == -2) ++ { ++ int filedes[2]; ++ int res; ++ ++ res = pipe (filedes); ++ if (res >= 0) ++ { Log::debug("opened pipe"); ++ pipe_read_fd = filedes[0]; ++ pipe_write_fd = filedes[1]; ++ ++ // Setup signal handler: ++ struct sigaction act; ++ ++ act.sa_sigaction = signal_handler; ++ sigemptyset(&act.sa_mask); ++ act.sa_flags = SA_SIGINFO; ++ sigaction(SIGRTMIN, &act, NULL); ++ ++ // When the RT queue overflows we get a SIGIO ++ act.sa_sigaction = overflow_signal_handler; ++ sigemptyset(&act.sa_mask); ++ sigaction(SIGIO, &act, NULL); ++ ++ (void) Scheduler::install_read_handler(pipe_read_fd, read_handler, NULL); ++ } ++ } ++ return pipe_read_fd >= 0; ++} ++ ++DNotify::DirWatch * ++DNotify::lookup_dirwatch (int fd) ++{ ++ DirWatch **p; ++ DirWatch *w; ++ ++ p = dir_hashchain (fd); ++ ++ while (*p) ++ { ++ w = *p; ++ ++ if (w->fd == fd) ++ return w; ++ ++ p = &w->hash_link; ++ } ++ ++ return *p; ++} ++ ++// This colud be made faster by using another hash table. ++// But it's not that bad, since it is only used by express/revoke ++DNotify::DirWatch * ++DNotify::lookup_dirwatch (dev_t dir_dev, ino_t dir_ino) ++{ ++ DirWatch *p; ++ int i; ++ ++ for (i=0;i<DIR_HASHSIZE;i++) ++ { ++ p = dir_hash[i]; ++ ++ while (p) ++ { ++ if (p->dir_dev == dir_dev && p->dir_ino == dir_ino) ++ return p; ++ ++ p = p->hash_link; ++ } ++ } ++ ++ return NULL; ++} ++ ++DNotify::FileWatch * ++DNotify::lookup_filewatch (dev_t dev, ino_t ino) ++{ ++ FileWatch **p; ++ FileWatch *w; ++ ++ p = file_hashchain (dev, ino); ++ ++ while (*p) ++ { ++ w = *p; ++ ++ if (w->file_dev == dev && w->file_ino == ino) ++ return w; ++ ++ p = &w->hash_link; ++ } ++ ++ return *p; ++} ++ ++// Make sure w is not already in the hash table before calling ++// this function. ++void ++DNotify::hash_dirwatch(DirWatch *w) ++{ ++ DirWatch **p; ++ p = dir_hashchain (w->fd); ++ w->hash_link = *p; ++ *p = w; ++} ++ ++// Make sure w is not already in the hash table before calling ++// this function. ++void ++DNotify::hash_filewatch(FileWatch *w) ++{ ++ FileWatch **p; ++ p = file_hashchain (w->file_dev, w->file_ino); ++ w->hash_link = *p; ++ *p = w; ++} ++ ++void ++DNotify::unhash_dirwatch(DirWatch *w) ++{ ++ DirWatch **p; ++ ++ p = dir_hashchain (w->fd); ++ ++ while (*p) ++ { ++ if (*p == w) ++ { ++ *p = w->hash_link; ++ break; ++ } ++ p = &(*p)->hash_link; ++ } ++ w->hash_link = NULL; ++} ++ ++void ++DNotify::unhash_filewatch(FileWatch *w) ++{ ++ FileWatch **p; ++ ++ p = file_hashchain (w->file_dev, w->file_ino); ++ ++ while (*p) ++ { ++ if (*p == w) ++ { ++ *p = w->hash_link; ++ break; ++ } ++ p = &(*p)->hash_link; ++ } ++ w->hash_link = NULL; ++} ++ ++DNotify::Status ++DNotify::watch_dir(const char *notify_dir, dev_t file_dev, ino_t file_ino) ++{ ++ struct stat stat; ++ dev_t dir_dev; ++ ino_t dir_ino; ++ DirWatch *dwatch; ++ FileWatch *fw; ++ ++ if (lstat (notify_dir, &stat) == -1) ++ return BAD; ++ ++ dwatch = lookup_dirwatch(stat.st_dev, stat.st_ino); ++ if (!dwatch) ++ { ++ Log::debug ("New DirWatch for %s (%x %x)\n", ++ notify_dir, (int)stat.st_dev, (int)stat.st_ino); ++ dwatch = new DirWatch; ++ dwatch->watches = NULL; ++ dwatch->hash_link = NULL; ++ dwatch->dir_dev = stat.st_dev; ++ dwatch->dir_ino = stat.st_ino; ++ ++ dwatch->fd = open(notify_dir, O_RDONLY); ++ fcntl (dwatch->fd, F_SETSIG, SIGRTMIN); ++ if (fcntl (dwatch->fd, F_NOTIFY, ++ (DN_MODIFY|DN_CREATE|DN_DELETE|DN_RENAME|DN_ATTRIB) ++ | DN_MULTISHOT) == -1) { ++ return BAD; ++ } ++ hash_dirwatch (dwatch); ++ } ++ ++ fw = lookup_filewatch (file_dev, file_ino); ++ if (fw && fw->dir_watch == dwatch) ++ return OK; ++ ++ // No old FileWatch, need to add one: ++ Log::debug("New FileWatch for %x %x\n", (int)file_dev, (int)file_ino); ++ fw = new FileWatch; ++ fw->next = dwatch->watches; ++ dwatch->watches = fw; ++ fw->file_dev = file_dev; ++ fw->file_ino = file_ino; ++ fw->dir_watch = dwatch; ++ hash_filewatch(fw); ++ return OK; ++} ++ ++char * ++dirname_dup (const char *name) ++{ ++ char *copy = strdup(name); ++ char *res = dirname(copy); ++ res = strdup(res); ++ free (copy); ++ return res; ++} ++ ++DNotify::Status ++DNotify::express(const char *name, struct stat *status) ++{ ++ struct stat stat; ++ char *notify_dir; ++ int res; ++ Status s; ++ dev_t dev; ++ ino_t ino; ++ ++ Log::debug("express() name: %s\n", name); ++ ++ if (!is_active()) ++ return BAD; ++ ++ if (::lstat (name, &stat) == -1) ++ return BAD; ++ ++ dev = stat.st_dev; ++ ino = stat.st_ino; ++ ++ if ((stat.st_mode & S_IFMT) != S_IFDIR) ++ notify_dir = dirname_dup (name); ++ else ++ notify_dir = (char *)name; ++ ++ s = watch_dir (notify_dir, dev, ino); ++ if (notify_dir != name) ++ free (notify_dir); ++ if (s) ++ return s; ++ ++ // Check for a race condition; if someone removed or changed the ++ // file at the same time that we are expressing interest in it, ++ // revoke the interest so we don't get notifications about changes ++ // to a recycled inode that we don't otherwise care about. ++ // ++ struct stat st; ++ if (status == NULL) { ++ status = &st; ++ } ++ if (::lstat(name, status) == -1) { ++ Log::perror("stat on \"%s\" failed", name); ++ revoke(name, stat.st_dev, stat.st_ino); ++ return BAD; ++ } ++ if (status->st_dev != stat.st_dev ++ || status->st_ino != stat.st_ino) { ++ Log::error("File \"%s\" changed between express and stat", ++ name); ++ revoke(name, stat.st_dev, stat.st_ino); ++ return BAD; ++ } ++ ++ Log::debug("told dnotify to monitor \"%s\" = dev %d/%d, ino %d", name, ++ major(status->st_dev), minor(status->st_dev), ++ status->st_ino); ++ return OK; ++} ++ ++DNotify::Status ++DNotify::revoke(const char *name, dev_t dev, ino_t ino) ++{ ++ FileWatch *fwatch; ++ DirWatch *dwatch; ++ ++ Log::debug("revoke() name: %s, dev: %x, ino: %x\n", name, dev, ino); ++ ++ if (!is_active()) ++ return BAD; ++ ++ // Lookup FileWatch by dev:ino, and its DirWatch. ++ fwatch = lookup_filewatch (dev, ino); ++ if (fwatch == NULL) ++ return BAD; ++ ++ dwatch = fwatch->dir_watch; ++ ++ // delete FileWatch, if last FileWatch: close fd, delete DirWatch ++ Log::debug ("Destroying FileWatch for (%x %x)\n", ++ (int)fwatch->file_dev, (int)fwatch->file_ino); ++ FileWatch **p; ++ for (p=&dwatch->watches; *p; p=&(*p)->next) ++ { ++ if (*p == fwatch) ++ { ++ *p = (*p)->next; ++ break; ++ } ++ } ++ unhash_filewatch(fwatch); ++ delete fwatch; ++ if (dwatch->watches == NULL) ++ { ++ Log::debug ("Destroying DirWatch for (%x %x)\n", ++ (int)dwatch->dir_dev, (int)dwatch->dir_ino); ++ close(dwatch->fd); ++ unhash_dirwatch(dwatch); ++ delete dwatch; ++ } ++ ++ return OK; ++} ++ ++ ++void ++DNotify::all_watches_changed(void) ++{ ++ int i; ++ FileWatch *fw; ++ ++ for (i=0; i<FILE_HASHSIZE; i++) ++ { ++ fw = file_hash[i]; ++ while (fw) ++ { ++ (*ehandler)(fw->file_dev, fw->file_ino, CHANGE); ++ ++ fw = fw->hash_link; ++ } ++ } ++} ++ ++ ++void ++DNotify::read_handler(int fd, void *) ++{ ++ static char readbuf[5000]; ++ DirWatch *dw; ++ FileWatch *fw; ++ int snap_queue_tail; ++ int last_fd; ++ ++ int rc = read(fd, readbuf, sizeof readbuf); ++ queue_changed = 0; ++ if (rc < 0) ++ Log::perror("pipe read"); ++ else if (queue_overflowed) ++ { ++ // There is a *slight* race condition here. Between reading ++ // the queue_overflow flag and resetting it. But it doesn't ++ // matter, since I'm gonna handle the overflow after reseting ++ // anyway. ++ queue_overflowed = false; ++ ++ // We're soon gonna check all watches anyway, so ++ // get rid of the current queue ++ queue_head = queue_tail; ++ ++ all_watches_changed (); ++ } ++ else ++ { ++ // Don't read events that happen later than ++ // the initial read. (Otherwise skipping fd's ++ // might miss some changes). ++ snap_queue_tail = queue_tail; ++ last_fd = -1; ++ while (queue_head != snap_queue_tail) ++ { ++ fd = change_queue[queue_head]; ++ queue_head = (queue_head + 1) % QUEUESIZE; ++ ++ // Skip multiple changes to the same fd ++ if (fd != last_fd) ++ { ++ dw = lookup_dirwatch (fd); ++ if (dw) ++ { ++ int n_watches, i; ++ ChangeEventData *data; ++ ++ Log::debug("dnotify said dev %d/%d, ino %ld changed", ++ major(dw->dir_dev), minor(dw->dir_dev), dw->dir_ino); ++ ++ n_watches = 0; ++ for (fw=dw->watches; fw; fw=fw->next) ++ n_watches++; ++ ++ data = new ChangeEventData[n_watches]; ++ ++ i = 0; ++ for (fw=dw->watches; fw; fw=fw->next) ++ { ++ data[i].file_dev = fw->file_dev; ++ data[i].file_ino = fw->file_ino; ++ i++; ++ } ++ ++ for (i = 0; i < n_watches; i++) ++ { ++ (*ehandler)(data[i].file_dev, data[i].file_ino, CHANGE); ++ } ++ ++ delete[] data; ++ } ++ } ++ last_fd = fd; ++ } ++ } ++} ++ +--- fam-2.7.0/src/DNotify.h 2004-01-30 00:00:00.000000000 +0100 ++++ fam-2.7.0.dnotify/src/DNotify.h 2004-01-30 00:00:00.000000000 +0100 +@@ -0,0 +1,98 @@ ++// Copyright (C) 2001 Red Hat, Inc. All Rights Reserved. ++// Copyright (C) 1999 Silicon Graphics, Inc. All Rights Reserved. ++// ++// This program is free software; you can redistribute it and/or modify it ++// under the terms of version 2 of the GNU General Public License as ++// published by the Free Software Foundation. ++// ++// This program is distributed in the hope that it would be useful, but ++// WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Further, any ++// license provided herein, whether implied or otherwise, is limited to ++// this program in accordance with the express provisions of the GNU ++// General Public License. Patent licenses, if any, provided herein do not ++// apply to combinations of this program with other product or programs, or ++// any other product whatsoever. This program is distributed without any ++// warranty that the program is delivered free of the rightful claim of any ++// third person by way of infringement or the like. See the GNU General ++// Public License for more details. ++// ++// You should have received a copy of the GNU General Public License along ++// with this program; if not, write the Free Software Foundation, Inc., 59 ++// Temple Place - Suite 330, Boston MA 02111-1307, USA. ++ ++#ifndef DNotify_included ++#define DNotify_included ++ ++#include "config.h" ++#include "Monitor.h" ++#include <signal.h> ++ ++// DNotify is an object encapsulating the dnotify linux fcntl. ++// It "emulates" the IMon interface. ++// There can only be one instantiation of the DNotify object. ++// ++// The user of this object uses express() and revoke() to ++// express/revoke interest in a file. There is also ++// a callback, the EventHandler. When an dnotify event comes in, ++// the EventHandler is called. ++// ++// The user of the DNotify object is the Interest class. ++ ++class DNotify : public Monitor { ++public: ++ DNotify(EventHandler h); ++ ~DNotify(); ++ ++ static bool is_active(); ++ ++ virtual Status express(const char *name, struct stat *stat_return); ++ virtual Status revoke(const char *name, dev_t dev, ino_t ino); ++ ++private: ++ struct FileWatch; ++ struct DirWatch; ++ struct ChangeEventData; ++ ++ // Class Variables ++ enum { QUEUESIZE = 1024 }; ++ static int pipe_write_fd; ++ static int pipe_read_fd; ++ static int change_queue[QUEUESIZE]; ++ static volatile sig_atomic_t queue_overflowed; ++ static volatile sig_atomic_t queue_changed; ++ static volatile int queue_head; // Only modified by read handler ++ static volatile int queue_tail; // Only modified by signal handler ++ static EventHandler ehandler; ++ static void overflow_signal_handler(int sig, siginfo_t *si, void *data); ++ static void signal_handler(int sig, siginfo_t *si, void *data); ++ static void read_handler(int fd, void *closure); ++ ++ enum { DIR_HASHSIZE = 367 }; ++ static DirWatch *dir_hash[DIR_HASHSIZE]; ++ enum { FILE_HASHSIZE = 823 }; ++ static FileWatch *file_hash[FILE_HASHSIZE]; ++ ++ static DirWatch **dir_hashchain(int fd) ++ { return &dir_hash[(unsigned) (fd) % DIR_HASHSIZE]; } ++ static FileWatch **file_hashchain(dev_t d, ino_t i) ++ { return &file_hash[(unsigned) (d+i) % FILE_HASHSIZE]; } ++ ++ static DirWatch *lookup_dirwatch (int fd); ++ static DirWatch *lookup_dirwatch (dev_t dir_dev, ino_t dir_ino); ++ static FileWatch *lookup_filewatch (dev_t file_dev, ino_t file_ino); ++ static void hash_dirwatch(DirWatch *w); ++ static void hash_filewatch(FileWatch *w); ++ static void unhash_dirwatch(DirWatch *w); ++ static void unhash_filewatch(FileWatch *w); ++ static Status watch_dir(const char *notify_dir, dev_t file_dev, ino_t file_ino); ++ ++ static void all_watches_changed(void); ++ ++ DNotify(const DNotify&); // Do not copy ++ DNotify & operator = (const DNotify&); // or assign. ++}; ++ ++#endif /* !IMon_included */ ++ ++ +--- fam-2.7.0/src/Interest.c++ 2004-01-30 00:00:00.000000000 +0100 ++++ fam-2.7.0.dnotify/src/Interest.c++ 2004-01-30 00:00:00.000000000 +0100 +@@ -42,12 +42,21 @@ + #include "Event.h" + #include "FileSystem.h" + #include "IMon.h" ++#include "DNotify.h" + #include "Log.h" + #include "Pollster.h" + #include "timeval.h" + + Interest *Interest::hashtable[]; +-IMon Interest::imon(imon_handler); ++ ++#ifdef USE_DNOTIFY ++static DNotify dnotify(Interest::monitor_handler); ++Monitor * Interest::monitor = &dnotify; ++#else ++static IMon imon(Interest::monitor_handler); ++Monitor * Interest::monitor = &imon; ++#endif ++ + bool Interest::xtab_verification = true; + + Interest::Interest(const char *name, FileSystem *fs, in_addr host, ExportVerification ev) +@@ -60,10 +69,10 @@ + mypath_exported_to_host(ev == NO_VERIFY_EXPORTED) + { + memset(&old_stat, 0, sizeof(old_stat)); +- IMon::Status s = IMon::BAD; + +- s = imon.express(name, &old_stat); +- if (s != IMon::OK) ++ Monitor::Status s = Monitor::BAD; ++ s = monitor->express(name, &old_stat); ++ if (s != Monitor::OK) + { int rc = lstat(name, &old_stat); + if (rc < 0) + { Log::info("can't lstat %s", name); +@@ -100,7 +109,7 @@ + } + #endif + +- if (exported_to_host()) fs->ll_monitor(this, s == IMon::OK); ++ if (exported_to_host()) fs->ll_monitor(this, s == Monitor::OK); + } + + Interest::~Interest() +@@ -128,7 +137,7 @@ + pp = &p->hashlink; // move to next element + } + if (!found_same) +- (void) imon.revoke(name(), dev, ino); ++ (void) monitor->revoke(name(), dev, ino); + } + } + +@@ -147,7 +156,7 @@ + + // Express interest. + IMon::Status s = IMon::BAD; +- s = imon.express(name(), NULL); ++ s = monitor->express(name(), NULL); + if (s != IMon::OK) { + return true; + } +@@ -248,23 +257,23 @@ + } + + void +-Interest::imon_handler(dev_t device, ino_t inumber, int event) ++Interest::monitor_handler(dev_t device, ino_t inumber, int event) + { + assert(device || inumber); + + for (Interest *p = *hashchain(device, inumber), *next = p; p; p = next) + { next = p->hashlink; + if (p->ino == inumber && p->dev == device) +- { if (event == IMon::EXEC) ++ { if (event == Monitor::EXEC) + { p->cur_exec_state = EXECUTING; + (void) p->report_exec_state(); + } +- else if (event == IMon::EXIT) ++ else if (event == Monitor::EXIT) + { p->cur_exec_state = NOT_EXECUTING; + (void) p->report_exec_state(); + } + else +- { assert(event == IMon::CHANGE); ++ { assert(event == Monitor::CHANGE); + p->scan(); + } + } +--- fam-2.7.0/config.h.in 2003-01-20 01:40:15.000000000 +0100 ++++ fam-2.7.0.dnotify/config.h.in 2004-01-30 13:50:33.000000000 +0100 +@@ -180,3 +180,6 @@ + + /* Define to `int' if <sys/types.h> doesn't define. */ + #undef uid_t ++ ++/* Define to 1 if you have F_NOTIFY fcntl */ ++#undef USE_DNOTIFY +--- fam-2.7.0/configure.ac 2003-11-26 20:47:59.000000000 +0100 ++++ fam-2.7.0.dnotify/configure.ac 2004-01-30 13:50:33.000000000 +0100 +@@ -34,7 +34,26 @@ + AC_HEADER_DIRENT + AC_CHECK_HEADERS([fcntl.h limits.h linux/imon.h netinet/in.h rpc/rpc.h rpcsvc/mount.h stddef.h stdlib.h string.h syslog.h sys/imon.h sys/param.h sys/select.h sys/statvfs.h sys/syssgi.h sys/time.h sys/types.h sys/un.h unistd.h]) + +-if test "$have_sys_imon_h"; then ++# Test for the linux dnotify fcntl ++AC_MSG_CHECKING([for dnotify fcntl support]) ++AC_TRY_COMPILE([ ++#define _GNU_SOURCE ++#include <fcntl.h> ++#include <unistd.h> ++], ++[ int fd = 1; ++ fcntl (fd, F_NOTIFY, (DN_MODIFY|DN_CREATE|DN_DELETE|DN_RENAME|DN_ATTRIB) ++ |DN_MULTISHOT); ++], have_dnotify=yes, have_dnotify=no) ++ ++use_dnotify=false ++AC_MSG_RESULT($have_dnotify) ++ ++if test "$have_dnotify"; then ++ MONITOR_FUNCS=IMonNone ++ AC_DEFINE([USE_DNOTIFY], [], [Use dnotify]) ++ use_dnotify=true ++elif test "$have_sys_imon_h"; then + MONITOR_FUNCS=IMonIRIX + elif test "$have_linux_imon_h"; then + MONITOR_FUNCS=IMonLinux +@@ -42,6 +62,7 @@ + MONITOR_FUNCS=IMonNone + fi + AC_SUBST(MONITOR_FUNCS) ++AM_CONDITIONAL(USE_DNOTIFY, $use_dnotify) + + # Checks for typedefs, structures, and compiler characteristics. + AC_HEADER_STDBOOL +--- fam-2.7.0/src/IMon.h 2004-01-30 00:00:00.000000000 +0200 ++++ fam-2.7.0.dnotify/src/IMon.h 2004-01-30 00:00:00.000000000 +0200 +@@ -24,10 +24,7 @@ + #define IMon_included + + #include "config.h" +-#include <sys/stat.h> +-#include <sys/types.h> +- +-#include "Boolean.h" ++#include "Monitor.h" + + struct stat; + +@@ -41,25 +38,18 @@ + // + // The user of the IMon object is the Interest class. + +-class IMon { ++class IMon : public Monitor { + + public: +- +- enum Status { OK = 0, BAD = -1 }; +- enum Event { EXEC, EXIT, CHANGE }; +- +- typedef void (*EventHandler)(dev_t, ino_t, int event); +- + IMon(EventHandler h); + ~IMon(); + + static bool is_active(); + +- Status express(const char *name, struct stat *stat_return); +- Status revoke(const char *name, dev_t dev, ino_t ino); ++ virtual Status express(const char *name, struct stat *stat_return); ++ virtual Status revoke(const char *name, dev_t dev, ino_t ino); + + private: +- + // Class Variables + + static int imonfd; +--- fam-2.7.0/src/Interest.h 2004-01-30 00:00:00.000000000 +0200 ++++ fam-2.7.0.dnotify/src/Interest.h 2004-01-30 00:00:00.000000000 +0200 +@@ -32,7 +32,7 @@ + + class Event; + class FileSystem; +-class IMon; ++class Monitor; + struct stat; + + // Interest -- abstract base class for filesystem entities of interest. +@@ -74,7 +74,7 @@ + + // Public Class Method + +- static void imon_handler(dev_t, ino_t, int event); ++ static void monitor_handler(dev_t, ino_t, int event); + + static void enable_xtab_verification(bool enable); + +@@ -121,7 +121,7 @@ + + // Class Variables + +- static IMon imon; ++ static Monitor *monitor; + static Interest *hashtable[HASHSIZE]; + static bool xtab_verification; + +--- fam-2.7.0/src/Makefile.am 2003-01-19 13:00:17.000000000 +0100 ++++ fam-2.7.0.dnotify/src/Makefile.am 2004-01-30 13:50:38.000000000 +0100 +@@ -71,7 +71,11 @@ + main.c++ \ + timeval.c++ \ + timeval.h \ +- @MONITOR_FUNCS@.c++ ++ Monitor.h \ ++ DNotify.h \ ++ DNotify.c++ \ ++ @MONITOR_FUNCS@.c++ + +-EXTRA_famd_SOURCES = IMonIrix.c++ IMonLinux.c++ IMonNone.c++ ++EXTRA_famd_SOURCES = IMonIrix.c++ IMonLinux.c++ IMonNone.c++ DNotify.c++ \ ++ DNotify.h Monitor.h + +--- fam-2.7.0/src/Monitor.h 2004-01-30 00:00:00.000000000 +0200 ++++ fam-2.7.0.dnotify/src/Monitor.h 2004-01-30 00:00:00.000000000 +0200 +@@ -0,0 +1,57 @@ ++// Copyright (C) 2001 Red Hat, Inc. All Rights Reserved. ++// Copyright (C) 1999 Silicon Graphics, Inc. All Rights Reserved. ++// ++// This program is free software; you can redistribute it and/or modify it ++// under the terms of version 2 of the GNU General Public License as ++// published by the Free Software Foundation. ++// ++// This program is distributed in the hope that it would be useful, but ++// WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Further, any ++// license provided herein, whether implied or otherwise, is limited to ++// this program in accordance with the express provisions of the GNU ++// General Public License. Patent licenses, if any, provided herein do not ++// apply to combinations of this program with other product or programs, or ++// any other product whatsoever. This program is distributed without any ++// warranty that the program is delivered free of the rightful claim of any ++// third person by way of infringement or the like. See the GNU General ++// Public License for more details. ++// ++// You should have received a copy of the GNU General Public License along ++// with this program; if not, write the Free Software Foundation, Inc., 59 ++// Temple Place - Suite 330, Boston MA 02111-1307, USA. ++ ++#ifndef Monitor_included ++#define Monitor_included ++ ++#include "config.h" ++#include <sys/stat.h> ++#include <sys/types.h> ++ ++struct stat; ++ ++// Monitor is an abstract baseclass for differend file monitoring ++// systems. The original system used was IMon, and the Montor API ++// is heavily influenced by that. ++// There can only be one instantiation of the Monitor object. ++// ++// The user of this object uses express() and revoke() to ++// express/revoke interest in a file to imon. There is also ++// a callback, the EventHandler. When an event comes in, ++// the EventHandler is called. ++// ++// The main implementers of the Monitor class is IMon and DNotify ++ ++class Monitor { ++public: ++ ++ enum Status { OK = 0, BAD = -1 }; ++ enum Event { EXEC, EXIT, CHANGE }; ++ ++ typedef void (*EventHandler)(dev_t, ino_t, int event); ++ ++ virtual Status express(const char *name, struct stat *stat_return) = 0; ++ virtual Status revoke(const char *name, dev_t dev, ino_t ino) = 0; ++}; ++ ++#endif /* !Monitor_included */ diff --git a/abs/core-testing/fam/fam-2.7.0-gcc43.patch b/abs/core-testing/fam/fam-2.7.0-gcc43.patch new file mode 100644 index 0000000..a5ba7f0 --- /dev/null +++ b/abs/core-testing/fam/fam-2.7.0-gcc43.patch @@ -0,0 +1,46 @@ +diff -Naur fam-2.7.0-old/include/BTree.h fam-2.7.0/include/BTree.h +--- fam-2.7.0-old/include/BTree.h 2003-01-20 14:22:30.000000000 +1000 ++++ fam-2.7.0/include/BTree.h 2008-10-18 10:43:11.000000000 +1000 +@@ -23,6 +23,8 @@ + #ifndef BTree_included + #define BTree_included + ++#include <cstdlib> ++ + #include "Boolean.h" + + // This is an in-core B-Tree implementation. +diff -Naur fam-2.7.0-old/src/DNotify.c++ fam-2.7.0/src/DNotify.c++ +--- fam-2.7.0-old/src/DNotify.c++ 2008-10-18 10:33:13.000000000 +1000 ++++ fam-2.7.0/src/DNotify.c++ 2008-10-18 10:41:22.000000000 +1000 +@@ -31,6 +31,7 @@ + #include <sys/types.h> + #include <sys/stat.h> + #include <libgen.h> ++#include <cstdlib> + + #include "DNotify.h" + +diff -Naur fam-2.7.0-old/src/IMon.c++ fam-2.7.0/src/IMon.c++ +--- fam-2.7.0-old/src/IMon.c++ 2003-01-19 00:18:12.000000000 +1000 ++++ fam-2.7.0/src/IMon.c++ 2008-10-18 10:40:21.000000000 +1000 +@@ -40,7 +40,7 @@ + #include "Interest.h" + #include "Log.h" + #include "Scheduler.h" +-#include "alloc.h" ++#include <memory> + + int IMon::imonfd = -2; + IMon::EventHandler IMon::ehandler = NULL; +diff -Naur fam-2.7.0-old/src/Interest.h fam-2.7.0/src/Interest.h +--- fam-2.7.0-old/src/Interest.h 2008-10-18 10:33:13.000000000 +1000 ++++ fam-2.7.0/src/Interest.h 2008-10-18 10:40:44.000000000 +1000 +@@ -23,6 +23,7 @@ + #ifndef Interest_included + #define Interest_included + ++#include <cstdlib> + #include <sys/stat.h> + #include <sys/types.h> + #include <sys/time.h> diff --git a/abs/core-testing/fam/fam-2.7.0-largefiles.patch b/abs/core-testing/fam/fam-2.7.0-largefiles.patch new file mode 100644 index 0000000..60de9a4 --- /dev/null +++ b/abs/core-testing/fam/fam-2.7.0-largefiles.patch @@ -0,0 +1,8 @@ +--- fam-2.7.0/common.am 2003-01-19 06:09:08.000000000 -0600 ++++ fam-2.7.0.largefile/common.am 2005-01-12 19:08:06.462113110 -0600 +@@ -1,2 +1,5 @@ +-INCLUDES = @FAM_INC@ -DFAM_CONF=\"@FAM_CONF@\" ++INCLUDES = @FAM_INC@ -DFAM_CONF=\"@FAM_CONF@\" \ ++ -D_FILE_OFFSET_BITS=64 \ ++ -D_LARGEFILE64_SOURCE ++ diff --git a/abs/core-testing/fam/fam-2.7.0-noc++.patch b/abs/core-testing/fam/fam-2.7.0-noc++.patch new file mode 100644 index 0000000..9188af0 --- /dev/null +++ b/abs/core-testing/fam/fam-2.7.0-noc++.patch @@ -0,0 +1,83 @@ +diff -ruN fam-2.7.0/lib/Client.c++ fam-2.7.0.noc++/lib/Client.c++ +--- fam-2.7.0/lib/Client.c++ 2003-01-18 14:18:12.000000000 +0000 ++++ fam-2.7.0.noc++/lib/Client.c++ 2006-03-02 22:47:50.000000000 +0000 +@@ -34,8 +34,6 @@ + #include <syslog.h> + #include <errno.h> + +-#include <iostream.h> +- + #include "fam.h" + #include "Client.h" + +@@ -440,3 +438,29 @@ + memcpy(l, p, sizeof(u_int32_t)); + *l = ntohl(*l); + } ++ ++/* Some C++ stuff needed when we not link to libstdc++ */ ++void *operator new (size_t sz) ++{ ++ void *ret = malloc (sz); ++ if (ret == NULL) ++ { ++ fputs ("libfam memory allocation failed\n", stderr); ++ } ++ return ret; ++} ++ ++void *operator new[] (size_t sz) ++{ ++ return ::operator new(sz); ++} ++ ++void operator delete (void *ptr) ++{ ++ free (ptr); ++} ++ ++void operator delete[] (void *ptr) ++{ ++ free (ptr); ++} +diff -ruN fam-2.7.0/lib/Makefile.am fam-2.7.0.noc++/lib/Makefile.am +--- fam-2.7.0/lib/Makefile.am 2003-01-19 01:55:10.000000000 +0000 ++++ fam-2.7.0.noc++/lib/Makefile.am 2006-03-02 22:43:01.000000000 +0000 +@@ -7,8 +7,11 @@ + Client.h \ + fam.c++ + +-libfam_la_LDFLAGS = -export-symbols fam.sym +-libfam_la_LIBADD = -lstdc++ ++libfam_la_LDFLAGS = -Wl,--version-script=fam.sym.version ++libfam_la_LIBADD = ++AM_CXXFLAGS = -fno-exceptions -fno-rtti ++ ++CXXLD=--tag=CC $(CXX) + + EXTRA_DIST = fam.sym + +diff -ruN fam-2.7.0/lib/fam.sym.version fam-2.7.0.noc++/lib/fam.sym.version +--- fam-2.7.0/lib/fam.sym.version 1970-01-01 00:00:00.000000000 +0000 ++++ fam-2.7.0.noc++/lib/fam.sym.version 2006-03-02 22:49:31.000000000 +0000 +@@ -0,0 +1,20 @@ ++{ ++ global: ++ FAMCancelMonitor; ++ FAMClose; ++ FAMDebugLevel; ++ FamErrlist; ++ FAMErrno; ++ FAMMonitorCollection; ++ FAMMonitorDirectory; ++ FAMMonitorDirectory2; ++ FAMMonitorFile; ++ FAMMonitorFile2; ++ FAMNextEvent; ++ FAMOpen; ++ FAMOpen2; ++ FAMPending; ++ FAMResumeMonitor; ++ FAMSuspendMonitor; ++ local: *; ++}; diff --git a/abs/core-testing/fam/include_fam_h.patch b/abs/core-testing/fam/include_fam_h.patch new file mode 100644 index 0000000..4248957 --- /dev/null +++ b/abs/core-testing/fam/include_fam_h.patch @@ -0,0 +1,11 @@ +--- include/fam.h.orig 2005-05-25 09:26:38.000000000 +0000 ++++ include/fam.h 2005-05-25 09:27:04.000000000 +0000 +@@ -41,7 +41,7 @@ + *****************************************************************************/ + + /* For NAME_MAX - maximum # of chars in a filename */ +-#include "limits.h" ++#include <limits.h> + + + diff --git a/abs/core-testing/fftw/PKGBUILD b/abs/core-testing/fftw/PKGBUILD new file mode 100644 index 0000000..1556108 --- /dev/null +++ b/abs/core-testing/fftw/PKGBUILD @@ -0,0 +1,48 @@ +# $Id: PKGBUILD 20304 2008-12-02 10:48:00Z ronald $ +# Maintainer: Ronald van Haren <ronald.archlinux.org> +# Contributor: damir <damir@archlinux.org> + +pkgname=fftw +pkgver=3.2 +pkgrel=1 +pkgdesc="A library for computing the discrete Fourier transform (DFT)" +arch=('i686' 'x86_64') +license=('GPL2') +url="http://www.fftw.org/" +depends=('glibc') +options=(!libtool) +source=(http://www.fftw.org/${pkgname}-${pkgver}.tar.gz) +install=fftw.install + +# notes: +# http://www.fftw.org/fftw2_doc/fftw_6.html#SEC69 +# http://www.fftw.org/faq/section2.html#singleprec +# http://www.fftw.org/fftw3_doc/Precision.html#Precision + +build() { + cd ${srcdir}/${pkgname}-${pkgver} + + # build & install double precision + ./configure F77=gfortran --prefix=/usr \ + --enable-shared || return 1 + make || return 1 + make DESTDIR=${pkgdir} install || return 1 + make clean + + # build & install long double precission + ./configure F77=gfortran --prefix=/usr \ + --enable-long-double --enable-shared || return 1 + make || return 1 + make DESTDIR=${pkgdir} install || return 1 + make clean + + # build + install single precision + ./configure F77=gfortran --prefix=/usr \ + --enable-float --enable-shared || return 1 + make || return 1 + make DESTDIR=${pkgdir} install || return 1 + + # handle info files + rm -f $pkgdir/usr/share/info/dir + gzip $pkgdir/usr/share/info/* +} diff --git a/abs/core-testing/fftw/fftw.install b/abs/core-testing/fftw/fftw.install new file mode 100644 index 0000000..a3748aa --- /dev/null +++ b/abs/core-testing/fftw/fftw.install @@ -0,0 +1,22 @@ +info_dir=/usr/share/info +info_files=(fftw3.info) + +post_install() { + for f in ${info_files[@]}; do + install-info ${info_dir}/$f.gz ${info_dir}/dir 2> /dev/null + done +} + +post_upgrade() { + post_install +} + +pre_remove() { + for f in ${info_files[@]}; do + install-info --delete ${info_dir}/$f.gz ${info_dir}/dir 2> /dev/null + done +} + + + + diff --git a/abs/core-testing/fluxbox/ChangeLog b/abs/core-testing/fluxbox/ChangeLog new file mode 100644 index 0000000..f2f2e81 --- /dev/null +++ b/abs/core-testing/fluxbox/ChangeLog @@ -0,0 +1,10 @@ +2008-09-19 Eric Belanger <eric@archlinux.org> + + * fluxbox 1.1.1-1 + * Upstream update + +2008-09-05 Eric Belanger <eric@archlinux.org> + + * fluxbox 1.1.0.1-1 + * Upstream update + * Added ChangeLog diff --git a/abs/core-testing/fluxbox/PKGBUILD b/abs/core-testing/fluxbox/PKGBUILD index 6735ad0..6e1c9c0 100644 --- a/abs/core-testing/fluxbox/PKGBUILD +++ b/abs/core-testing/fluxbox/PKGBUILD @@ -1,9 +1,10 @@ -#add custom keys - +# $Id: PKGBUILD 12779 2008-09-20 06:42:07Z eric $ +# Maintainer: Eric Belanger <eric@archlinux.org> +# Contributor: John Proctor <jproctor@prium.net> pkgname=fluxbox -pkgver=1.0.0 -pkgrel=5 +pkgver=1.1.1 +pkgrel=2 pkgdesc="A lightweight and highly-configurable window manager" arch=('i686' 'x86_64') url="http://www.fluxbox.org" @@ -11,30 +12,22 @@ license=('MIT') depends=('libxft' 'libxpm' 'libxinerama' 'libxrandr' 'gcc-libs' 'bash' 'imlib2') makedepends=('pkgconfig') options=('!makeflags') -source=(http://downloads.sourceforge.net/sourceforge/$pkgname/$pkgname-$pkgver.tar.bz2 \ - $pkgname.desktop fluxbox-1.0.0-gcc43.patch keys) - -md5sums=('990e276ead0d04421dce4080f485caca' 'eeae9c88a2526ac0bd8afcd9ce97f9ed'\ - '9ddb3fcd5f080574a44f394282132b3c') -sha1sums=('7985e35fbb170fda24b9e04610690cd04c7a8748' - 'f3f83b8ce84d79c2f8670ef687e0dd89ab0552b8' - '51de3957bacfc4848529ba7df80bddca59b1a20b') +source=(http://downloads.sourceforge.net/sourceforge/${pkgname}/${pkgname}-${pkgver}.tar.bz2 \ + fluxbox.desktop keys) +md5sums=('fa9fa8fe9a44f86522de5754f8b285ca' 'eeae9c88a2526ac0bd8afcd9ce97f9ed' 'f5e10bf230728190830717ed9d17770c') +sha1sums=('6d49deb6c4c7d73f7567e1cf7d2575c7edc4825f' 'f3f83b8ce84d79c2f8670ef687e0dd89ab0552b8') build() { - cd $startdir/src/$pkgname-${pkgver} - patch -p1 < ../fluxbox-1.0.0-gcc43.patch || return 1 + cd ${srcdir}/${pkgname}-${pkgver} ./configure --prefix=/usr \ - --enable-kde --enable-gnome \ - --enable-xft --enable-xinerama \ - --enable-imlib2 --enable-nls + --enable-kde --enable-gnome \ + --enable-xft --enable-xinerama \ + --enable-imlib2 --enable-nls || return 1 make || return 1 - make DESTDIR=$startdir/pkg install + make DESTDIR=${pkgdir} install || return 1 # this is a fix to allow fluxbox to shutdown, but this can be changed by the user :-( - sed -i 's|^.*slit\.autoHide.*$|session.screen0.slit.autoHide: True|' \ - $startdir/pkg/usr/share/fluxbox/init - install -D -m644 ../$pkgname.desktop \ - $startdir/pkg/etc/X11/sessions/$pkgname.desktop - install -D -m644 COPYING $startdir/pkg/usr/share/licenses/$pkgname/COPYING - install -D -m655 $startdir/src/keys $startdir/pkg/usr/share/fluxbox/keys - + sed -i 's|^.*slit\.autoHide.*$|session.screen0.slit.autoHide: True|' ${pkgdir}/usr/share/fluxbox/init || return 1 + install -D -m644 ../fluxbox.desktop ${pkgdir}/etc/X11/sessions/fluxbox.desktop || return 1 + install -D -m644 ../keys ${pkgdir}/usr/share/fluxbox/keys || return 1 + install -D -m644 COPYING ${pkgdir}/usr/share/licenses/$pkgname/COPYING || return 1 } diff --git a/abs/core-testing/fluxbox/keys b/abs/core-testing/fluxbox/keys index 06e5f21..b412cbd 100644 --- a/abs/core-testing/fluxbox/keys +++ b/abs/core-testing/fluxbox/keys @@ -20,9 +20,9 @@ Mod1 F12 :Workspace 12 Mod1 x :ExecCommand xterm -fn *18* Mod1 s :ExecCommand mythtv-setup Mod1 m :ExecCommand mythfrontend -Mod1 1 :ExecCommand sudo /etc/rc.d/mythtv-backend start -Mod1 2 :ExecCommand sudo /etc/rc.d/mythtv-backend stop -Mod1 3 :ExecCommand sudo /etc/rc.d/mythtv-backend restart +Mod1 1 :ExecCommand sudo sv start mythbackend +Mod1 2 :ExecCommand sudo sv stop mythbackend +Mod1 3 :ExecCommand sudo sv restart mythbackend Mod1 h :ExecCommand MythVantage -h Mod1 Control u :ExecCommand killall -9 unclutter diff --git a/abs/core-testing/ghostscript/PKGBUILD b/abs/core-testing/ghostscript/PKGBUILD index 2cf5416..8edc722 100644 --- a/abs/core-testing/ghostscript/PKGBUILD +++ b/abs/core-testing/ghostscript/PKGBUILD @@ -1,19 +1,18 @@ -# $Id: PKGBUILD 7626 2008-08-03 15:52:01Z jgc $ +# $Id: PKGBUILD 20527 2008-12-05 14:17:31Z allan $ # Maintainer: AndyRTR <andyrtr@archlinux.org> pkgname=ghostscript pkgver=8.63 -pkgrel=3 +pkgrel=4 pkgdesc="An interpreter for the PostScript language" arch=(i686 x86_64) license=('GPL' 'custom') depends=('libxext' 'libxt' 'libcups>=1.3.8-2' 'fontconfig>=2.6.0' 'gtk2>=2.12.11' 'gnutls>=2.4.1') makedepends=('automake' 'autoconf') +optdepends=('texlive-core: dvipdf') replaces=('ghostscript-lrpng') provides=('ghostscript-lprng') url="http://www.cs.wisc.edu/~ghost/" -#url="http://www.cups.org/espgs/" -install=ghostscript.install source=(ftp://mirror.cs.wisc.edu/pub/mirrors/ghost/GPL/gs863/ghostscript-${pkgver}.tar.bz2 ghostscript-fPIC.patch) options=('!libtool' '!makeflags') diff --git a/abs/core-testing/gnutls/PKGBUILD b/abs/core-testing/gnutls/PKGBUILD index ec50f98..7e3981c 100644 --- a/abs/core-testing/gnutls/PKGBUILD +++ b/abs/core-testing/gnutls/PKGBUILD @@ -1,24 +1,26 @@ -# $Id: PKGBUILD 8715 2008-08-16 04:25:59Z eric $ +# $Id: PKGBUILD 22309 2008-12-25 19:07:27Z jgc $ # Maintainer: Jan de Groot <jgc@archlinux.org> # Notice: # When building a new major version, build, install, build again. # pkgname=gnutls -pkgver=2.4.1 +pkgver=2.6.3 pkgrel=1 pkgdesc="A library which provides a secure layer over a reliable transport layer" arch=(i686 x86_64) license=('GPL3' 'LGPL') url="http://www.gnu.org/software/gnutls/" +install=gnutls.install options=('libtool') -depends=('gcc-libs' 'libtasn1>=1.4' 'readline' 'zlib' 'libgcrypt>=1.4') +depends=('gcc-libs>=4.3.2' 'libtasn1>=1.7' 'readline' 'zlib' 'libgcrypt>=1.4.3') source=(ftp://ftp.gnutls.org/pub/gnutls/${pkgname}-${pkgver}.tar.bz2) -md5sums=('573db36cb3f8472b0293cfa1f52c607a') +md5sums=('c6d2d1996b87b238ad6f73f92225d9a2') build() { - cd ${startdir}/src/${pkgname}-${pkgver} + cd "${srcdir}/${pkgname}-${pkgver}" ./configure --prefix=/usr --with-zlib --disable-guile || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 + make DESTDIR="${pkgdir}" install || return 1 + rm -f "${pkgdir}/usr/share/info/dir" } diff --git a/abs/core-testing/gnutls/gnutls.install b/abs/core-testing/gnutls/gnutls.install new file mode 100644 index 0000000..0cf66fa --- /dev/null +++ b/abs/core-testing/gnutls/gnutls.install @@ -0,0 +1,18 @@ +infodir=/usr/share/info +filelist=(gnutls.info gnutls.info-1 gnutls.info-2 gnutls.info-3) + +post_install() { + for file in ${filelist[@]}; do + install-info $infodir/$file $infodir/dir 2> /dev/null + done +} + +post_upgrade() { + post_install $1 +} + +pre_remove() { + for file in ${filelist[@]}; do + install-info --delete $infodir/$file $infodir/dir 2> /dev/null + done +} diff --git a/abs/core-testing/gsfonts/PKGBUILD b/abs/core-testing/gsfonts/PKGBUILD index 5294731..01bb023 100644 --- a/abs/core-testing/gsfonts/PKGBUILD +++ b/abs/core-testing/gsfonts/PKGBUILD @@ -8,7 +8,7 @@ arch=(i686 x86_64) depends=('xorg-font-utils' 'fontconfig') install=xfonts.install url="http://sourceforge.net/projects/ghostscript" -source=(http://switch.dl.sourceforge.net/ghostscript/ghostscript-fonts-std-8.11.tar.gz) +source=(http://superb-east.dl.sourceforge.net/sourceforge/gs-fonts/ghostscript-fonts-std-8.11.tar.gz) md5sums=('6865682b095f8c4500c54b285ff05ef6') build() { diff --git a/abs/core-testing/gtk2/PKGBUILD b/abs/core-testing/gtk2/PKGBUILD index d119d56..1966409 100644 --- a/abs/core-testing/gtk2/PKGBUILD +++ b/abs/core-testing/gtk2/PKGBUILD @@ -1,14 +1,14 @@ -# $Id: PKGBUILD 19648 2008-11-28 20:15:22Z jgc $ +# $Id: PKGBUILD 22045 2008-12-21 13:00:15Z jgc $ # Maintainer: Jan de Groot <jgc@archlinux.org> pkgname=gtk2 -pkgver=2.14.5 +pkgver=2.14.6 pkgrel=1 pkgdesc="The GTK+ Toolkit (v2)" arch=(i686 x86_64) url="http://www.gtk.org/" install=gtk2.install -depends=('atk>=1.24.0' 'pango>=1.22.3' 'libxcursor' 'libxinerama' 'libxrandr>=1.2.1' 'libxi' 'libcups>=1.3.9' 'libxcomposite' 'libxdamage' 'heimdal>=1.2' 'gnutls>=2.4.1') +depends=('atk>=1.24.0' 'pango>=1.22.4' 'libxcursor' 'libxinerama' 'libxrandr>=1.2.1' 'libxi' 'libcups>=1.3.9' 'libxcomposite' 'libxdamage' 'heimdal>=1.2.1' 'gnutls>=2.4.2') makedepends=('pkgconfig') replaces=('gtkprint-cups' 'gail') conflicts=('gtkprint-cups' 'gail') @@ -17,21 +17,25 @@ options=('!libtool' '!docs') backup=(etc/gtk-2.0/gtkrc) license=('LGPL') source=(http://ftp.gnome.org/pub/gnome/sources/gtk+/2.14/gtk+-${pkgver}.tar.bz2 - gtkclipboard-check.patch) -md5sums=('1b1b5d7ab5a25e84682cb27ee4808a40' - '4025d3c15d6c6f73a032f403ffd4ff1c') + gtkclipboard-check.patch + gtk2-emit-size-change.patch) +md5sums=('69c2d2842203d7b627bc6ec34cb4a4f8' + '4025d3c15d6c6f73a032f403ffd4ff1c' + '942981cbba5057d9f02f4393e552f101') build() { - cd ${startdir}/src/gtk+-${pkgver} + cd "${srcdir}/gtk+-${pkgver}" # Workaround patch for flash - patch -Np1 -i ${startdir}/src/gtkclipboard-check.patch || return 1 + patch -Np1 -i "${srcdir}/gtkclipboard-check.patch" || return 1 + # gdk does not let xfwm know about screen size changes + patch -Np1 -i "${srcdir}/gtk2-emit-size-change.patch" || return 1 ./configure --prefix=/usr --sysconfdir=/etc \ --localstatedir=/var --with-xinput=yes \ --without-libjasper \ --with-included-loaders=png || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 + make DESTDIR="${pkgdir}" install || return 1 - echo 'gtk-fallback-icon-theme = "gnome"' > ${startdir}/pkg/etc/gtk-2.0/gtkrc || return 1 + echo 'gtk-fallback-icon-theme = "gnome"' > "${pkgdir}/etc/gtk-2.0/gtkrc" || return 1 } diff --git a/abs/core-testing/gtk2/gtk2-emit-size-change.patch b/abs/core-testing/gtk2/gtk2-emit-size-change.patch new file mode 100644 index 0000000..34053a8 --- /dev/null +++ b/abs/core-testing/gtk2/gtk2-emit-size-change.patch @@ -0,0 +1,26 @@ +diff -Naur gtk+-2.14.5-old/gdk/x11/gdkscreen-x11.c gtk+-2.14.5/gdk/x11/gdkscreen-x11.c +--- gtk+-2.14.5-old/gdk/x11/gdkscreen-x11.c 2008-11-24 16:36:03.000000000 +1000 ++++ gtk+-2.14.5/gdk/x11/gdkscreen-x11.c 2008-12-03 00:39:38.000000000 +1000 +@@ -894,11 +894,6 @@ + _gdk_x11_screen_size_changed (GdkScreen *screen, + XEvent *event) + { +- gint width, height; +- +- width = gdk_screen_get_width (screen); +- height = gdk_screen_get_height (screen); +- + #ifdef HAVE_RANDR + if (!XRRUpdateConfiguration (event)) + return; +@@ -915,10 +910,6 @@ + return; + #endif + +- if (width == gdk_screen_get_width (screen) && +- height == gdk_screen_get_height (screen)) +- return; +- + _gdk_x11_screen_process_monitors_change (screen); + g_signal_emit_by_name (screen, "size_changed"); + } diff --git a/abs/core-testing/hal-info/PKGBUILD b/abs/core-testing/hal-info/PKGBUILD index 7f697c8..a7f8dd0 100644 --- a/abs/core-testing/hal-info/PKGBUILD +++ b/abs/core-testing/hal-info/PKGBUILD @@ -1,23 +1,23 @@ -# $Id: PKGBUILD 2153 2008-05-27 14:12:39Z jgc $ +# $Id: PKGBUILD 22303 2008-12-25 18:44:16Z jgc $ # Maintainer: Jan de Groot <jgc@archlinux.org> pkgname=hal-info -_date=20080508 -pkgver=0.20080508 +_date=20081219 +pkgver=0.${_date} pkgrel=1 pkgdesc="Hardware Abstraction Layer information files" arch=(i686 x86_64) license=('GPL' 'custom') url="http://www.freedesktop.org/wiki/Software/hal" source=(http://hal.freedesktop.org/releases/hal-info-${_date}.tar.gz) -md5sums=('6fc99d15d38945c17a291ea93e664664') +md5sums=('be7d6d47fd18250a99a3267e712d8af7') build() { - cd ${startdir}/src/${pkgname}-${_date} + cd "${srcdir}/${pkgname}-${_date}" ./configure --prefix=/usr --sysconfdir=/etc || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 + make DESTDIR="${pkgdir}" install || return 1 - install -m755 -d ${startdir}/pkg/usr/share/licenses/${pkgname} - install -m644 COPYING ${startdir}/pkg/usr/share/licenses/${pkgname}/ || return 1 + install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}" + install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/" || return 1 } diff --git a/abs/core-testing/hal/PKGBUILD b/abs/core-testing/hal/PKGBUILD index f1a3b3f..4bad72d 100644 --- a/abs/core-testing/hal/PKGBUILD +++ b/abs/core-testing/hal/PKGBUILD @@ -1,10 +1,10 @@ -# $Id: PKGBUILD 8861 2008-08-16 22:34:13Z eric $ +# $Id: PKGBUILD 12450 2008-09-14 10:49:05Z pierre $ # Maintainer: Jan de Groot <jgc@archlinux.org> # Contributor: Link Dupont <link@subpop.net> pkgname=hal pkgver=0.5.11 -pkgrel=1 +pkgrel=4 pkgdesc="Hardware Abstraction Layer" arch=(i686 x86_64) license=('GPL' 'custom') @@ -18,10 +18,17 @@ source=(http://hal.freedesktop.org/releases/${pkgname}-${pkgver}.tar.bz2 hal-policy.patch cryptsetup_location.patch hal-0.5.9-hide-diagnostic.patch - ntfs3g-valid-options.patch) -md5sums=('5e8935ab61bcb14afd2d4548084aace0' '277e96ac130d7bfce0b30f0b80db8782'\ - '18dcdaa79952e2057c2e4745fbc8ad52' 'c688a3c6574699365926f4fef7441545'\ - '4d4b6801a1cedca22b8bdd9db73b16fb' '4242a2c78885e396f639d0cd5e33218c') + ntfs3g-valid-options.patch + fix-udev-compatibility.patch + ntfs-mount-fix.patch) +md5sums=('5e8935ab61bcb14afd2d4548084aace0' + '277e96ac130d7bfce0b30f0b80db8782' + '18dcdaa79952e2057c2e4745fbc8ad52' + 'c688a3c6574699365926f4fef7441545' + '4d4b6801a1cedca22b8bdd9db73b16fb' + '4242a2c78885e396f639d0cd5e33218c' + '1a33d73fa422df2f05b7e3483836f778' + '96cf8835c30dc581c4fcf72b6ad7675e') build() { cd ${startdir}/src/${pkgname}-${pkgver} @@ -29,6 +36,9 @@ build() { patch -Np1 -i ${startdir}/src/cryptsetup_location.patch || return 1 patch -Np1 -i ${startdir}/src/hal-0.5.9-hide-diagnostic.patch || return 1 patch -Np0 -i ${startdir}/src/ntfs3g-valid-options.patch || return 1 + # Fix compatibility with udev 126 and later + patch -Np1 -i ${startdir}/src/fix-udev-compatibility.patch || return 1 + patch -p0 -i ${srcdir}/ntfs-mount-fix.patch || return 1 ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var \ --libexecdir=/usr/lib/hal --enable-static=no \ diff --git a/abs/core-testing/hal/fix-udev-compatibility.patch b/abs/core-testing/hal/fix-udev-compatibility.patch new file mode 100644 index 0000000..2cfa3ad --- /dev/null +++ b/abs/core-testing/hal/fix-udev-compatibility.patch @@ -0,0 +1,31 @@ +diff -Nur hal-0.5.11.orig/hald/linux/blockdev.c hal-0.5.11/hald/linux/blockdev.c +--- hal-0.5.11.orig/hald/linux/blockdev.c 2008-05-08 01:23:41.000000000 +0200 ++++ hal-0.5.11/hald/linux/blockdev.c 2008-09-12 19:38:36.000000000 +0200 +@@ -1750,11 +1750,11 @@ + char *ret; + char *u_stdout; + int u_exit_status; +- const char *argv[] = {"/usr/bin/udevinfo", "--root", "--query", "name", "--path", NULL, NULL}; ++ const char *argv[] = {"/sbin/udevadm", "info", "--root", "--query", "name", "--path", NULL, NULL}; + GError *g_error; + + ret = NULL; +- argv[5] = sysfs_path; ++ argv[6] = sysfs_path; + + g_error = NULL; + +diff -Nur hal-0.5.11.orig/hald/linux/coldplug.c hal-0.5.11/hald/linux/coldplug.c +--- hal-0.5.11.orig/hald/linux/coldplug.c 2008-05-08 01:23:32.000000000 +0200 ++++ hal-0.5.11/hald/linux/coldplug.c 2008-09-12 19:37:47.000000000 +0200 +@@ -149,8 +149,8 @@ + static gboolean + hal_util_init_sysfs_to_udev_map (void) + { +- char *udevdb_export_argv[] = { "/usr/bin/udevinfo", "-e", NULL }; +- char *udevroot_argv[] = { "/usr/bin/udevinfo", "-r", NULL }; ++ char *udevdb_export_argv[] = { "/sbin/udevadm", "info", "-e", NULL }; ++ char *udevroot_argv[] = { "/sbin/udevadm", "info", "-r", NULL }; + int udevinfo_exitcode; + UdevInfo *info = NULL; + char *p; diff --git a/abs/core-testing/hal/ntfs-mount-fix.patch b/abs/core-testing/hal/ntfs-mount-fix.patch new file mode 100644 index 0000000..13597f2 --- /dev/null +++ b/abs/core-testing/hal/ntfs-mount-fix.patch @@ -0,0 +1,18 @@ +--- tools/hal-storage-mount.c.orig 2008-04-21 01:48:27.000000000 +0200 ++++ tools/hal-storage-mount.c 2008-04-21 01:47:44.000000000 +0200 +@@ -769,13 +769,13 @@ + + if (pol_is_fixed) { + if (pol_change_uid) { +- action = NULL; /* "hal-storage-mount-fixed-extra-options"; TODO: rethink */ ++ action = "hal-storage-mount-fixed-extra-options"; /*TODO: rethink */ + } else { + action = "org.freedesktop.hal.storage.mount-fixed"; + } + } else { + if (pol_change_uid) { +- action = NULL; /* "hal-storage-mount-removable-extra-options"; TODO: rethink "extra-options" */ ++ action = "hal-storage-mount-removable-extra-options"; /*TODO: rethink "extra-options" */ + } else { + action = "org.freedesktop.hal.storage.mount-removable"; + } diff --git a/abs/core-testing/heimdal/PKGBUILD b/abs/core-testing/heimdal/PKGBUILD index 4c79af6..06dd0cd 100644 --- a/abs/core-testing/heimdal/PKGBUILD +++ b/abs/core-testing/heimdal/PKGBUILD @@ -1,33 +1,33 @@ -# $Id: PKGBUILD 3738 2008-06-30 20:03:06Z andyrtr $ -# Maintainer: Jan de Groot <jgc@archlinux.org> +# $Id: PKGBUILD 21345 2008-12-12 02:52:37Z allan $ +# Maintainer: Allan McRae <allan@archlinux.org> +# Contributor: Jan de Groot <jgc@archlinux.org> # -### Attention: build it 2 times - it links against itself! ### -# ^ better remove old pkg before ;) +### Attention: remove old pkg before building - it links against itself! ### +# pkgname=heimdal -pkgver=1.2 -pkgrel=1 -pkgdesc="Heimdal Kerberos V5 libraries" -arch=(i686 x86_64) -url="http://www.pdc.kth.se/heimdal/" +pkgver=1.2.1 +pkgrel=2 +pkgdesc="Implementation of Kerberos V5 libraries" +arch=('i686' 'x86_64') +url="http://www.h5l.org/" license=('custom') depends=('db>=4.7' 'openssl' 'e2fsprogs') -options=('!libtool' '!emptydirs') backup=(etc/krb5.conf) -source=(http://www.h5l.org/dist/src/heimdal-$pkgver.tar.gz \ +options=('!libtool' '!emptydirs') +install=$pkgname.install +source=(http://www.h5l.org/dist/src/${pkgname}-${pkgver}.tar.gz \ 002_all_heimdal-no_libedit.patch \ 003_all_heimdal-fPIC.patch \ 004_all_heimdal-rxapps.patch \ - #006_all_heimdal-suid_fix.patch \ heimdal-kdc.rc \ kadmind.rc \ kpasswd.rc) -md5sums=('8d6b690069acd2ae8ada1315174f52f9' +md5sums=('6e5028077e2a6b101a4a72801ba71b9e' '1199c4a4a38e9c2b2c0a99bd5781767a' '3d0262aa218e1611500de735d3581e28' '0fe81cb1e33b2a2e60edaf47dfdfe4de' - #'30372b1581e4d49a76688e450fd42443' 'e59650992b9541a30dfce727a194f6e0' '1f2f86a67bbfddb7af581d35fdca9627' 'f8f1eca95b9d3f2b4ebf2417b71b81cf') @@ -39,24 +39,13 @@ build() { patch -Np0 -i ${srcdir}/002_all_heimdal-no_libedit.patch || return 1 patch -Np0 -i ${srcdir}/003_all_heimdal-fPIC.patch || return 1 patch -Np0 -i ${srcdir}/004_all_heimdal-rxapps.patch || return 1 -# patch -Np0 -i ${srcdir}/006_all_heimdal-suid_fix.patch || return 1 - -# libtoolize -f -c || return 1 -# aclocal -I cf || return 1 -# autoheader || return 1 -# automake -a || return 1 -# autoconf || return 1 -# libtoolize -f -c || return 1 - -# autoreconf || return 1 -# libtoolize -f -c || return 1 sed -i -e 's|var/heimdal|var/lib/heimdal|g' configure.in configure \ doc/setup.texi doc/heimdal.info kadmin/kadmind.8 kdc/kdc.8 \ lib/hdb/hdb.h lib/krb5/krb5.conf.5 lib/krb5/krb5.conf.cat5 ./configure --prefix=/usr --enable-shared=yes --without-x \ - --sysconfdir=/etc --mandir=/usr/man \ + --sysconfdir=/etc --mandir=/usr/share/man \ --datadir=/var/lib/heimdal \ --localstatedir=/var/lib/heimdal \ --with-openssl=/usr \ @@ -69,35 +58,35 @@ build() { make DESTDIR=${pkgdir} install || return 1 for i in telnetd ftpd rshd; do - mv ${pkgdir}/usr/man/man8/${i}.8 ${pkgdir}/usr/man/man8/k${i}.8 + mv ${pkgdir}/usr/share/man/man8/${i}.8 ${pkgdir}/usr/share/man/man8/k${i}.8 mv ${pkgdir}/usr/sbin/${i} ${pkgdir}/usr/sbin/k${i} done for i in rcp rsh telnet ftp su login; do - if [ -f ${pkgdir}/usr/man/man1/${i}.1 ]; then - mv ${pkgdir}/usr/man/man1/${i}.1 ${pkgdir}/usr/man/man1/k${i}.1 + if [ -f ${pkgdir}/usr/share/man/man1/${i}.1 ]; then + mv ${pkgdir}/usr/share/man/man1/${i}.1 ${pkgdir}/usr/share/man/man1/k${i}.1 fi mv ${pkgdir}/usr/bin/${i} ${pkgdir}/usr/bin/k${i} done - rm -rf ${pkgdir}/usr/man/cat{1,3,5,8} + rm -rf ${pkgdir}/usr/share/man/cat{1,3,5,8} - #Arch could be a KDC too + # Arch could be a KDC too mkdir -p ${pkgdir}/etc/rc.d install -m644 ${srcdir}/heimdal-${pkgver}/krb5.conf ${pkgdir}/etc for i in heimdal-kdc kadmind kpasswd; do install -m755 ${srcdir}/${i}.rc ${pkgdir}/etc/rc.d/${i} done - #Remove some conflicts - rm ${pkgdir}/usr/man/man5/ftpusers.5* - rm ${pkgdir}/usr/man/man5/login.access.5* - # and some more - rm ${pkgdir}/usr/bin/mk_cmds - rm ${pkgdir}/usr/include/ss/ss.h - rm ${pkgdir}/usr/lib/libss.a - rm ${pkgdir}/usr/lib/libss.so + # Remove conflicts + rm ${pkgdir}/usr/share/man/man5/ftpusers.5* # man-pages + rm ${pkgdir}/usr/share/info/dir + + # Compress info pages + for page in heimdal hx509; do + gzip -9 ${pkgdir}/usr/share/info/${page}.info + done - # install the license + # Install the license install -D -m644 ${srcdir}/${pkgname}-${pkgver}/LICENSE \ ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE } diff --git a/abs/core-testing/heimdal/heimdal.install b/abs/core-testing/heimdal/heimdal.install new file mode 100644 index 0000000..499d216 --- /dev/null +++ b/abs/core-testing/heimdal/heimdal.install @@ -0,0 +1,20 @@ +infodir=/usr/share/info +filelist=(heimdal hx509) + +post_install() { + for file in ${filelist[@]}; do + install-info $infodir/$file.info.gz $infodir/dir 2> /dev/null + done +} + +post_upgrade() { + post_install $1 +} + +pre_remove() { + for file in ${filelist[@]}; do + install-info --delete $infodir/$file.info.gz $infodir/dir 2> /dev/null + done +} + +# vim:set ts=2 sw=2 et: diff --git a/abs/core-testing/ilmbase/PKGBUILD b/abs/core-testing/ilmbase/PKGBUILD new file mode 100644 index 0000000..b8930a5 --- /dev/null +++ b/abs/core-testing/ilmbase/PKGBUILD @@ -0,0 +1,22 @@ +# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# Maintainer: Tobias Powalowski <tpowa@archlinux.org> + +pkgname=ilmbase +pkgver=1.0.1 +pkgrel=1 +depends=('gcc-libs') +pkgdesc="IlmThread is a thread abstraction library for use with OpenEXR" +arch=(i686 x86_64) +license=('custom') +options=('!libtool') +source=(http://savannah.nongnu.org/download/openexr/$pkgname-$pkgver.tar.gz) +url="http://www.openexr.org" +md5sums=('f76f094e69a6079b0beb93d97e2a217e') + +build() { + cd $startdir/src/$pkgname-$pkgver + ./configure --prefix=/usr + make || return 1 + make DESTDIR=$startdir/pkg install + install -D -m644 COPYING $pkgdir/usr/share/licenses/$pkgname/COPYING +} diff --git a/abs/core-testing/imagemagick/ChangeLog b/abs/core-testing/imagemagick/ChangeLog index 8b3a5fb..e46815d 100644 --- a/abs/core-testing/imagemagick/ChangeLog +++ b/abs/core-testing/imagemagick/ChangeLog @@ -1,3 +1,50 @@ +2008-12-29 Eric Belanger <eric@archlinux.org> + + * imagemagick 6.4.8.2-1 + * Upstream update + +2008-12-14 Eric Belanger <eric@archlinux.org> + + * imagemagick 6.4.7.8-1 + * Upstream update + +2008-12-05 Eric Belanger <eric@archlinux.org> + + * imagemagick 6.4.7.0-1 + * Upstream update + * Rebuild against heimdal 1.2.1 + +2008-11-25 Eric Belanger <eric@archlinux.org> + + * imagemagick 6.4.6.3-1 + * Upstream update + +2008-11-14 Eric Belanger <eric@archlinux.org> + + * imagemagick 6.4.5.6-1 + * Upstream update + +2008-10-26 Eric Belanger <eric@archlinux.org> + + * imagemagick 6.4.5.0-1 + * Upstream update + +2008-10-18 Eric Belanger <eric@archlinux.org> + + * imagemagick 6.4.4.9-1 + * Upstream update + +2008-10-03 Eric Belanger <eric@archlinux.org> + + * imagemagick 6.4.4.1-1 + * Upstream update + +2008-09-06 Eric Belanger <eric@archlinux.org> + + * imagemagick 6.4.3.6-1 + * Upstream update + * Added JPEG2000 support (close FS#10544) + 2008-08-19 Eric Belanger <eric@archlinux.org> * imagemagick 6.4.2.10-1 diff --git a/abs/core-testing/imagemagick/PKGBUILD b/abs/core-testing/imagemagick/PKGBUILD index 79555bf..ac04f26 100644 --- a/abs/core-testing/imagemagick/PKGBUILD +++ b/abs/core-testing/imagemagick/PKGBUILD @@ -1,4 +1,4 @@ -# $Id: PKGBUILD 9867 2008-08-20 05:56:48Z eric $ +# $Id: PKGBUILD 22960 2008-12-30 05:45:59Z eric $ # Maintainer: Eric Belanger <eric@archlinux.org> # NOTE: ImageMagick builds against an existing installation @@ -8,39 +8,39 @@ # install old package, build new package, install new package, rebuild pkgname=imagemagick -pkgver=6.4.2.10 +pkgver=6.4.8.2 pkgrel=1 pkgdesc="An image viewing/manipulation program" arch=('i686' 'x86_64') url="http://www.imagemagick.org/" license=('custom') -depends=('lcms' 'libwmf' 'librsvg' 'libxt' 'gcc-libs' 'ghostscript' 'openexr' 'libtool>=2.2' 'bzip2' 'libxml2') +depends=('lcms' 'libwmf' 'librsvg' 'libxt' 'gcc-libs' 'ghostscript' 'openexr' 'libtool>=2.2' 'heimdal>=1.2.1' 'bzip2' 'libxml2' 'jasper') #makedepends=('ghostscript' 'openexr') options=('!makeflags' '!docs') source=(ftp://ftp.imagemagick.org/pub/ImageMagick/ImageMagick-${pkgver%.*}-${pkgver##*.}.tar.bz2 \ libpng_mmx_patch_x86_64.patch add_delegate.patch) -md5sums=('f60ae313a2cc2fcc980543165e7ebaf4' '069980fc2590c02aed86420996259302'\ +md5sums=('8454e93a0b88fd9319157b5301deff38' '069980fc2590c02aed86420996259302'\ '7f5851c4450b73d52df55c7e806cc316') -sha1sums=('0c45712a07b0d337ac4130c3ad605566d013ea3f' +sha1sums=('e5de65c998776c5b49a1b364d05ca3515310e23a' 'e42f3acbe85b6098af75c5cecc9a254baaa0482c' '19b40dcbc5bf8efb8ce7190fed17e2921de32ea5') build() { - cd ${srcdir}/ImageMagick-${pkgver%.*} + cd ${srcdir}/ImageMagick-${pkgver%.*}-${pkgver##*.} if [ "${CARCH}" = "x86_64" ]; then patch -Np1 < ../libpng_mmx_patch_x86_64.patch || return 1 fi patch -p0 < ../add_delegate.patch || return 1 + sed -i "s/with_autotrace='no'/with_autotrace='yes'/" configure || return 1 - #LIBS=-lMagickWand ./configure --prefix=/usr --without-modules --disable-static --disable-openmp \ - ./configure --prefix=/usr --without-modules --disable-static --disable-openmp \ - --with-x --with-wmf --with-openexr \ + LIBS=-lMagickWand ./configure --prefix=/usr --without-modules --disable-static --enable-openmp \ + --with-x --with-wmf --with-openexr --with-xml \ --with-gslib --with-gs-font-dir=/usr/share/fonts/Type1 \ --with-perl --with-perl-options="INSTALLDIRS=vendor" \ - --without-gvc --without-djvu --without-jp2 \ - --without-fpx --without-dps || return 1 + --without-gvc --without-djvu --with-jp2 \ + --without-jbig --without-fpx --without-dps || return 1 make || return 1 make DESTDIR=${pkgdir} install || return 1 diff --git a/abs/core-testing/inputproto/PKGBUILD b/abs/core-testing/inputproto/PKGBUILD index ddd445c..abbb0fc 100644 --- a/abs/core-testing/inputproto/PKGBUILD +++ b/abs/core-testing/inputproto/PKGBUILD @@ -1,22 +1,22 @@ -# $Id: PKGBUILD 670 2008-04-21 13:49:33Z alexander $ +# $Id: PKGBUILD 7996 2008-08-05 17:48:09Z jgc $ # Maintainer: Alexander Baldeck <alexander@archlinux.org> # Contributor: Jan de Groot <jgc@archlinux.org> pkgname=inputproto -pkgver=1.4.3 +pkgver=1.4.4 pkgrel=1 pkgdesc="X11 Input extension wire protocol" arch=(i686 x86_64) license=('custom') url="http://xorg.freedesktop.org/" source=(${url}/releases/individual/proto/${pkgname}-${pkgver}.tar.bz2) +md5sums=('3a532379f226c34b36a5c585999f75e4') build() { - cd ${startdir}/src/${pkgname}-${pkgver} - ./configure --prefix=/usr + cd ${srcdir}/${pkgname}-${pkgver} + ./configure --prefix=/usr || return 1 make || return 1 make DESTDIR=${startdir}/pkg install || return 1 - install -D -m644 ${startdir}/src/${pkgname}-${pkgver}/COPYING \ - ${startdir}/pkg/usr/share/licenses/${pkgname}/COPYING + install -m755 -d ${pkgdir}/usr/share/licenses/${pkgname} + install -m644 COPYING ${pkgdir}/usr/share/licenses/${pkgname}/ || return 1 } -md5sums=('a0f0d8cf6fbf0db8ba3937d0cc16138d') diff --git a/abs/core-testing/intel-dri/PKGBUILD b/abs/core-testing/intel-dri/PKGBUILD index 167f4e4..8da4e48 100644 --- a/abs/core-testing/intel-dri/PKGBUILD +++ b/abs/core-testing/intel-dri/PKGBUILD @@ -2,37 +2,42 @@ # Maintainer: Alexander Baldeck <alexander@archlinux.org> # Contributor: Jan de Groot <jgc@archlinux.org> pkgname=intel-dri -pkgver=7.0.3 -pkgrel=1 +pkgver=7.2 +pkgrel=2 pkgdesc="Mesa DRI drivers for Intel chipsets" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" -depends=('libdrm>=2.3.0' 'expat>=2.0') -makedepends=('imake' 'mesa>=7.0.3' 'glproto>=1.4.9') +depends=('libdrm>=2.3.1' 'expat>=2.0.1' 'libgl>=7.2') +makedepends=('glproto>=1.4.9' 'pkgconfig' 'libxfixes' 'libxdamage' 'libxxf86vm' 'libxext') options=('!libtool') -source=(http://downloads.sourceforge.net/sourceforge/mesa3d/MesaLib-${pkgver}.tar.bz2) -md5sums=('e6e6379d7793af40a6bc3ce1bace572e') +source=(http://downloads.sourceforge.net/mesa3d/MesaLib-${pkgver}.tar.bz2 + mesa-7.1-link-shared.patch + intel-revert-vbl.patch + intel-disable-ttm-warning.patch) +md5sums=('04d379292e023df0b0266825cb0dbde5' + 'f0baa948d9810f268413111ee439d24b' + 'a111f4dc82e894f8801bc3fa129af7af' + 'a393d374b5d187ff2a5bb90b0f347c9a') build() { - cd ${startdir}/src/Mesa-${pkgver}/configs - - CONFIG="linux-dri-x86" - [ "$CARCH" = "x86_64" ] && CONFIG="linux-dri-x86-64" - echo "EXTRA_LIB_PATH =" >> ${CONFIG} - echo "OPT_FLAGS = ${CFLAGS} -fno-strict-aliasing" >> ${CONFIG} - echo "SRC_DIRS = glx/x11 mesa" >> ${CONFIG} - echo "USING_EGL = 0" >> ${CONFIG} - echo "PROGRAM_DIRS =" >> ${CONFIG} - echo "MKDEP = makedepend" >> ${CONFIG} - echo "DRI_DIRS = i810 i915 i915tex i965" >> ${CONFIG} - echo "DRI_DRIVER_SEARCH_DIR = /usr/lib/xorg/modules/dri" >> ${CONFIG} - echo "DRI_DRIVER_INSTALL_DIR = /usr/lib/xorg/modules/dri" >> ${CONFIG} - echo "ARCH_FLAGS += -DGLX_USE_TLS" >> ${CONFIG} - echo "X11_INCLUDES = `pkg-config --cflags-only-I x11`" >> ${CONFIG} - - ln -s ${CONFIG} current - cd ${startdir}/src/Mesa-${pkgver}/src/mesa - make linux-solo || return 1 - cd drivers/dri - make DESTDIR=${startdir}/pkg install || return 1 + cd ${srcdir}/Mesa-${pkgver} + patch -Np1 -i "${srcdir}/intel-revert-vbl.patch" || return 1 + patch -Np1 -i "${srcdir}/intel-disable-ttm-warning.patch" || return 1 + patch -Np1 -i "${srcdir}/mesa-7.1-link-shared.patch" || return 1 + ./configure --prefix=/usr \ + --with-dri-driverdir=/usr/lib/xorg/modules/dri \ + --with-dri-drivers=i810,i915,i965 \ + --enable-glx-tls \ + --disable-ttm-api \ + --with-driver=dri \ + --enable-xcb \ + --disable-glu \ + --disable-glut \ + --disable-glw || return 1 + make || return 1 + cd src/mesa/drivers/dri || return 1 + make DESTDIR=${pkgdir} install || return 1 + rm -rf ${pkgdir}/usr/lib/pkgconfig + rm -rf ${pkgdir}/usr/include + rm -f ${pkgdir}/usr/lib/xorg/modules/dri/libdricore.so } diff --git a/abs/core-testing/intel-dri/intel-disable-ttm-warning.patch b/abs/core-testing/intel-dri/intel-disable-ttm-warning.patch new file mode 100644 index 0000000..f9d5223 --- /dev/null +++ b/abs/core-testing/intel-dri/intel-disable-ttm-warning.patch @@ -0,0 +1,13 @@ +diff -ruN Mesa-7.2.orig/src/mesa/drivers/dri/intel/intel_context.c Mesa-7.2/src/mesa/drivers/dri/intel/intel_context.c +--- Mesa-7.2.orig/src/mesa/drivers/dri/intel/intel_context.c 2008-09-13 20:25:44.000000000 +0000 ++++ Mesa-7.2/src/mesa/drivers/dri/intel/intel_context.c 2008-12-21 21:27:45.000000000 +0000 +@@ -490,9 +490,6 @@ + if (intel->bufmgr == NULL) { + if (ttm_disable) { + fprintf(stderr, "TTM buffer manager disabled. Using classic.\n"); +- } else { +- fprintf(stderr, "Failed to initialize TTM buffer manager. " +- "Falling back to classic.\n"); + } + + if (intelScreen->tex.size == 0) { diff --git a/abs/core-testing/intel-dri/intel-revert-vbl.patch b/abs/core-testing/intel-dri/intel-revert-vbl.patch new file mode 100644 index 0000000..0394414 --- /dev/null +++ b/abs/core-testing/intel-dri/intel-revert-vbl.patch @@ -0,0 +1,21 @@ +commit 532d2051245a1d8afe7ca236f1d966d555bb121a +Author: Dave Airlie <airlied@linux.ie> +Date: Fri Sep 12 17:21:25 2008 +1000 + + Revert "intel: sync to vblank by default" + + This reverts commit e9bf3e4cc9a7e4bcd4c45bd707541d26ecdf0409. + +diff --git a/src/mesa/drivers/dri/intel/intel_screen.c b/src/mesa/drivers/dri/intel/intel_screen.c +index c193830..f02192d 100644 +--- a/src/mesa/drivers/dri/intel/intel_screen.c ++++ b/src/mesa/drivers/dri/intel/intel_screen.c +@@ -55,7 +55,7 @@ PUBLIC const char __driConfigOptions[] = + DRI_CONF_BEGIN + DRI_CONF_SECTION_PERFORMANCE + DRI_CONF_FTHROTTLE_MODE(DRI_CONF_FTHROTTLE_IRQS) +- DRI_CONF_VBLANK_MODE(DRI_CONF_VBLANK_ALWAYS_SYNC) ++ DRI_CONF_VBLANK_MODE(DRI_CONF_VBLANK_DEF_INTERVAL_0) + /* Options correspond to DRI_CONF_BO_REUSE_DISABLED, + * DRI_CONF_BO_REUSE_ALL + */ diff --git a/abs/core-testing/intel-dri/mesa-7.1-link-shared.patch b/abs/core-testing/intel-dri/mesa-7.1-link-shared.patch new file mode 100644 index 0000000..7fdbf14 --- /dev/null +++ b/abs/core-testing/intel-dri/mesa-7.1-link-shared.patch @@ -0,0 +1,102 @@ +diff -up mesa-20080814/src/mesa/drivers/dri/Makefile.dricore mesa-20080814/src/mesa/drivers/dri/Makefile +--- mesa-20080814/src/mesa/drivers/dri/Makefile.dricore 2008-08-14 02:28:38.000000000 +1000 ++++ mesa-20080814/src/mesa/drivers/dri/Makefile 2008-08-14 16:18:20.000000000 +1000 +@@ -6,12 +6,17 @@ include $(TOP)/configs/current + + + +-default: $(TOP)/$(LIB_DIR) subdirs ++default: $(TOP)/$(LIB_DIR) $(TOP)/$(LIB_DIR)/libdricore.so subdirs + + + $(TOP)/$(LIB_DIR): + -mkdir $(TOP)/$(LIB_DIR) + ++libdricore.so: ++ gcc -shared -o libdricore.so -Wl,--whole-archive ../../libmesa.a -Wl,--no-whole-archive -lm -lpthread -lc ++ ++$(TOP)/$(LIB_DIR)/libdricore.so: $(TOP)/$(LIB_DIR) libdricore.so ++ $(INSTALL) libdricore.so $(TOP)/$(LIB_DIR) + + subdirs: + @for dir in $(DRI_DIRS) ; do \ +@@ -31,12 +36,14 @@ dri.pc: dri.pc.in + $(pcedit) $< > $@ + + +-install: dri.pc ++install: dri.pc $(TOP)/$(LIB_DIR)/libdricore.so + @for dir in $(DRI_DIRS) ; do \ + if [ -d $$dir ] ; then \ + (cd $$dir && $(MAKE) install) || exit 1 ; \ + fi \ + done ++ $(INSTALL) -d $(DESTDIR)$(DRI_DRIVER_INSTALL_DIR) ++ $(INSTALL) -m 755 $(TOP)/$(LIB_DIR)/libdricore.so $(DESTDIR)$(DRI_DRIVER_INSTALL_DIR) + $(INSTALL) -d $(DESTDIR)$(INSTALL_INC_DIR)/GL/internal + $(INSTALL) -m 0644 $(TOP)/include/GL/internal/dri_interface.h \ + $(DESTDIR)$(INSTALL_INC_DIR)/GL/internal +@@ -52,5 +59,6 @@ clean: + (cd $$dir && $(MAKE) clean) ; \ + fi \ + done ++ -rm -f libdricore.so $(TOP)/$(LIB_DIR)/libdricore.so + -rm -f common/*.o + -rm -f *.pc +diff -up mesa-20080814/src/mesa/drivers/dri/Makefile.template.dricore mesa-20080814/src/mesa/drivers/dri/Makefile.template +--- mesa-20080814/src/mesa/drivers/dri/Makefile.template.dricore 2008-08-14 02:28:38.000000000 +1000 ++++ mesa-20080814/src/mesa/drivers/dri/Makefile.template 2008-08-14 16:19:37.000000000 +1000 +@@ -1,6 +1,6 @@ + # -*-makefile-*- + +-MESA_MODULES = $(TOP)/src/mesa/libmesa.a ++MESA_MODULES = $(TOP)/$(LIB_DIR)/libdricore.so + + COMMON_SOURCES = \ + ../common/utils.c \ +@@ -64,7 +64,9 @@ default: symlinks depend $(LIBNAME) $(TO + + $(LIBNAME): $(OBJECTS) $(MESA_MODULES) $(WINOBJ) Makefile $(TOP)/src/mesa/drivers/dri/Makefile.template + $(MKLIB) -o $@ -noprefix -linker '$(CC)' -ldflags '$(LDFLAGS)' \ +- $(OBJECTS) $(MESA_MODULES) $(WINOBJ) $(DRI_LIB_DEPS) ++ $(OBJECTS) $(WINOBJ) \ ++ -L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) -ldricore \ ++ $(DRI_LIB_DEPS) + + + $(TOP)/$(LIB_DIR)/$(LIBNAME): $(LIBNAME) +diff -up mesa-20080814/src/mesa/x86/read_rgba_span_x86.S.dricore mesa-20080814/src/mesa/x86/read_rgba_span_x86.S +--- mesa-20080814/src/mesa/x86/read_rgba_span_x86.S.dricore 2008-08-14 02:28:38.000000000 +1000 ++++ mesa-20080814/src/mesa/x86/read_rgba_span_x86.S 2008-08-14 16:16:49.000000000 +1000 +@@ -77,7 +77,6 @@ + */ + + .globl _generic_read_RGBA_span_BGRA8888_REV_MMX +-.hidden _generic_read_RGBA_span_BGRA8888_REV_MMX + .type _generic_read_RGBA_span_BGRA8888_REV_MMX, @function + _generic_read_RGBA_span_BGRA8888_REV_MMX: + pushl %ebx +@@ -172,7 +171,6 @@ _generic_read_RGBA_span_BGRA8888_REV_MMX + */ + + .globl _generic_read_RGBA_span_BGRA8888_REV_SSE +-.hidden _generic_read_RGBA_span_BGRA8888_REV_SSE + .type _generic_read_RGBA_span_BGRA8888_REV_SSE, @function + _generic_read_RGBA_span_BGRA8888_REV_SSE: + pushl %esi +@@ -335,7 +333,6 @@ _generic_read_RGBA_span_BGRA8888_REV_SSE + + .text + .globl _generic_read_RGBA_span_BGRA8888_REV_SSE2 +-.hidden _generic_read_RGBA_span_BGRA8888_REV_SSE2 + .type _generic_read_RGBA_span_BGRA8888_REV_SSE2, @function + _generic_read_RGBA_span_BGRA8888_REV_SSE2: + pushl %esi +@@ -494,7 +491,6 @@ _generic_read_RGBA_span_BGRA8888_REV_SSE + + .text + .globl _generic_read_RGBA_span_RGB565_MMX +- .hidden _generic_read_RGBA_span_RGB565_MMX + .type _generic_read_RGBA_span_RGB565_MMX, @function + + _generic_read_RGBA_span_RGB565_MMX: diff --git a/abs/core-testing/intltool/ChangeLog b/abs/core-testing/intltool/ChangeLog new file mode 100644 index 0000000..f9a7192 --- /dev/null +++ b/abs/core-testing/intltool/ChangeLog @@ -0,0 +1,29 @@ +2008-11-28 Jan de Groot <jgc@archlinux.org> + + * intltool 0.40.5-1 + * Upstream update + +2008-09-25 Jan de Groot <jgc@archlinux.org> + + * intltool 0.40.4-1 + * Upstream update + +2008-07-28 Eric Belanger <eric@archlinux.org> + + * intltool 0.40.3-1 + * Upstream update + +2008-07-23 Eric Belanger <eric@archlinux.org> + + * intltool 0.40.1-1 + * Upstream update + +2008-06-08 Eric Belanger <eric@archlinux.org> + + * intltool 0.40.0-1 + * Upstream update + +2008-03-01 Eric Belanger <eric@archlinux.org> + + * intltool 0.37.1-1 + * Upstream update diff --git a/abs/core-testing/intltool/PKGBUILD b/abs/core-testing/intltool/PKGBUILD new file mode 100644 index 0000000..b780d3b --- /dev/null +++ b/abs/core-testing/intltool/PKGBUILD @@ -0,0 +1,22 @@ +# $Id: PKGBUILD 19652 2008-11-28 20:22:55Z jgc $ +# Maintainer: Eric Belanger <eric@archlinux.org> +# Contributor: Jan de Groot <jgc@archlinux.org> + +pkgname=intltool +pkgver=0.40.5 +pkgrel=1 +pkgdesc="The internationalization tool collection" +arch=('i686' 'x86_64') +url="http://freedesktop.org/wiki/Software/intltool" +license=('GPL') +depends=('perlxml') +source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/${pkgver%.*}/${pkgname}-${pkgver}.tar.bz2) +md5sums=('3e7ded6f50d88cf8b8bb505eaf591775') +sha1sums=('72a67f18dbc12e1af11bfff80100993107b4df84') + +build() { + cd "${srcdir}/${pkgname}-${pkgver}" + ./configure --prefix=/usr || return 1 + make || return 1 + make DESTDIR="${pkgdir}" install || return 1 +} diff --git a/abs/core-testing/jack-audio-connection-kit/PKGBUILD b/abs/core-testing/jack-audio-connection-kit/PKGBUILD index f9d73eb..b9f0ed8 100644 --- a/abs/core-testing/jack-audio-connection-kit/PKGBUILD +++ b/abs/core-testing/jack-audio-connection-kit/PKGBUILD @@ -1,10 +1,10 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 9246 2008-08-17 05:38:58Z allan $ # Maintainer: tobias <tobias@archlinux.net> # Contributor: Robert Emil Berge <robert@rebi.no> pkgname=jack-audio-connection-kit pkgver=0.109.2 -pkgrel=1 +pkgrel=2 pkgdesc="a low-latency audio server" arch=(i686 x86_64) license=(GPL2 LGPL2) diff --git a/abs/core-testing/kdelibs3/PKGBUILD b/abs/core-testing/kdelibs3/PKGBUILD index f4ed7a0..2effdcc 100644 --- a/abs/core-testing/kdelibs3/PKGBUILD +++ b/abs/core-testing/kdelibs3/PKGBUILD @@ -4,7 +4,7 @@ pkgname=kdelibs3 pkgver=3.5.10 -pkgrel=1 +pkgrel=2 pkgdesc="KDE3 Core Libraries" arch=('i686' 'x86_64') url="http://www.kde.org" @@ -15,7 +15,7 @@ depends=('libxslt' 'pcre' 'libart-lgpl' 'alsa-lib' 'libcups' makedepends=('pkgconfig' 'cups') options=('libtool') install='kdelibs3.install' -source=("ftp://carroll.aset.psu.edu/pub/kde/stable/${pkgver}/src/kdelibs-${pkgver}.tar.bz2" +source=("http://download.kde.org/stable/${pkgver}/src/kdelibs-${pkgver}.tar.bz2" 'kde3.profile') md5sums=('43cd55ed15f63b5738d620ef9f9fd568' '3c49828eb8985cfb25af8e1495f7800a') diff --git a/abs/core-testing/libcups/PKGBUILD b/abs/core-testing/libcups/PKGBUILD index 363a46a..fbdac67 100644 --- a/abs/core-testing/libcups/PKGBUILD +++ b/abs/core-testing/libcups/PKGBUILD @@ -1,15 +1,16 @@ -# $Id: PKGBUILD 7638 2008-08-03 15:54:53Z jgc $ +# $Id: PKGBUILD 20496 2008-12-05 11:29:11Z allan $ # Maintainer: Andreas Radke <andyrtr@archlinux.org> + pkgname=libcups -pkgver=1.3.8 +pkgver=1.3.9 pkgrel=2 pkgdesc="The CUPS Printing System" -arch=(i686 x86_64) +arch=('i686' 'x86_64') license=('GPL') url="http://www.cups.org/" depends=('gnutls>=2.4.1' 'libtiff' 'libpng' 'heimdal>=1.2') -source=(http://ftp.funet.fi/pub/mirrors/ftp.easysw.com/pub/cups/${pkgver}/cups-${pkgver}-source.tar.bz2) -md5sums=('84e09577d673b212f605dd09caee456c') +source=(ftp://ftp.easysw.com/pub/cups/${pkgver}/cups-${pkgver}-source.tar.bz2) +md5sums=('cf63f451c356e6cabb08972d4d11c365') build() { cd ${srcdir}/cups-${pkgver} diff --git a/abs/core-testing/libdaemon/PKGBUILD b/abs/core-testing/libdaemon/PKGBUILD index 8750faf..6c123ab 100644 --- a/abs/core-testing/libdaemon/PKGBUILD +++ b/abs/core-testing/libdaemon/PKGBUILD @@ -1,23 +1,24 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ -# Maintainer: Mark Rosenstand <mark@archlinux.org> +# $Id: PKGBUILD 19217 2008-11-17 21:02:07Z thayer $ # Contributor: Manolis Tzanidakis +# Contributor: Mark Rosenstand <mark@archlinux.org> +# Maintainer: Thayer Williams <thayer@archlinux.org> + pkgname=libdaemon -pkgver=0.12 +pkgver=0.13 pkgrel=1 -pkgdesc="A lightweight C library which eases the writing of UNIX daemons." -arch=('i686' 'x86_64') -license=('LGPL') +pkgdesc="A lightweight C library which eases the writing of UNIX daemons" url="http://0pointer.de/lennart/projects/libdaemon/" +license=('LGPL') +arch=('i686' 'x86_64') depends=('glibc') source=(http://0pointer.de/lennart/projects/libdaemon/$pkgname-$pkgver.tar.gz) -md5sums=('76596823cc1a6d1cdf7779b782ff0ee6') -sha1sums=('2b45ab37df853afd25f7985ed699b799e0464413') options=('!libtool') +md5sums=('ae9113fcd825d5a7f07e5ddccb3c3102') build() { - cd $startdir/src/$pkgname-$pkgver - ./configure --prefix=/usr --disable-doxygen --disable-lynx + cd $srcdir/$pkgname-$pkgver + ./configure --prefix=/usr --disable-lynx || return 1 make || return 1 - make DESTDIR=$startdir/pkg install + make DESTDIR=$pkgdir install || return 1 } diff --git a/abs/core-testing/libdrm/PKGBUILD b/abs/core-testing/libdrm/PKGBUILD index 19a4db2..816aa2a 100644 --- a/abs/core-testing/libdrm/PKGBUILD +++ b/abs/core-testing/libdrm/PKGBUILD @@ -1,20 +1,20 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 19237 2008-11-17 22:36:17Z jgc $ # Maintainer: Jan de Groot <jgc@archlinux.org> pkgname=libdrm -pkgver=2.3.0 -pkgrel=1 +pkgver=2.3.1 +pkgrel=2 pkgdesc="Userspace interface to kernel DRM services" arch=(i686 x86_64) depends=('glibc') -options=('!libtool') +options=('!libtool' 'force') url="http://dri.freedesktop.org/" source=(http://dri.freedesktop.org/${pkgname}/${pkgname}-${pkgver}.tar.bz2) -md5sums=('01a1e1ee0268a2403db42fa630036ab2') +md5sums=('620fe7dd02c3236c3e9881a3a238173d') build() { - cd ${startdir}/src/${pkgname}-${pkgver} - ./configure --prefix=/usr + cd "${srcdir}/${pkgname}-${pkgver}" + ./configure --prefix=/usr || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 + make DESTDIR="${pkgdir}" install || return 1 } diff --git a/abs/core-testing/libexif/PKGBUILD b/abs/core-testing/libexif/PKGBUILD index 74989c8..7c47361 100644 --- a/abs/core-testing/libexif/PKGBUILD +++ b/abs/core-testing/libexif/PKGBUILD @@ -1,9 +1,9 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 23029 2009-01-01 16:38:33Z jgc $ # Maintainer: Jan de Groot <jgc@archlinux.org> # Contributor: Tobias Kieslich <tobias@justdreams.de> pkgname=libexif -pkgver=0.6.16 +pkgver=0.6.17 pkgrel=1 pkgdesc="A library to parse an EXIF file and read the data from those tags" arch=(i686 x86_64) @@ -12,11 +12,11 @@ url="http://sourceforge.net/projects/libexif" depends=('glibc') options=('!libtool') source=(http://downloads.sf.net/sourceforge/${pkgname}/${pkgname}-${pkgver}.tar.bz2) -md5sums=('deee153b1ded5a944ea05d041d959eca') +md5sums=('f7cf4e623a48c9a3b13f7f95f0a41015') build() { - cd ${startdir}/src/${pkgname}-${pkgver} - ./configure --prefix=/usr + cd "${srcdir}/${pkgname}-${pkgver}" + ./configure --prefix=/usr || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install + make DESTDIR="${pkgdir}" install || return 1 } diff --git a/abs/core-testing/libgcrypt/PKGBUILD b/abs/core-testing/libgcrypt/PKGBUILD index f4ebfea..bcf31c8 100644 --- a/abs/core-testing/libgcrypt/PKGBUILD +++ b/abs/core-testing/libgcrypt/PKGBUILD @@ -1,23 +1,24 @@ -# $Id: PKGBUILD 3545 2008-06-24 17:33:25Z andyrtr $ +# $Id: PKGBUILD 12853 2008-09-22 17:17:27Z andyrtr $ # Maintainer: Andreas Radke <andyrtr@archlinux.org> pkgname=libgcrypt -pkgver=1.4.1 -pkgrel=10 +pkgver=1.4.3 +pkgrel=2 pkgdesc="a general purpose crypto library based on the code used" arch=(i686 x86_64) url="http://www.gnupg.org" license=('LGPL') groups=('base') -depends=('libgpg-error>=1.6') +depends=('libgpg-error>=1.6' 'texinfo') options=(!libtool) source=(#ftp://ftp.gnupg.org/gcrypt/${pkgname}/${pkgname}-${pkgver}.tar.bz2 ftp://ftp.franken.de/pub/crypt/mirror/ftp.gnupg.org/gcrypt/libgcrypt/${pkgname}-${pkgver}.tar.bz2) -md5sums=('26703ecef4bbe113b8e6a87572b80b32') +md5sums=('46e50e811ed51f1e0e8dd677dded967d') build() { - cd ${startdir}/src/${pkgname}-${pkgver} - ./configure --prefix=/usr --disable-padlock-support + cd ${srcdir}/${pkgname}-${pkgver} + ./configure --prefix=/usr --disable-padlock-support --disable-static make || return 1 - make DESTDIR=${startdir}/pkg install + make DESTDIR=${pkgdir} install || return 1 + rm -f ${pkgdir}/usr/share/info/dir } diff --git a/abs/core-testing/libgcrypt/libgcrypt.install b/abs/core-testing/libgcrypt/libgcrypt.install new file mode 100644 index 0000000..86de0a5 --- /dev/null +++ b/abs/core-testing/libgcrypt/libgcrypt.install @@ -0,0 +1,20 @@ +infodir=/usr/share/info +filelist=(gcrypt.info) + +post_install() { + for file in ${filelist[@]}; do + install-info $infodir/$file $infodir/dir 2> /dev/null + done +} + +post_upgrade() { + post_install $1 +} + +pre_remove() { + for file in ${filelist[@]}; do + install-info --delete $infodir/$file $infodir/dir 2> /dev/null + done +} + +# vim:set ts=2 sw=2 et: diff --git a/abs/core-testing/libgl/PKGBUILD b/abs/core-testing/libgl/PKGBUILD index 43e7c58..ce2faba 100644 --- a/abs/core-testing/libgl/PKGBUILD +++ b/abs/core-testing/libgl/PKGBUILD @@ -1,49 +1,40 @@ -# $Id: PKGBUILD 1895 2008-05-22 17:55:59Z jgc $ +# $Id: PKGBUILD 12994 2008-09-25 18:01:13Z jgc $ # Maintainer: Alexander Baldeck <kth5@archlinux.org> # Contributor: Jan de Groot <jgc@archlinux.org> pkgname=libgl -pkgver=7.0.3 -pkgrel=2 +pkgver=7.2 +pkgrel=1 pkgdesc="Mesa DRI OpenGL library and drivers" arch=(i686 x86_64) license=('LGPL') url="http://www.mesa3d.org" -depends=('libxxf86vm' 'libdrm>=2.3' 'libxdamage') -makedepends=('imake' 'glproto>=1.4.9' 'fixesproto' 'damageproto' 'pkgconfig') +depends=('libdrm>=2.3.1' 'libxxf86vm' 'libxdamage' 'expat>=2.0.1') +makedepends=('dri2proto>=1.1' 'glproto>=1.4.9' 'pkgconfig') provides=('libgl-dri') replaces=('libgl-dri' 'libgl-mesa') -source=(http://downloads.sourceforge.net/sourceforge/mesa3d/MesaLib-${pkgver}.tar.bz2) -md5sums=('e6e6379d7793af40a6bc3ce1bace572e') +options=(!makeflags) +source=(http://downloads.sourceforge.net/mesa3d/MesaLib-${pkgver}.tar.bz2 + mesa-7.1-link-shared.patch) +md5sums=('04d379292e023df0b0266825cb0dbde5' + 'f0baa948d9810f268413111ee439d24b') build() { cd ${startdir}/src/Mesa-${pkgver} - - CONFIG="linux-dri-x86" - if [ "${CARCH}" = "x86_64" ]; then - CONFIG="linux-dri-x86-64" - sed -i -e "s/lib64/lib/g" configs/${CONFIG} - fi - - echo "EXTRA_LIB_PATH =" >> configs/${CONFIG} - echo "OPT_FLAGS = ${CFLAGS}" >> configs/${CONFIG} - echo "SRC_DIRS = glx/x11 mesa" >> configs/${CONFIG} - rm -f include/GL/glut*h - echo "USING_EGL = 0" >> configs/${CONFIG} - echo "PROGRAM_DIRS =" >> configs/${CONFIG} - echo "MKDEP = makedepend" >> configs/${CONFIG} - echo "DRI_DIRS =" >> configs/${CONFIG} - echo "DRI_DRIVER_SEARCH_DIR = /usr/lib/xorg/modules/dri" >> configs/${CONFIG} - echo "ARCH_FLAGS += -DGLX_USE_TLS" >> configs/${CONFIG} - echo "X11_INCLUDES = `pkg-config --cflags-only-I x11`" >> configs/${CONFIG} - - make ${CONFIG} || return 1 - install -m755 -d ${startdir}/pkg/usr - make INSTALL_DIR=${startdir}/pkg/usr install || return 1 - - rm -rf ${startdir}/pkg/usr/include - - install -m755 -d ${startdir}/pkg/usr/lib/xorg/modules/extensions || return 1 - cd ${startdir}/pkg/usr/lib/xorg/modules/extensions || return 1 - ln -sf libGLcore.xorg libGLcore.so - ln -sf libglx.xorg libglx.so + patch -Np1 -i ${srcdir}/mesa-7.1-link-shared.patch || return 1 + ./configure --prefix=/usr \ + --with-dri-driverdir=/usr/lib/xorg/modules/dri \ + --with-dri-drivers=swrast \ + --enable-glx-tls \ + --disable-ttm-api \ + --with-driver=dri \ + --enable-xcb \ + --disable-glu \ + --disable-glut \ + --disable-glw || return 1 + make || return 1 + make DESTDIR=${pkgdir} install || return 1 + rm -rf ${pkgdir}/usr/include + rm -rf ${pkgdir}/usr/lib/pkgconfig + install -m755 -d ${pkgdir}/usr/lib/xorg/modules/extensions + ln -sf libglx.xorg ${pkgdir}/usr/lib/xorg/modules/extensions/libglx.so || return 1 } diff --git a/abs/core-testing/libgl/mesa-7.1-link-shared.patch b/abs/core-testing/libgl/mesa-7.1-link-shared.patch new file mode 100644 index 0000000..7fdbf14 --- /dev/null +++ b/abs/core-testing/libgl/mesa-7.1-link-shared.patch @@ -0,0 +1,102 @@ +diff -up mesa-20080814/src/mesa/drivers/dri/Makefile.dricore mesa-20080814/src/mesa/drivers/dri/Makefile +--- mesa-20080814/src/mesa/drivers/dri/Makefile.dricore 2008-08-14 02:28:38.000000000 +1000 ++++ mesa-20080814/src/mesa/drivers/dri/Makefile 2008-08-14 16:18:20.000000000 +1000 +@@ -6,12 +6,17 @@ include $(TOP)/configs/current + + + +-default: $(TOP)/$(LIB_DIR) subdirs ++default: $(TOP)/$(LIB_DIR) $(TOP)/$(LIB_DIR)/libdricore.so subdirs + + + $(TOP)/$(LIB_DIR): + -mkdir $(TOP)/$(LIB_DIR) + ++libdricore.so: ++ gcc -shared -o libdricore.so -Wl,--whole-archive ../../libmesa.a -Wl,--no-whole-archive -lm -lpthread -lc ++ ++$(TOP)/$(LIB_DIR)/libdricore.so: $(TOP)/$(LIB_DIR) libdricore.so ++ $(INSTALL) libdricore.so $(TOP)/$(LIB_DIR) + + subdirs: + @for dir in $(DRI_DIRS) ; do \ +@@ -31,12 +36,14 @@ dri.pc: dri.pc.in + $(pcedit) $< > $@ + + +-install: dri.pc ++install: dri.pc $(TOP)/$(LIB_DIR)/libdricore.so + @for dir in $(DRI_DIRS) ; do \ + if [ -d $$dir ] ; then \ + (cd $$dir && $(MAKE) install) || exit 1 ; \ + fi \ + done ++ $(INSTALL) -d $(DESTDIR)$(DRI_DRIVER_INSTALL_DIR) ++ $(INSTALL) -m 755 $(TOP)/$(LIB_DIR)/libdricore.so $(DESTDIR)$(DRI_DRIVER_INSTALL_DIR) + $(INSTALL) -d $(DESTDIR)$(INSTALL_INC_DIR)/GL/internal + $(INSTALL) -m 0644 $(TOP)/include/GL/internal/dri_interface.h \ + $(DESTDIR)$(INSTALL_INC_DIR)/GL/internal +@@ -52,5 +59,6 @@ clean: + (cd $$dir && $(MAKE) clean) ; \ + fi \ + done ++ -rm -f libdricore.so $(TOP)/$(LIB_DIR)/libdricore.so + -rm -f common/*.o + -rm -f *.pc +diff -up mesa-20080814/src/mesa/drivers/dri/Makefile.template.dricore mesa-20080814/src/mesa/drivers/dri/Makefile.template +--- mesa-20080814/src/mesa/drivers/dri/Makefile.template.dricore 2008-08-14 02:28:38.000000000 +1000 ++++ mesa-20080814/src/mesa/drivers/dri/Makefile.template 2008-08-14 16:19:37.000000000 +1000 +@@ -1,6 +1,6 @@ + # -*-makefile-*- + +-MESA_MODULES = $(TOP)/src/mesa/libmesa.a ++MESA_MODULES = $(TOP)/$(LIB_DIR)/libdricore.so + + COMMON_SOURCES = \ + ../common/utils.c \ +@@ -64,7 +64,9 @@ default: symlinks depend $(LIBNAME) $(TO + + $(LIBNAME): $(OBJECTS) $(MESA_MODULES) $(WINOBJ) Makefile $(TOP)/src/mesa/drivers/dri/Makefile.template + $(MKLIB) -o $@ -noprefix -linker '$(CC)' -ldflags '$(LDFLAGS)' \ +- $(OBJECTS) $(MESA_MODULES) $(WINOBJ) $(DRI_LIB_DEPS) ++ $(OBJECTS) $(WINOBJ) \ ++ -L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) -ldricore \ ++ $(DRI_LIB_DEPS) + + + $(TOP)/$(LIB_DIR)/$(LIBNAME): $(LIBNAME) +diff -up mesa-20080814/src/mesa/x86/read_rgba_span_x86.S.dricore mesa-20080814/src/mesa/x86/read_rgba_span_x86.S +--- mesa-20080814/src/mesa/x86/read_rgba_span_x86.S.dricore 2008-08-14 02:28:38.000000000 +1000 ++++ mesa-20080814/src/mesa/x86/read_rgba_span_x86.S 2008-08-14 16:16:49.000000000 +1000 +@@ -77,7 +77,6 @@ + */ + + .globl _generic_read_RGBA_span_BGRA8888_REV_MMX +-.hidden _generic_read_RGBA_span_BGRA8888_REV_MMX + .type _generic_read_RGBA_span_BGRA8888_REV_MMX, @function + _generic_read_RGBA_span_BGRA8888_REV_MMX: + pushl %ebx +@@ -172,7 +171,6 @@ _generic_read_RGBA_span_BGRA8888_REV_MMX + */ + + .globl _generic_read_RGBA_span_BGRA8888_REV_SSE +-.hidden _generic_read_RGBA_span_BGRA8888_REV_SSE + .type _generic_read_RGBA_span_BGRA8888_REV_SSE, @function + _generic_read_RGBA_span_BGRA8888_REV_SSE: + pushl %esi +@@ -335,7 +333,6 @@ _generic_read_RGBA_span_BGRA8888_REV_SSE + + .text + .globl _generic_read_RGBA_span_BGRA8888_REV_SSE2 +-.hidden _generic_read_RGBA_span_BGRA8888_REV_SSE2 + .type _generic_read_RGBA_span_BGRA8888_REV_SSE2, @function + _generic_read_RGBA_span_BGRA8888_REV_SSE2: + pushl %esi +@@ -494,7 +491,6 @@ _generic_read_RGBA_span_BGRA8888_REV_SSE + + .text + .globl _generic_read_RGBA_span_RGB565_MMX +- .hidden _generic_read_RGBA_span_RGB565_MMX + .type _generic_read_RGBA_span_RGB565_MMX, @function + + _generic_read_RGBA_span_RGB565_MMX: diff --git a/abs/core-testing/libglade/PKGBUILD b/abs/core-testing/libglade/PKGBUILD index fc10160..c0bfa29 100644 --- a/abs/core-testing/libglade/PKGBUILD +++ b/abs/core-testing/libglade/PKGBUILD @@ -1,26 +1,26 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 13455 2008-09-27 11:03:58Z jgc $ # Maintainer: Jan de Groot <jgc@archlinux.org> pkgname=libglade -pkgver=2.6.2 +pkgver=2.6.3 pkgrel=1 pkgdesc="Allows you to load glade interface files in a program at runtime" arch=(i686 x86_64) license=('LGPL') -depends=('gtk2' 'libxml2') +depends=('gtk2>=2.14.1' 'libxml2>=2.6.32') makedepends=('python' 'pkgconfig') options=('!libtool') install=glade.install source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/2.6/${pkgname}-${pkgver}.tar.bz2 libglade-2.0.1-nowarning.patch) url="http://www.gnome.org" -md5sums=('da4f9d1c6cd1337f6ef5e2db768d8557' '4f879c0ce550004905aa0fb24f25c353') +md5sums=('1c359860b1a0f369f0b6e3f96fd985c2' '4f879c0ce550004905aa0fb24f25c353') build() { - cd ${startdir}/src/${pkgname}-${pkgver} - patch -Np1 -i ${startdir}/src/libglade-2.0.1-nowarning.patch || return 1 - ./configure --sysconfdir=/etc --prefix=/usr --localstatedir=/var + cd ${srcdir}/${pkgname}-${pkgver} + patch -Np1 -i ${srcdir}/libglade-2.0.1-nowarning.patch || return 1 + ./configure --sysconfdir=/etc --prefix=/usr --localstatedir=/var || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install - install -m755 libglade-convert ${startdir}/pkg/usr/bin/libglade-convert + make DESTDIR=${pkgdir} install || return 1 + install -m755 libglade-convert ${pkgdir}/usr/bin/libglade-convert || return 1 } diff --git a/abs/core-testing/libglade/glade.install b/abs/core-testing/libglade/glade.install index c98d2ed..a7f05c5 100644 --- a/abs/core-testing/libglade/glade.install +++ b/abs/core-testing/libglade/glade.install @@ -23,8 +23,3 @@ post_remove() { xmlcatalog --noout --del \ /usr/share/xml/libglade/glade-2.0.dtd etc/xml/catalog } - -op=$1 -shift - -$op $* diff --git a/abs/core-testing/libgsf/PKGBUILD b/abs/core-testing/libgsf/PKGBUILD index 84f5edb..67aa465 100644 --- a/abs/core-testing/libgsf/PKGBUILD +++ b/abs/core-testing/libgsf/PKGBUILD @@ -1,25 +1,27 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 22409 2008-12-26 18:58:32Z jgc $ # Maintainer: Jan de Groot <jgc@archlinux.org> # Contributor: Sarah Hay <sarahhay@mb.sympatico.ca> pkgname=libgsf -pkgver=1.14.8 +pkgver=1.14.10 pkgrel=1 pkgdesc="The GNOME Structured File Library is a utility library for reading and writing structured file formats." arch=(i686 x86_64) url="http://www.gnome.org/" license=('GPL' 'LGPL') -depends=('libxml2' 'glib2>=2.16.1' 'bzip2') +depends=('libxml2>=2.7.2' 'glib2>=2.18.3' 'bzip2') makedepends=('perlxml' 'pkgconfig' 'python') options=('!libtool') source=(http://ftp.gnome.org/pub/GNOME/sources/${pkgname}/1.14/${pkgname}-${pkgver}.tar.bz2) -md5sums=('09e4b6639be79fa888cabc751f73674f') +md5sums=('f9b2f309089af683066ff0b319227e57') build() { cd ${startdir}/src/${pkgname}-${pkgver} - sed -i -e 's/gsf-gnome gsf-win32//' -e 's/thumbnailer//' Makefile.* - ./configure --prefix=/usr --disable-gtk-doc --without-gnome --without-bonobo + sed -i -e 's/gsf-gnome//' -e 's/thumbnailer//' Makefile.* + ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var \ + --without-gnome-vfs --without-bonobo \ + --disable-static || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install + make DESTDIR=${startdir}/pkg install || return 1 rm -f ${startdir}/pkg/usr{,/share}/man/man1/gsf-office-thumbnailer.1 } diff --git a/abs/core-testing/libidn/PKGBUILD b/abs/core-testing/libidn/PKGBUILD index 6fb7d24..170388c 100644 --- a/abs/core-testing/libidn/PKGBUILD +++ b/abs/core-testing/libidn/PKGBUILD @@ -1,22 +1,30 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ -# Maintainer: Jan de Groot <jgc@archlinux.org> -# Contributor: Eric Johnson <eric@archlinux.org> +# $Id: PKGBUILD 19577 2008-11-27 10:01:45Z ronald $ +# Maintainer: Ronald van Haren <ronald.archlinux.org> +# Contributor: Jan de Groot <jgc.archlinux.org> +# Contributor: Eric Johnson <eric.archlinux.org> + pkgname=libidn -pkgver=1.0 +pkgver=1.11 pkgrel=1 pkgdesc="Implementation of the Stringprep, Punycode and IDNA specifications" -arch=(i686 x86_64) url="http://www.gnu.org/software/libidn/" -license=('GPL' 'LGPL') +arch=('i686' 'x86_64') +license=('GPL3' 'LGPL2') depends=('glibc') makedepends=('pkgconfig') options=('!libtool') -source=(ftp://alpha.gnu.org/pub/gnu/libidn/${pkgname}-${pkgver}.tar.gz) -md5sums=('8a6a15dc061c0e17a97cb6b77d850e86') +source=(http://ftp.gnu.org/gnu/${pkgname}/${pkgname}-${pkgver}.tar.gz) +install=libidn.install +md5sums=('8859b17928f84b899b19e72bfa1c6dbf') +sha1sums=('08cffdcf9736f4ac61acc32e79a1d9672f640351') build() { - cd ${startdir}/src/${pkgname}-${pkgver} + cd ${srcdir}/${pkgname}-${pkgver} ./configure --prefix=/usr make || return 1 - make DESTDIR=${startdir}/pkg install + make DESTDIR=${pkgdir} install || return 1 + + # handle info files + rm $pkgdir/usr/share/info/{dir,libidn-components.png} # nobody is missing a png I assume + gzip $pkgdir/usr/share/info/* } diff --git a/abs/core-testing/libidn/libidn.install b/abs/core-testing/libidn/libidn.install new file mode 100644 index 0000000..a0366eb --- /dev/null +++ b/abs/core-testing/libidn/libidn.install @@ -0,0 +1,19 @@ +info_dir=/usr/share/info +info_files=(libidn.info) + +post_install() { + for f in ${info_files[@]}; do + install-info ${info_dir}/$f.gz ${info_dir}/dir 2> /dev/null + done +} + +post_upgrade() { + post_install +} + +pre_remove() { + for f in ${info_files[@]}; do + install-info --delete ${info_dir}/$f.gz ${info_dir}/dir 2> /dev/null + done +} + diff --git a/abs/core-testing/libpcap/PKGBUILD b/abs/core-testing/libpcap/PKGBUILD index 0a586db..e5c11e2 100644 --- a/abs/core-testing/libpcap/PKGBUILD +++ b/abs/core-testing/libpcap/PKGBUILD @@ -1,44 +1,34 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ -# Maintainer: dorphell <dorphell@archlinux.org> +# $Id: PKGBUILD 20200 2008-12-01 17:56:56Z thomas $ +# Maintainer: Thomas Bächler <thomas@archlinux.org> pkgname=libpcap -pkgver=0.9.8 -pkgrel=11 +pkgver=1.0.0 +pkgrel=1 pkgdesc="A system-independent interface for user-level packet capture" -arch=(i686 x86_64) +arch=('i686' 'x86_64') url="http://www.tcpdump.org/" license=('BSD') groups=('base') depends=('glibc') makedepends=('flex') -source=(http://www.sfr-fresh.com/unix/misc/libpcap-${pkgver}.tar.gz - libpcap-shared.patch) -md5sums=('5208f24d0328ee7c20b52c43eaa9aa0e' - 'b8a9c5e5cea0b89a8a7456c6c4d59db4') - -# This package has a strict SONAME that changes in EVERY MINOR -# release. Whenever you feel like updating this package, DON'T, -# it will break a number of essential system tools. -# Again, for dummies: IF YOU UPDATE THIS PACKAGE DIRECTLY TO CORE, -# I WILL PERSONALLY CHOP YOUR HEAD OFF! +source=(http://www.tcpdump.org/release/libpcap-${pkgver}.tar.gz) +md5sums=('9ad1358c5dec48456405eac197a46d3d') build() { - cd ${startdir}/src/${pkgname}-${pkgver} - patch -Np1 -i ${startdir}/libpcap-shared.patch || return 1 - sed -i -e "s/@MAJOR@/`awk -F '.' '{ print $1 }' VERSION`/" \ - -e "s/@MINOR@/`awk -F '.' '{ print $2 }' VERSION`/" \ - -e "s/@SUBMINOR@/`awk -F '.' '{ print $3 }' VERSION`/" \ - -e "s/@VERSION@/`cat VERSION`/" Makefile.in - + cd ${srcdir}/${pkgname}-${pkgver} ./configure --prefix=/usr --enable-ipv6 - DEFS="-g -D_U_=\"\" -fPIC -DHAVE_CONFIG_H -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE" - make -j1 DEFS="${DEFS}" || return 1 - make DESTDIR=${startdir}/pkg install -# # backwards compatibility, programs often look for net/bpf.h - mkdir -p ${startdir}/pkg/usr/include/net - cd ${startdir}/pkg/usr/include/net + make || return 1 + make shared || return 1 + + install -d -m755 ${pkgdir}/usr/bin + make DESTDIR=${pkgdir} install install-shared || return 1 + ln -s libpcap.so.1.0.0 ${pkgdir}/usr/lib/libpcap.so.1 + ln -s libpcap.so.1.0.0 ${pkgdir}/usr/lib/libpcap.so + # backwards compatibility, programs often look for net/bpf.h + mkdir -p ${pkgdir}/usr/include/net + cd ${pkgdir}/usr/include/net ln -s ../pcap-bpf.h bpf.h #install the license - install -D -m644 $startdir/src/$pkgname-$pkgver/LICENSE $startdir/pkg/usr/share/licenses/$pkgname/LICENSE + install -D -m644 ${srcdir}/$pkgname-$pkgver/LICENSE ${pkgdir}/usr/share/licenses/$pkgname/LICENSE } diff --git a/abs/core-testing/libpciaccess/PKGBUILD b/abs/core-testing/libpciaccess/PKGBUILD new file mode 100644 index 0000000..499f365 --- /dev/null +++ b/abs/core-testing/libpciaccess/PKGBUILD @@ -0,0 +1,24 @@ +# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# Maintainer: Alexander Baldeck <alexander@archlinux.org> +# Contributor: Jan de Groot <jgc@archlinux.org> +pkgname=libpciaccess +pkgver=0.10.5 +pkgrel=1 +pkgdesc="X11 PCI access library" +arch=(i686 x86_64) +license=('custom') +url="http://xorg.freedesktop.org/" +depends=('glibc') +makedepends=('pkgconfig') +options=('!libtool') +source=(${url}/releases/individual/lib/${pkgname}-${pkgver}.tar.bz2) +md5sums=('617bebf31e5685c83f935009aeae5f38') + +build() { + cd "${srcdir}/${pkgname}-${pkgver}" + ./configure --prefix=/usr --sysconfdir=/etc || return 1 + make || return 1 + make DESTDIR="${pkgdir}" install || return 1 + install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}" + install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/" || return 1 +} diff --git a/abs/core-testing/libpng/ChangeLog b/abs/core-testing/libpng/ChangeLog index 9612756..98aa66d 100644 --- a/abs/core-testing/libpng/ChangeLog +++ b/abs/core-testing/libpng/ChangeLog @@ -1,4 +1,8 @@ +2008-10-06 Douglas Soares de Andrade <douglas@archlinux.org> + + * Updated for i686: 1.2.32 + 2008-08-23 Douglas Soares de Andrade <douglas@archlinux.org> * Updated for i686: 1.2.31 diff --git a/abs/core-testing/libpng/PKGBUILD b/abs/core-testing/libpng/PKGBUILD index a67b300..12515ed 100644 --- a/abs/core-testing/libpng/PKGBUILD +++ b/abs/core-testing/libpng/PKGBUILD @@ -1,10 +1,10 @@ -# $Id: PKGBUILD 10073 2008-08-23 15:51:29Z douglas $ +# $Id: PKGBUILD 22148 2008-12-22 12:33:23Z pierre $ # Maintainer: dorphell <dorphell@archlinux.org> # Maintainer: Travis Willard <travis@archlinux.org> # Maintainer: Douglas Soares de Andrade <douglas@archlinux.org> pkgname=libpng -pkgver=1.2.31 +pkgver=1.2.34 pkgrel=1 pkgdesc="A collection of routines used to create PNG format graphics files" arch=('i686' 'x86_64') @@ -12,19 +12,18 @@ url="http://www.libpng.org/pub/png/libpng.html" license=('custom') depends=('zlib') options=('!libtool') -source=(http://downloads.sourceforge.net/sourceforge/${pkgname}/${pkgname}-${pkgver}.tar.bz2 - # http://littlesvr.ca/apng/diff/${pkgname}-${pkgver}-apng.patch - ${pkgname}-${pkgver}-apng.patch ) +source=("http://downloads.sourceforge.net/sourceforge/${pkgname}/${pkgname}-${pkgver}.tar.bz2" + "http://hp.vector.co.jp/authors/VA013651/lib/libpng-${pkgver}-apng.patch.gz") options=('!libtool') - -md5sums=('78d2f8c4e0d64f8948819563587302d3' - 'fab42a4ad4de6fcb87dcca6a7a19aefb') +md5sums=('37362876feb21344fd3af1228527db0f' + 'a7ee9fd9af34692b75eedd5b03b69ca9') build() { cd ${startdir}/src/${pkgname}-${pkgver} # Add animated PNG (apng) support - patch -Np0 -i $startdir/src/${pkgname}-${pkgver}-apng.patch || return 1 + # see http://hp.vector.co.jp/authors/VA013651/freeSoftware/apng.html + patch -p1 -i $srcdir/libpng-${pkgver}-apng.patch || return 1 libtoolize --force --copy || return 1 aclocal || return 1 diff --git a/abs/core-testing/librsvg/PKGBUILD b/abs/core-testing/librsvg/PKGBUILD index c4f4a11..6a702aa 100644 --- a/abs/core-testing/librsvg/PKGBUILD +++ b/abs/core-testing/librsvg/PKGBUILD @@ -1,28 +1,27 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 13073 2008-09-25 20:24:43Z jgc $ # Maintainer: Jan de Groot <jgc@archlinux.org> pkgname=librsvg -pkgver=2.22.2 +pkgver=2.22.3 pkgrel=1 pkgdesc="SAX-based renderer for SVG files into a GdkPixbuf" arch=(i686 x86_64) license=('LGPL') -depends=('gtk2>=2.12.9' 'libcroco>=0.6.1' 'libgsf>=1.14.8') +depends=('gtk2>=2.14.3' 'libcroco>=0.6.1' 'libgsf>=1.14.8') makedepends=('perlxml' 'pkgconfig') options=('!libtool') url="http://librsvg.sourceforge.net/" source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/2.22/${pkgname}-${pkgver}.tar.bz2) install=librsvg.install -md5sums=('aae602677ce201b1a0ed6a0c18c207f2') +md5sums=('c4ec4fdb2b1842e221ca39127e85682d') build() { - cd ${startdir}/src/${pkgname}-${pkgver} + cd "${srcdir}/${pkgname}-${pkgver}" ./configure --prefix=/usr --libexecdir=/usr/lib/${pkgname} \ --with-croco \ --disable-mozilla-plugin --with-svgz make || return 1 - make DESTDIR=${startdir}/pkg install - rm -rf ${startdir}/pkg/usr/share/gtk-doc - rm -rf ${startdir}/pkg/usr/lib/mozilla - rm ${startdir}/pkg/usr/lib/gtk-2.0/*/{engines,loaders}/*.a + make DESTDIR="${pkgdir}" install + rm -rf "${pkgdir}/usr/lib/mozilla" + rm ${pkgdir}/usr/lib/gtk-2.0/*/{engines,loaders}/*.a } diff --git a/abs/core-testing/librsvg/librsvg.install b/abs/core-testing/librsvg/librsvg.install index 8a6dd5a..01eaab0 100644 --- a/abs/core-testing/librsvg/librsvg.install +++ b/abs/core-testing/librsvg/librsvg.install @@ -1,4 +1,3 @@ -# arg 1: the new package version post_install() { #We need to update the pixbuf loaders to let GTK support SVG images usr/bin/gtk-query-immodules-2.0 > etc/gtk-2.0/gtk.immodules diff --git a/abs/core-testing/libtasn1/PKGBUILD b/abs/core-testing/libtasn1/PKGBUILD index 9d0f14a..150c1dd 100644 --- a/abs/core-testing/libtasn1/PKGBUILD +++ b/abs/core-testing/libtasn1/PKGBUILD @@ -1,21 +1,26 @@ -# $Id: PKGBUILD 3687 2008-06-29 10:44:27Z jgc $ -# Maintainer: judd <jvinet@zeroflux.org> +# $Id: PKGBUILD 22306 2008-12-25 18:56:59Z jgc $ +# Maintainer: Jan de Groot <jgc@archlinux.org> +# Contributor: judd <jvinet@zeroflux.org> pkgname=libtasn1 -pkgver=1.4 +pkgver=1.7 pkgrel=1 pkgdesc="The ASN.1 library used in GNUTLS" arch=(i686 x86_64) -license=('GPL' 'LGPL') +license=('GPL3' 'LGPL') url="http://www.gnu.org/software/gnutls/" -depends=('glibc') +depends=('glibc' 'texinfo') options=('!libtool') +install=libtasn1.install source=(ftp://ftp.gnutls.org/pub/gnutls/${pkgname}/${pkgname}-${pkgver}.tar.gz) -md5sums=('a733ecdfed3517910e627d24e050979f') +md5sums=('ebfd69b3514d8e8830057f0e9df6a5f9') build() { - cd ${startdir}/src/${pkgname}-${pkgver} + cd "${srcdir}/${pkgname}-${pkgver}" ./configure --prefix=/usr || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 + make DESTDIR="${pkgdir}" install || return 1 + + rm -f "${pkgdir}/usr/share/info/dir" + gzip ${pkgdir}/usr/share/info/* || return 1 } diff --git a/abs/core-testing/libtasn1/libtasn1.install b/abs/core-testing/libtasn1/libtasn1.install new file mode 100644 index 0000000..2d1ecc0 --- /dev/null +++ b/abs/core-testing/libtasn1/libtasn1.install @@ -0,0 +1,18 @@ +info_dir=/usr/share/info +info_files=(libtasn1.info) + +post_install() { + for f in ${info_files[@]}; do + install-info ${info_dir}/$f.gz ${info_dir}/dir 2> /dev/null + done +} + +post_upgrade() { + post_install $1 +} + +pre_remove() { + for f in ${info_files[@]}; do + install-info --delete ${info_dir}/$f.gz ${info_dir}/dir 2> /dev/null + done +} diff --git a/abs/core-testing/libtool/PKGBUILD b/abs/core-testing/libtool/PKGBUILD index 965a282..f861926 100644 --- a/abs/core-testing/libtool/PKGBUILD +++ b/abs/core-testing/libtool/PKGBUILD @@ -1,21 +1,25 @@ -# $Id: PKGBUILD 1505 2008-05-12 10:28:03Z andyrtr $ +# $Id: PKGBUILD 12053 2008-09-08 14:37:58Z andyrtr $ # Maintainer: judd <jvinet@zeroflux.org> pkgname=libtool -pkgver=2.2.4 +pkgver=2.2.6a pkgrel=1 pkgdesc="A generic library support script" arch=('i686' 'x86_64') license=('GPL') url="http://www.gnu.org/software/libtool" +install=libtool.install groups=('base-devel') -depends=('sh') +depends=('sh' 'tar') source=(ftp://ftp.gnu.org/pub/gnu/libtool/${pkgname}-${pkgver}.tar.gz) -md5sums=('0b87e84c7aad3b5e979bbe35312fd4c1') +md5sums=('8ca1ea241cd27ff9832e045fe9afe4fd') options=('!libtool') build() { - cd ${startdir}/src/${pkgname}-${pkgver} + #cd ${startdir}/src/${pkgname}-${pkgver} + cd ${startdir}/src/${pkgname}-2.2.6 ./configure --prefix=/usr make || return 1 make DESTDIR=${startdir}/pkg install + + rm -f ${pkgdir}/usr/share/info/dir } diff --git a/abs/core-testing/libtool/libtool.install b/abs/core-testing/libtool/libtool.install new file mode 100644 index 0000000..1794742 --- /dev/null +++ b/abs/core-testing/libtool/libtool.install @@ -0,0 +1,20 @@ +infodir=/usr/share/info +filelist=(libtool.info libtool.info-1 libtool.info-2) + +post_install() { + for file in ${filelist[@]}; do + install-info $infodir/$file $infodir/dir 2> /dev/null + done +} + +post_upgrade() { + post_install $1 +} + +pre_remove() { + for file in ${filelist[@]}; do + install-info --delete $infodir/$file $infodir/dir 2> /dev/null + done +} + +# vim:set ts=2 sw=2 et: diff --git a/abs/core-testing/libx11/PKGBUILD b/abs/core-testing/libx11/PKGBUILD index e69ed0a..d697a21 100644 --- a/abs/core-testing/libx11/PKGBUILD +++ b/abs/core-testing/libx11/PKGBUILD @@ -1,28 +1,26 @@ -# $Id: PKGBUILD 1882 2008-05-22 17:44:17Z jgc $ +# $Id: PKGBUILD 20482 2008-12-05 09:43:28Z jgc $ # Maintainer: Alexander Baldeck <alexander@archlinux.org> # Contributor Jan de Groot <jgc@archlinux.org> pkgname=libx11 -pkgver=1.1.4 +pkgver=1.1.5 pkgrel=2 pkgdesc="X11 client-side library" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" -depends=('libxau' 'libxdmcp' 'libxcb>=1.1' 'kbproto' 'inputproto' 'bigreqsproto') -makedepends=('pkgconfig' 'xcmiscproto' 'xextproto' 'xf86bigfontproto' 'xtrans' \ - 'bigreqsproto' 'xorg-util-macros' 'autoconf' 'automake' 'libtool') +depends=('libxcb>=1.1.90.1' 'kbproto>=1.0.3') +makedepends=('xproto>=7.0.13' 'xextproto>=7.0.3' 'xf86bigfontproto>=1.1.2' 'xtrans>=1.2.1' 'kbproto>=1.0.3' 'inputproto>=1.4.4' 'xorg-util-macros') options=('!libtool') license=('custom:XFREE86') source=(${url}/releases/individual/lib/libX11-${pkgver}.tar.bz2 012_ru_RU_UTF-8_XLC_LOCALE.diff xorg.sh) -md5sums=('1469a5a8aa8d288dce6f4c45d2f68dc3' +md5sums=('d1512d65dadd4f48c779d4749e7753a8' 'c7e38a68b932ed557bc71979eed2a8a1' - 'ea3f14c529072c8be061493763479800') + '942ff006e69e041f0307c1316e0dec5d') build() { - cd ${startdir}/src/libX11-${pkgver} - patch -Np1 -i ${startdir}/src/012_ru_RU_UTF-8_XLC_LOCALE.diff || return 1 - + cd ${srcdir}/libX11-${pkgver} + patch -Np1 -i ${srcdir}/012_ru_RU_UTF-8_XLC_LOCALE.diff || return 1 libtoolize --force --copy || return 1 aclocal || return 1 @@ -32,13 +30,12 @@ build() { ./configure --prefix=/usr \ --with-xcb || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 + make DESTDIR=${pkgdir} install || return 1 - install -d -m755 ${startdir}/pkg/etc/profile.d - install -m755 ${startdir}/src/xorg.sh \ - ${startdir}/pkg/etc/profile.d/ || return 1 + install -m755 -d ${pkgdir}/etc/profile.d + install -m755 ${srcdir}/xorg.sh \ + ${pkgdir}/etc/profile.d/ || return 1 - install -d -m755 ${startdir}/pkg/usr/share/licenses/${pkgname} - install -m644 -D ${startdir}/src/libX11-${pkgver}/COPYING \ - ${startdir}/pkg/usr/share/licenses/${pkgname}/ || return 1 + install -d -m755 ${pkgdir}/usr/share/licenses/${pkgname} + install -m644 COPYING ${pkgdir}/usr/share/licenses/${pkgname}/ || return 1 } diff --git a/abs/core-testing/libx11/xorg.sh b/abs/core-testing/libx11/xorg.sh index d3ade91..9b37312 100644 --- a/abs/core-testing/libx11/xorg.sh +++ b/abs/core-testing/libx11/xorg.sh @@ -13,7 +13,3 @@ if [ -z $XDG_CONFIG_DIRS ]; then else export XDG_CONFIG_DIRS=/etc/xdg:$XDG_CONFIG_DIRS fi - -# temporarily loosen restrictions in libxcb to get java -# application involving X to work. -export LIBXCB_ALLOW_SLOPPY_LOCK=true diff --git a/abs/core-testing/libxaw/PKGBUILD b/abs/core-testing/libxaw/PKGBUILD index 3b447d1..c1d71de 100644 --- a/abs/core-testing/libxaw/PKGBUILD +++ b/abs/core-testing/libxaw/PKGBUILD @@ -1,26 +1,25 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 18578 2008-11-07 22:16:28Z jgc $ # Maintainer: Alexander Baldeck <alexander@archlinux.org> # Contributor: Jan de Groot <jgc@archlinux.org> pkgname=libxaw -pkgver=1.0.4 +pkgver=1.0.5 pkgrel=1 pkgdesc="X11 Athena Widget library" arch=(i686 x86_64) license=('custom:') url="http://xorg.freedesktop.org/" -depends=('libxmu' 'libxpm' 'libxp') +depends=('libxmu' 'libxpm') makedepends=('pkgconfig') options=('!libtool') source=(${url}/releases/individual/lib/libXaw-${pkgver}.tar.bz2) +md5sums=('64e7782db4653cb57c7f7e660b2431c3') build() { - cd ${startdir}/src/libXaw-${pkgver} - ./configure --prefix=/usr --sysconfdir=/etc + cd "${srcdir}/libXaw-${pkgver}" + ./configure --prefix=/usr --sysconfdir=/etc || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 + make DESTDIR="${pkgdir}" install || return 1 - mkdir -p ${startdir}/pkg/usr/share/licenses/${pkgname} - install -m644 ${startdir}/src/libXaw-${pkgver}/COPYING \ - ${startdir}/pkg/usr/share/licenses/${pkgname}/license.txt + install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}" + install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/" || return 1 } -md5sums=('73671d8f1cf36fdd81395328cc3539c9') diff --git a/abs/core-testing/libxml2/PKGBUILD b/abs/core-testing/libxml2/PKGBUILD index be9b8bc..8b8cb34 100644 --- a/abs/core-testing/libxml2/PKGBUILD +++ b/abs/core-testing/libxml2/PKGBUILD @@ -1,25 +1,26 @@ -# $Id: PKGBUILD 1153 2008-05-01 14:49:04Z jgc $ +# $Id: PKGBUILD 22385 2008-12-26 16:51:09Z jgc $ # Maintainer: Jan de Groot <jgc@archlinux.org> # Contributor: John Proctor <jproctor@prium.net> pkgname=libxml2 -pkgver=2.6.32 +pkgver=2.7.2 pkgrel=1 pkgdesc="XML parsing library, version 2" arch=(i686 x86_64) license=('custom') -depends=('zlib' 'readline') -makedepends=('python>=2.5') +depends=('zlib>=1.2.3.3' 'readline>=5.2-8' 'ncurses>=5.6-7') +makedepends=('python') options=('!libtool') -source=(ftp://ftp.xmlsoft.org/${pkgname}/${pkgname}-${pkgver}.tar.gz) url="http://www.xmlsoft.org/" -md5sums=('2621d322c16f0257e30f0ff2b13384de') +source=(ftp://ftp.xmlsoft.org/${pkgname}/${pkgname}-${pkgver}.tar.gz + largefile64.patch) build() { - cd ${startdir}/src/${pkgname}-${pkgver} + cd "${srcdir}/${pkgname}-${pkgver}" + patch -Np1 -i ${srcdir}/largefile64.patch || return 1 ./configure --prefix=/usr --with-threads --with-history || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 - install -m755 -d ${pkgdir}/usr/share/licenses/${pkgname} - install -m644 COPYING ${pkgdir}/usr/share/licenses/${pkgname}/ || return 1 + make DESTDIR="${pkgdir}" install || return 1 + install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}" + install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/" || return 1 } diff --git a/abs/core-testing/libxml2/largefile64.patch b/abs/core-testing/libxml2/largefile64.patch new file mode 100644 index 0000000..29be827 --- /dev/null +++ b/abs/core-testing/libxml2/largefile64.patch @@ -0,0 +1,12 @@ +--- libxml2-2.6.32.dfsg.orig/libxml.h ++++ libxml2-2.6.32.dfsg/libxml.h +@@ -13,6 +13,9 @@ + #ifndef _LARGEFILE_SOURCE + #define _LARGEFILE_SOURCE + #endif ++#ifndef _LARGEFILE64_SOURCE ++#define _LARGEFILE64_SOURCE ++#endif + #ifndef _FILE_OFFSET_BITS + #define _FILE_OFFSET_BITS 64 + #endif diff --git a/abs/core-testing/lighttpd/PKGBUILD b/abs/core-testing/lighttpd/PKGBUILD index db98bc4..ee4d780 100644 --- a/abs/core-testing/lighttpd/PKGBUILD +++ b/abs/core-testing/lighttpd/PKGBUILD @@ -1,13 +1,15 @@ +# $Id: PKGBUILD 17048 2008-10-24 16:27:19Z pierre $ +# Maintainer: Pierre Schmitz <pierre@archlinux.de> + pkgname=lighttpd pkgver=1.4.20 -pkgrel=12 +pkgrel=2 pkgdesc='a secure, fast, compliant and very flexible web-server' license=('custom') arch=('i686' 'x86_64') url="http://www.lighttpd.net/" -#depends=('pcre' 'openssl' 'zlib' 'bzip2' 'attr' 'libldap') -depends=('pcre' 'openssl' 'zlib' 'bzip2' 'attr' ) -makedepends=('fcgi' 'libmysqlclient' 'libxml2' 'e2fsprogs' 'sqlite3' 'gdbm' 'pkgconfig') +depends=('pcre' 'openssl' 'zlib' 'bzip2' 'attr' 'libldap') +makedepends=('fcgi' 'libmysqlclient' 'lua' 'libxml2' 'e2fsprogs' 'sqlite3' 'gdbm' 'pkgconfig') optdepends=('libxml2: mod_webdav' \ 'e2fsprogs: mod_webdav' \ 'lua: mod_cml/mod_magnet' \ @@ -15,11 +17,10 @@ optdepends=('libxml2: mod_webdav' \ 'sqlite3: mod_webdav' \ 'gdbm: mod_trigger_b4_dl' \ ) -backup=('etc/lighttpd/lighttpd.conf' 'etc/logrotate.d/lighttpd' 'etc/lighttpd/auth-inc.conf') +backup=('etc/lighttpd/lighttpd.conf' 'etc/logrotate.d/lighttpd') options=('!libtool' 'emptydirs') -install='lighttpd.install' source=("http://www.lighttpd.net/download/lighttpd-${pkgver}.tar.bz2" \ - 'lighttpd.rc.d' 'lighttpd.logrotate.d' lighttpd.conf auth-inc.conf) + 'lighttpd.rc.d' 'lighttpd.logrotate.d') md5sums=('ed6ee0bb714f393219a32768d86984d8' 'bd690eee0d9e51857448770a151023b0' @@ -34,8 +35,8 @@ build() { --localstatedir=/var \ --libdir=/usr/lib/lighttpd \ --includedir=/usr/include/lighttpd \ - --with-mysql --without-sqlite3 \ - --without-ldap \ + --with-mysql \ + --with-ldap \ --with-attr \ --with-openssl \ --with-kerberos5 \ @@ -44,7 +45,7 @@ build() { --with-webdav-locks \ --with-gdbm \ --with-memcache \ - --without-lua || return 1 + --with-lua || return 1 make || return 1 make DESTDIR=$pkgdir install || return 1 @@ -52,22 +53,17 @@ build() { install -D -m644 ../lighttpd.logrotate.d $pkgdir/etc/logrotate.d/lighttpd install -d -m755 -o http -g http $pkgdir/var/run/lighttpd/ install -d -m755 -o http -g http $pkgdir/var/log/lighttpd/ - + install -D -m644 doc/lighttpd.conf $pkgdir/etc/lighttpd/lighttpd.conf # set sane defaults - #sed -e 's|/srv/www/htdocs/|/srv/http/|' \ - # -e 's|/srv/www/|/srv/http/|' \ - # -e 's|#server.username = "wwwrun"|server.username = "http"|' \ - # -e 's|#server.groupname = "wwwrun"|server.groupname = "http"|' \ - # -e 's|#server.pid-file = "/var/run/lighttpd.pid"|server.pid-file = "/var/run/lighttpd/lighttpd.pid"|' \ - # -e 's|/usr/local/bin/php-cgi|/usr/bin/php-cgi|' \ - # -i ${pkgdir}/etc/lighttpd/lighttpd.conf || return 1 - install -D -m644 $startdir/src/lighttpd.conf $pkgdir/etc/lighttpd/lighttpd.conf - install -D -m644 $startdir/src/auth-inc.conf $pkgdir/etc/lighttpd/auth-inc.conf + sed -e 's|/srv/www/htdocs/|/srv/http/|' \ + -e 's|/srv/www/|/srv/http/|' \ + -e 's|#server.username = "wwwrun"|server.username = "http"|' \ + -e 's|#server.groupname = "wwwrun"|server.groupname = "http"|' \ + -e 's|#server.pid-file = "/var/run/lighttpd.pid"|server.pid-file = "/var/run/lighttpd/lighttpd.pid"|' \ + -e 's|/usr/local/bin/php-cgi|/usr/bin/php-cgi|' \ + -i ${pkgdir}/etc/lighttpd/lighttpd.conf || return 1 + install -D -m644 COPYING $pkgdir/usr/share/licenses/$pkgname/COPYING } - -#changelog -#remove ldap -#add custom lighttpd.conf diff --git a/abs/core-testing/mcpp/PKGBUILD b/abs/core-testing/mcpp/PKGBUILD index 9d0afce..57dae67 100644 --- a/abs/core-testing/mcpp/PKGBUILD +++ b/abs/core-testing/mcpp/PKGBUILD @@ -1,27 +1,23 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 22398 2008-12-26 17:32:45Z jgc $ # Maintainer: Alexander Baldeck <alexander@archlinux.org> # Contributor: Jan de Groot <jgc@archlinux.org> pkgname=mcpp -pkgver=2.6.4 -pkgrel=2 +pkgver=2.7.2 +pkgrel=1 pkgdesc="Matsui's CPP implementation precisely conformed to standards" arch=(i686 x86_64) -license=('custom:') +license=('custom') url="http://mcpp.sourceforge.net" -source=(http://downloads.sourceforge.net/${pkgname}/${pkgname}-${pkgver}.tar.gz \ - mcpp-2.6.4-patch) +source=(http://downloads.sourceforge.net/${pkgname}/${pkgname}-${pkgver}.tar.gz ) depends=(glibc) +md5sums=('512de48c87ab023a69250edc7a0c7b05') build() { - cd ${startdir}/src/${pkgname}-${pkgver} - patch -Np0 -i ${startdir}/src/mcpp-2.6.4-patch || return 1 - ./configure --prefix=/usr + cd "${srcdir}/${pkgname}-${pkgver}" + ./configure --prefix=/usr || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install + make DESTDIR="${pkgdir}" install || return 1 - mkdir -p ${startdir}/pkg/usr/share/licenses/${pkgname} - install -m644 ${startdir}/src/${pkgname}-${pkgver}/LICENSE \ - ${startdir}/pkg/usr/share/licenses/${pkgname}/LICENSE + install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}" + ln -sf ../doc/${pkgname}/LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/" } -md5sums=('c0f5aa9b13e36ea0f2ab9358c5d65153' - '80890eb2988d7e80964b814cf134f842') diff --git a/abs/core-testing/mesa/PKGBUILD b/abs/core-testing/mesa/PKGBUILD index 9d36715..72d100e 100644 --- a/abs/core-testing/mesa/PKGBUILD +++ b/abs/core-testing/mesa/PKGBUILD @@ -1,63 +1,46 @@ -# $Id: PKGBUILD 3486 2008-06-22 21:12:34Z jgc $ +# $Id: PKGBUILD 12996 2008-09-25 18:06:12Z jgc $ # Maintainer: Alexander Baldeck <alexander@archlinux.org> # Contributor: Jan de Groot <jgc@archlinux.org> pkgname=mesa -pkgver=7.0.3 -pkgrel=3 +pkgver=7.2 +pkgrel=1 pkgdesc="Mesa OpenGL library" arch=(i686 x86_64) license=('LGPL') url="http://mesa3d.sourceforge.net" -depends=('libgl' 'glproto>=1.4.9' 'gcc-libs' 'libxt') -makedepends=('imake' 'pkgconfig') +depends=('libgl' 'libx11>=1.1.4-3' 'libxt' 'glproto>=1.4.9' 'gcc-libs>=4.3.1') +makedepends=('pkgconfig' 'dri2proto>=1.1' 'libdrm>=2.3.1') conflicts=('mesa-apps') replaces=('mesa-apps') -source=(http://downloads.sourceforge.net/sourceforge/mesa3d/MesaLib-${pkgver}.tar.bz2 - http://downloads.sourceforge.net/sourceforge/mesa3d/MesaDemos-${pkgver}.tar.bz2 - ftp://ftp.archlinux.org/other/mesa/gl-manpages-1.0.1.tar.bz2 - mesa-6.5-apps-noglut.patch) -md5sums=('e6e6379d7793af40a6bc3ce1bace572e' - '47fd6863621d3c9c7dbb870ab7f0c303' - '6ae05158e678f4594343f32c2ca50515' - 'cc5a4ea4ea8de4425997fcda2a9d8648') +source=(http://downloads.sourceforge.net/mesa3d/MesaLib-${pkgver}.tar.bz2 + http://downloads.sourceforge.net/mesa3d/MesaDemos-${pkgver}.tar.bz2 + ftp://ftp.archlinux.org/other/mesa/gl-manpages-1.0.1.tar.bz2) +md5sums=('04d379292e023df0b0266825cb0dbde5' + '22e03dc4038cd63f32c21eb60994892b' + '6ae05158e678f4594343f32c2ca50515') build() { - cd ${startdir}/src/Mesa-${pkgver} - patch -Np0 -i ${startdir}/src/mesa-6.5-apps-noglut.patch || return 1 - - unset CFLAGS - unset CXXFLAGS - - CONFIG="linux-dri-x86" - if [ "${CARCH}" = "x86_64" ]; then - CONFIG="linux-dri-x86-64" - sed -i -e "s/lib64/lib/g" configs/${CONFIG} - fi - echo "EXTRA_LIB_PATH =" >> configs/${CONFIG} - echo "SRC_DIRS = glx/x11 glu glw" >> configs/${CONFIG} - rm -f include/GL/glut*h - echo "USING_EGL = 0" >> configs/${CONFIG} - echo "PROGRAM_DIRS =" >> configs/${CONFIG} - echo "MKDEP = makedepend" >> configs/${CONFIG} - echo "DRI_DIRS =" >> configs/${CONFIG} - echo "DRI_DRIVER_SEARCH_DIR = /usr/lib/xorg/modules/dri" >> configs/${CONFIG} - echo "ARCH_FLAGS += -DGLX_USE_TLS" >> configs/${CONFIG} - echo "X11_INCLUDES = `pkg-config --cflags-only-I x11`" >> configs/${CONFIG} + cd ${srcdir}/Mesa-${pkgver} + ./configure --prefix=/usr \ + --with-dri-driverdir=/usr/lib/xorg/modules/dri \ + --with-dri-drivers=swrast \ + --enable-glx-tls \ + --disable-ttm-api \ + --with-driver=dri \ + --enable-xcb \ + --disable-glut || return 1 + make || return 1 + make DESTDIR=${pkgdir} install || return 1 - make ${CONFIG} || return 1 - install -m755 -d ${startdir}/pkg/usr - make INSTALL_DIR=${startdir}/pkg/usr install || return 1 - install -m644 include/GL/*.h ${startdir}/pkg/usr/include/GL/ || return 1 + install -m755 -d ${pkgdir}/usr/bin + install -m755 progs/xdemos/glx{gears,info} ${pkgdir}/usr/bin/ || return 1 - rm -f ${startdir}/pkg/usr/lib/libGL.so* - cd progs/xdemos - make CFLAGS+="-I${startdir}/pkg/usr/include" glxinfo glxgears || return 1 - install -m755 -d ${startdir}/pkg/usr/bin || return 1 - install -m755 glxinfo glxgears ${startdir}/pkg/usr/bin/ || return 1 + rm -f ${pkgdir}/usr/lib/libGL.so* + rm -rf ${pkgdir}/usr/lib/xorg - cd ${startdir}/src/gl-manpages-1.0.1 + cd ${srcdir}/gl-manpages-1.0.1 ./configure --prefix=/usr || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 + make DESTDIR=${pkgdir} install || return 1 } diff --git a/abs/core-testing/mesa/mesa-7.1-link-shared.patch b/abs/core-testing/mesa/mesa-7.1-link-shared.patch new file mode 100644 index 0000000..7fdbf14 --- /dev/null +++ b/abs/core-testing/mesa/mesa-7.1-link-shared.patch @@ -0,0 +1,102 @@ +diff -up mesa-20080814/src/mesa/drivers/dri/Makefile.dricore mesa-20080814/src/mesa/drivers/dri/Makefile +--- mesa-20080814/src/mesa/drivers/dri/Makefile.dricore 2008-08-14 02:28:38.000000000 +1000 ++++ mesa-20080814/src/mesa/drivers/dri/Makefile 2008-08-14 16:18:20.000000000 +1000 +@@ -6,12 +6,17 @@ include $(TOP)/configs/current + + + +-default: $(TOP)/$(LIB_DIR) subdirs ++default: $(TOP)/$(LIB_DIR) $(TOP)/$(LIB_DIR)/libdricore.so subdirs + + + $(TOP)/$(LIB_DIR): + -mkdir $(TOP)/$(LIB_DIR) + ++libdricore.so: ++ gcc -shared -o libdricore.so -Wl,--whole-archive ../../libmesa.a -Wl,--no-whole-archive -lm -lpthread -lc ++ ++$(TOP)/$(LIB_DIR)/libdricore.so: $(TOP)/$(LIB_DIR) libdricore.so ++ $(INSTALL) libdricore.so $(TOP)/$(LIB_DIR) + + subdirs: + @for dir in $(DRI_DIRS) ; do \ +@@ -31,12 +36,14 @@ dri.pc: dri.pc.in + $(pcedit) $< > $@ + + +-install: dri.pc ++install: dri.pc $(TOP)/$(LIB_DIR)/libdricore.so + @for dir in $(DRI_DIRS) ; do \ + if [ -d $$dir ] ; then \ + (cd $$dir && $(MAKE) install) || exit 1 ; \ + fi \ + done ++ $(INSTALL) -d $(DESTDIR)$(DRI_DRIVER_INSTALL_DIR) ++ $(INSTALL) -m 755 $(TOP)/$(LIB_DIR)/libdricore.so $(DESTDIR)$(DRI_DRIVER_INSTALL_DIR) + $(INSTALL) -d $(DESTDIR)$(INSTALL_INC_DIR)/GL/internal + $(INSTALL) -m 0644 $(TOP)/include/GL/internal/dri_interface.h \ + $(DESTDIR)$(INSTALL_INC_DIR)/GL/internal +@@ -52,5 +59,6 @@ clean: + (cd $$dir && $(MAKE) clean) ; \ + fi \ + done ++ -rm -f libdricore.so $(TOP)/$(LIB_DIR)/libdricore.so + -rm -f common/*.o + -rm -f *.pc +diff -up mesa-20080814/src/mesa/drivers/dri/Makefile.template.dricore mesa-20080814/src/mesa/drivers/dri/Makefile.template +--- mesa-20080814/src/mesa/drivers/dri/Makefile.template.dricore 2008-08-14 02:28:38.000000000 +1000 ++++ mesa-20080814/src/mesa/drivers/dri/Makefile.template 2008-08-14 16:19:37.000000000 +1000 +@@ -1,6 +1,6 @@ + # -*-makefile-*- + +-MESA_MODULES = $(TOP)/src/mesa/libmesa.a ++MESA_MODULES = $(TOP)/$(LIB_DIR)/libdricore.so + + COMMON_SOURCES = \ + ../common/utils.c \ +@@ -64,7 +64,9 @@ default: symlinks depend $(LIBNAME) $(TO + + $(LIBNAME): $(OBJECTS) $(MESA_MODULES) $(WINOBJ) Makefile $(TOP)/src/mesa/drivers/dri/Makefile.template + $(MKLIB) -o $@ -noprefix -linker '$(CC)' -ldflags '$(LDFLAGS)' \ +- $(OBJECTS) $(MESA_MODULES) $(WINOBJ) $(DRI_LIB_DEPS) ++ $(OBJECTS) $(WINOBJ) \ ++ -L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) -ldricore \ ++ $(DRI_LIB_DEPS) + + + $(TOP)/$(LIB_DIR)/$(LIBNAME): $(LIBNAME) +diff -up mesa-20080814/src/mesa/x86/read_rgba_span_x86.S.dricore mesa-20080814/src/mesa/x86/read_rgba_span_x86.S +--- mesa-20080814/src/mesa/x86/read_rgba_span_x86.S.dricore 2008-08-14 02:28:38.000000000 +1000 ++++ mesa-20080814/src/mesa/x86/read_rgba_span_x86.S 2008-08-14 16:16:49.000000000 +1000 +@@ -77,7 +77,6 @@ + */ + + .globl _generic_read_RGBA_span_BGRA8888_REV_MMX +-.hidden _generic_read_RGBA_span_BGRA8888_REV_MMX + .type _generic_read_RGBA_span_BGRA8888_REV_MMX, @function + _generic_read_RGBA_span_BGRA8888_REV_MMX: + pushl %ebx +@@ -172,7 +171,6 @@ _generic_read_RGBA_span_BGRA8888_REV_MMX + */ + + .globl _generic_read_RGBA_span_BGRA8888_REV_SSE +-.hidden _generic_read_RGBA_span_BGRA8888_REV_SSE + .type _generic_read_RGBA_span_BGRA8888_REV_SSE, @function + _generic_read_RGBA_span_BGRA8888_REV_SSE: + pushl %esi +@@ -335,7 +333,6 @@ _generic_read_RGBA_span_BGRA8888_REV_SSE + + .text + .globl _generic_read_RGBA_span_BGRA8888_REV_SSE2 +-.hidden _generic_read_RGBA_span_BGRA8888_REV_SSE2 + .type _generic_read_RGBA_span_BGRA8888_REV_SSE2, @function + _generic_read_RGBA_span_BGRA8888_REV_SSE2: + pushl %esi +@@ -494,7 +491,6 @@ _generic_read_RGBA_span_BGRA8888_REV_SSE + + .text + .globl _generic_read_RGBA_span_RGB565_MMX +- .hidden _generic_read_RGBA_span_RGB565_MMX + .type _generic_read_RGBA_span_RGB565_MMX, @function + + _generic_read_RGBA_span_RGB565_MMX: diff --git a/abs/core-testing/mythtv/stable/mytharchive/PKGBUILD b/abs/core-testing/mythtv/stable/mytharchive/PKGBUILD index fb3b755..7d24ae3 100644 --- a/abs/core-testing/mythtv/stable/mytharchive/PKGBUILD +++ b/abs/core-testing/mythtv/stable/mytharchive/PKGBUILD @@ -4,18 +4,18 @@ pkgname=mytharchive pkgver=0.21 -pkgrel=1 +pkgrel=2 pkgdesc="MythTV plugin that lets you create DVDs from or archive your recorded shows." arch=('i686' 'x86_64') url="http://www.mythtv.org" license=('GPL') depends=("mythtv>=${pkgver}" 'libxmu' 'mysql-python' 'pil' 'dvdauthor') source=("ftp://ftp.knoppmyth.net/R6/sources/mythplugins-$pkgver-fixes.tar.bz2") -md5sums=('af20a78ac66719feddf9a39f1a799ded') +md5sums=('00ee70be781b9af5913f046525d79ab9') groups=('mythtv-extras') build() { - cd $startdir/src/mythplugins-${pkgver} + cd $startdir/src/mythplugins . /etc/profile.d/qt3.sh # use QT3 qmake diff --git a/abs/core-testing/mythtv/stable/mythbrowser/PKGBUILD b/abs/core-testing/mythtv/stable/mythbrowser/PKGBUILD index 5a53093..34e64f2 100644 --- a/abs/core-testing/mythtv/stable/mythbrowser/PKGBUILD +++ b/abs/core-testing/mythtv/stable/mythbrowser/PKGBUILD @@ -4,7 +4,7 @@ pkgname=mythbrowser pkgver=0.21 -pkgrel=2 +pkgrel=3 pkgdesc="Mini web browser for MythTV" arch=('i686' 'x86_64') url="http://www.mythtv.org" @@ -13,10 +13,10 @@ depends=("mythtv>=${pkgver}" 'wget' 'libxvmc' 'kdelibs3') groups=('mythtv-extras') options=('!makeflags') source=("ftp://ftp.knoppmyth.net/R6/sources/mythplugins-$pkgver-fixes.tar.bz2") -md5sums=('af20a78ac66719feddf9a39f1a799ded') +md5sums=('00ee70be781b9af5913f046525d79ab9') build() { - cd $startdir/src/mythplugins-${pkgver} + cd $startdir/src/mythplugins . /etc/profile.d/qt3.sh . /etc/profile.d/kde3.sh diff --git a/abs/core-testing/mythtv/stable/mythcontrols/PKGBUILD b/abs/core-testing/mythtv/stable/mythcontrols/PKGBUILD index cf7f43c..2639834 100644 --- a/abs/core-testing/mythtv/stable/mythcontrols/PKGBUILD +++ b/abs/core-testing/mythtv/stable/mythcontrols/PKGBUILD @@ -4,7 +4,7 @@ pkgname=mythcontrols pkgver=0.21 -pkgrel=1 +pkgrel=2 pkgdesc="Experimental controls for MythTV" arch=('i686' 'x86_64') url="http://www.mythtv.org" @@ -12,11 +12,11 @@ license=('GPL') depends=("mythtv>=${pkgver}") options=('!makeflags') source=("ftp://ftp.knoppmyth.net/R6/sources/mythplugins-$pkgver-fixes.tar.bz2") -md5sums=('af20a78ac66719feddf9a39f1a799ded') +md5sums=('00ee70be781b9af5913f046525d79ab9') groups=('mythtv-extras') build() { - cd $startdir/src/mythplugins-${pkgver} + cd $startdir/src/mythplugins . /etc/profile.d/qt3.sh # use QT3 qmake diff --git a/abs/core-testing/mythtv/stable/mythflix/PKGBUILD b/abs/core-testing/mythtv/stable/mythflix/PKGBUILD index f613963..e9033ac 100644 --- a/abs/core-testing/mythtv/stable/mythflix/PKGBUILD +++ b/abs/core-testing/mythtv/stable/mythflix/PKGBUILD @@ -4,18 +4,18 @@ pkgname=mythflix pkgver=0.21 -pkgrel=1 +pkgrel=2 pkgdesc="Netflix access plugin for MythTV" arch=('i686' 'x86_64') url="http://www.mythtv.org" license=('GPL') depends=("mythtv>=${pkgver}") source=("ftp://ftp.knoppmyth.net/R6/sources/mythplugins-$pkgver-fixes.tar.bz2") -md5sums=('af20a78ac66719feddf9a39f1a799ded') +md5sums=('00ee70be781b9af5913f046525d79ab9') groups=('mythtv-extras') build() { - cd $startdir/src/mythplugins-${pkgver} + cd $startdir/src/mythplugins . /etc/profile.d/qt3.sh # use QT3 qmake diff --git a/abs/core-testing/mythtv/stable/mythgallery/PKGBUILD b/abs/core-testing/mythtv/stable/mythgallery/PKGBUILD index 76a66c5..3218bb4 100644 --- a/abs/core-testing/mythtv/stable/mythgallery/PKGBUILD +++ b/abs/core-testing/mythtv/stable/mythgallery/PKGBUILD @@ -4,18 +4,18 @@ pkgname=mythgallery pkgver=0.21 -pkgrel=1 +pkgrel=2 pkgdesc="Image gallery plugin for MythTV" arch=('i686' 'x86_64') url="http://www.mythtv.org" license=('GPL') depends=("mythtv>=${pkgver}" 'libexif' 'libtiff') source=("ftp://ftp.knoppmyth.net/R6/sources/mythplugins-$pkgver-fixes.tar.bz2") -md5sums=('af20a78ac66719feddf9a39f1a799ded') +md5sums=('00ee70be781b9af5913f046525d79ab9') groups=('mythtv-extras') build() { - cd $startdir/src/mythplugins-${pkgver} + cd $startdir/src/mythplugins . /etc/profile.d/qt3.sh # use QT3 qmake diff --git a/abs/core-testing/mythtv/stable/mythgame/PKGBUILD b/abs/core-testing/mythtv/stable/mythgame/PKGBUILD index 33fb9a5..74a1e00 100644 --- a/abs/core-testing/mythtv/stable/mythgame/PKGBUILD +++ b/abs/core-testing/mythtv/stable/mythgame/PKGBUILD @@ -4,18 +4,18 @@ pkgname=mythgame pkgver=0.21 -pkgrel=1 +pkgrel=2 pkgdesc="Emulation plugin for MythTV" arch=('i686' 'x86_64') url="http://www.mythtv.org" license=('GPL') depends=("mythtv>=${pkgver}" 'zlib') source=("ftp://ftp.knoppmyth.net/R6/sources/mythplugins-$pkgver-fixes.tar.bz2") -md5sums=('af20a78ac66719feddf9a39f1a799ded') +md5sums=('00ee70be781b9af5913f046525d79ab9') groups=('mythtv-extras') build() { - cd $startdir/src/mythplugins-$pkgver + cd $startdir/src/mythplugins export QMAKESPEC='linux-g++' source /etc/profile.d/qt3.sh diff --git a/abs/core-testing/mythtv/stable/mythmusic/PKGBUILD b/abs/core-testing/mythtv/stable/mythmusic/PKGBUILD index fbbfbc4..73415c7 100644 --- a/abs/core-testing/mythtv/stable/mythmusic/PKGBUILD +++ b/abs/core-testing/mythtv/stable/mythmusic/PKGBUILD @@ -4,7 +4,7 @@ pkgname=mythmusic pkgver=0.21 -pkgrel=5 +pkgrel=7 pkgdesc="Music playing plugin for MythTV" arch=('i686' 'x86_64') url="http://www.mythtv.org" @@ -13,11 +13,11 @@ depends=("mythtv>=${pkgver}" 'libid3tag' 'libmad' 'libvorbis' 'flac>=1.1.4' 'lib 'cdparanoia' 'fftw2' 'sdl' 'faad2>=2.6.1' 'lame' 'taglib' \ 'libvisual-plugins' 'libvisual-projectm') source=("ftp://ftp.knoppmyth.net/R6/sources/mythplugins-$pkgver-fixes.tar.bz2") -md5sums=('af20a78ac66719feddf9a39f1a799ded') +md5sums=('00ee70be781b9af5913f046525d79ab9') groups=('mythtv-extras') build() { - cd $startdir/src/mythplugins-${pkgver} + cd $startdir/src/mythplugins . /etc/profile.d/qt3.sh # use QT3 qmake diff --git a/abs/core-testing/mythtv/stable/mythnews/PKGBUILD b/abs/core-testing/mythtv/stable/mythnews/PKGBUILD index 9133755..3288ce7 100644 --- a/abs/core-testing/mythtv/stable/mythnews/PKGBUILD +++ b/abs/core-testing/mythtv/stable/mythnews/PKGBUILD @@ -4,18 +4,18 @@ pkgname=mythnews pkgver=0.21 -pkgrel=1 +pkgrel=2 pkgdesc="News checking plugin for MythTV" arch=('i686' 'x86_64') url="http://www.mythtv.org" license=('GPL') depends=("mythtv>=${pkgver}") source=("ftp://ftp.knoppmyth.net/R6/sources/mythplugins-$pkgver-fixes.tar.bz2") -md5sums=('af20a78ac66719feddf9a39f1a799ded') +md5sums=('00ee70be781b9af5913f046525d79ab9') groups=('mythtv-extras') build() { - cd $startdir/src/mythplugins-${pkgver} + cd $startdir/src/mythplugins . /etc/profile.d/qt3.sh # use QT3 qmake diff --git a/abs/core-testing/mythtv/stable/mythphone/PKGBUILD b/abs/core-testing/mythtv/stable/mythphone/PKGBUILD index 24cd04f..b093caa 100644 --- a/abs/core-testing/mythtv/stable/mythphone/PKGBUILD +++ b/abs/core-testing/mythtv/stable/mythphone/PKGBUILD @@ -4,18 +4,18 @@ pkgname=mythphone pkgver=0.21 -pkgrel=1 +pkgrel=2 pkgdesc="Plugin that allows phone calls to be made to MythTv" arch=('i686' 'x86_64') url="http://www.mythtv.org" license=('GPL') depends=("mythtv>=${pkgver}") source=("ftp://ftp.knoppmyth.net/R6/sources/mythplugins-$pkgver-fixes.tar.bz2") -md5sums=('af20a78ac66719feddf9a39f1a799ded') +md5sums=('00ee70be781b9af5913f046525d79ab9') groups=('mythtv-extras') build() { - cd $startdir/src/mythplugins-${pkgver} + cd $startdir/src/mythplugins . /etc/profile.d/qt3.sh # use QT3 qmake diff --git a/abs/core-testing/mythtv/stable/mythsmolt/PKGBUILD b/abs/core-testing/mythtv/stable/mythsmolt/PKGBUILD index a56292c..854b2e3 100644 --- a/abs/core-testing/mythtv/stable/mythsmolt/PKGBUILD +++ b/abs/core-testing/mythtv/stable/mythsmolt/PKGBUILD @@ -1,6 +1,6 @@ pkgname=mythsmolt pkgver=0.21 -pkgrel=3 +pkgrel=4 pkgdesc="mythsmolt, a hardware profileing tool" arch=('i686' 'x86_64') url="http://www.mythvantage.com" diff --git a/abs/core-testing/mythtv/stable/mythtv/PKGBUILD b/abs/core-testing/mythtv/stable/mythtv/PKGBUILD index 3cd45a8..8ba8102 100644 --- a/abs/core-testing/mythtv/stable/mythtv/PKGBUILD +++ b/abs/core-testing/mythtv/stable/mythtv/PKGBUILD @@ -1,6 +1,6 @@ pkgname=mythtv pkgver=0.21 -pkgrel=17 +pkgrel=19 pkgdesc="A Homebrew PVR project" arch=('i686' 'x86_64') depends=('bash' 'mysql-clients>=5.0' 'qt3' 'lame' 'lirc-utils' 'ffmpeg' \ @@ -9,7 +9,7 @@ backup=(etc/mythtv/mythbackend.conf etc/mythtv/mysql.txt) source=(ftp://ftp.knoppmyth.net/R6/sources/${pkgname}-${pkgver}-fixes.tar.bz2 \ mythbackend myththemedmenu.cpp.patch myththemedmenu.h.patch smolt_jump.patch ) -#md5sums=('08506f0c5120c072085b6995f529167a' '7ef6de58240e7aad389a0b13d91b1cf6'\ +#md5sums=('6e8180a0122d5fe335aa5e4b036ffc1d' '7ef6de58240e7aad389a0b13d91b1cf6'\ # 'a0ecb7f476cb71c0c1ac90d349fc7695') license=('GPL2') @@ -19,7 +19,7 @@ url="http://www.mythtv.org/" install=mythtv.install build() { - cd $startdir/src/${pkgname}-${pkgver} || return 1 + cd $startdir/src/${pkgname}-${pkgver} || return 1 #apply patches patch -p0 < ../myththemedmenu.cpp.patch diff --git a/abs/core-testing/mythtv/stable/mythtv/menu-xml/library.xml.patch b/abs/core-testing/mythtv/stable/mythtv/menu-xml/library.xml.patch index 19955dc..ac42e90 100644 --- a/abs/core-testing/mythtv/stable/mythtv/menu-xml/library.xml.patch +++ b/abs/core-testing/mythtv/stable/mythtv/menu-xml/library.xml.patch @@ -1,21 +1,17 @@ ---- library.xml.orig 2008-10-02 22:46:30.000000000 +0000 -+++ library.xml 2008-07-02 04:05:15.000000000 +0000 -@@ -117,13 +117,11 @@ - <depends>mythFM mythfm</depends> +--- library.xml.orig 2009-01-09 03:55:53.000000000 +0000 ++++ library.xml 2009-01-09 04:08:30.000000000 +0000 +@@ -118,11 +118,9 @@ </button> -- <button> + <button> - <type>STREAM</type> -- <text>Play online streams</text> +- <text>Play Online Streams</text> - <text lang="HE">× ×’×Ÿ מדיה ×ž×›×•×•× ×ª</text> - <action>PLUGIN mythstream</action> - <depends>mythstream</depends> -- </button> -+ <button> + <type>STREAM</type> + <text>Online Streams</text> + <action>MENU is.xml</action> -+ </button> + </button> <button> - <type>IMAGES</type> diff --git a/abs/core-testing/mythtv/stable/mythvideo/PKGBUILD b/abs/core-testing/mythtv/stable/mythvideo/PKGBUILD index 21f2a22..a1bab3f 100644 --- a/abs/core-testing/mythtv/stable/mythvideo/PKGBUILD +++ b/abs/core-testing/mythtv/stable/mythvideo/PKGBUILD @@ -4,7 +4,7 @@ pkgname=mythvideo pkgver=0.21 -pkgrel=2 +pkgrel=3 pkgdesc="Video playback and browsing plugin for MythTV" arch=('i686' 'x86_64') url="http://www.mythtv.org" @@ -12,12 +12,12 @@ license=('GPL') depends=("mythtv>=${pkgver}" 'mplayer' 'perlxml' 'perl-libwww' 'perl-uri' 'perl-xml-simple' 'ffmpeg') source=("ftp://ftp.knoppmyth.net/R6/sources/mythplugins-$pkgver-fixes.tar.bz2"\ mtd) -md5sums=('af20a78ac66719feddf9a39f1a799ded' '476c12ba074794ad7f4ae092bdf949d6') +md5sums=('00ee70be781b9af5913f046525d79ab9' '476c12ba074794ad7f4ae092bdf949d6') replaces=('mythdvd') groups=('mythtv-extras') build() { - cd $startdir/src/mythplugins-${pkgver} + cd $startdir/src/mythplugins . /etc/profile.d/qt3.sh # use QT3 qmake diff --git a/abs/core-testing/mythtv/stable/mythweather/PKGBUILD b/abs/core-testing/mythtv/stable/mythweather/PKGBUILD index ce2894a..42e9dc1 100644 --- a/abs/core-testing/mythtv/stable/mythweather/PKGBUILD +++ b/abs/core-testing/mythtv/stable/mythweather/PKGBUILD @@ -4,18 +4,18 @@ pkgname=mythweather pkgver=0.21 -pkgrel=1 +pkgrel=2 pkgdesc="Weather checking plugin for MythTV" arch=('i686' 'x86_64') url="http://www.mythtv.org" license=('GPL') depends=("mythtv>=${pkgver}" 'wget') source=("ftp://ftp.knoppmyth.net/R6/sources/mythplugins-$pkgver-fixes.tar.bz2") -md5sums=('af20a78ac66719feddf9a39f1a799ded') +md5sums=('00ee70be781b9af5913f046525d79ab9') groups=('mythtv-extras') build() { - cd $startdir/src/mythplugins-${pkgver} + cd $startdir/src/mythplugins . /etc/profile.d/qt3.sh # use QT3 qmake diff --git a/abs/core-testing/mythtv/stable/mythweb/PKGBUILD b/abs/core-testing/mythtv/stable/mythweb/PKGBUILD index 6474b01..d5ddefb 100644 --- a/abs/core-testing/mythtv/stable/mythweb/PKGBUILD +++ b/abs/core-testing/mythtv/stable/mythweb/PKGBUILD @@ -1,6 +1,6 @@ pkgname=mythweb pkgver=0.21 -pkgrel=8 +pkgrel=9 pkgdesc="Web interface for MythTV's backend" arch=('i686' 'x86_64') url="http://www.mythtv.org" @@ -8,7 +8,7 @@ license=('GPL') depends=("mythtv>=${pkgver}" 'lighttpd' 'php') install=mythweb.install source=("ftp://ftp.knoppmyth.net/R6/sources/mythplugins-$pkgver-fixes.tar.bz2") -md5sums=('af20a78ac66719feddf9a39f1a799ded') +md5sums=('00ee70be781b9af5913f046525d79ab9') groups=('mythtv-extras') DOCROOT=/data/srv/httpd/htdocs/mythweb @@ -21,7 +21,7 @@ build() { # tar -zxvf $startdir/patch/icons.tar.gz ### - cp -r $startdir/src/mythplugins-$pkgver/$pkgname/* $startdir/pkg/$DOCROOT + cp -r $startdir/src/mythplugins/$pkgname/* $startdir/pkg/$DOCROOT # cp $startdir/src/mythplugins-$pkgver/$pkgname/data/.htaccess $startdir/pkg/$DOCROOT rm $startdir/pkg/srv/$DOCROOT/README chown -R http:users $startdir/pkg/$DOCROOT diff --git a/abs/core-testing/nvidia-71xx/PKGBUILD b/abs/core-testing/nvidia-71xx/PKGBUILD index e879abe..af98000 100644 --- a/abs/core-testing/nvidia-71xx/PKGBUILD +++ b/abs/core-testing/nvidia-71xx/PKGBUILD @@ -3,8 +3,8 @@ pkgname=nvidia-71xx pkgver=71.86.06 -_kernver='2.6.26-ARCH' -pkgrel=3 +_kernver='2.6.27-ARCH' +pkgrel=4 pkgdesc="NVIDIA legacy drivers for kernel26, 71xx branch" arch=(i686 x86_64) [ "$CARCH" = "i686" ] && ARCH=x86 diff --git a/abs/core-testing/nvidia-71xx/nvidia-71xx.install b/abs/core-testing/nvidia-71xx/nvidia-71xx.install index 18b7435..9956ea8 100644 --- a/abs/core-testing/nvidia-71xx/nvidia-71xx.install +++ b/abs/core-testing/nvidia-71xx/nvidia-71xx.install @@ -1,6 +1,6 @@ # arg 1: the new package version post_install() { - KERNEL_VERSION='2.6.26-ARCH' + KERNEL_VERSION='2.6.27-ARCH' depmod -v $KERNEL_VERSION > /dev/null 2>&1 } @@ -13,7 +13,7 @@ post_upgrade() { # arg 1: the old package version post_remove() { - KERNEL_VERSION='2.6.26-ARCH' + KERNEL_VERSION='2.6.27-ARCH' depmod -v $KERNEL_VERSION > /dev/null 2>&1 rmmod nvidia >/dev/null 2>&1 } diff --git a/abs/core-testing/nvidia-96xx-utils/PKGBUILD b/abs/core-testing/nvidia-96xx-utils/PKGBUILD index b745a3c..749dc08 100644 --- a/abs/core-testing/nvidia-96xx-utils/PKGBUILD +++ b/abs/core-testing/nvidia-96xx-utils/PKGBUILD @@ -1,9 +1,9 @@ -# $Id: PKGBUILD 5959 2008-07-21 20:38:14Z thomas $ +# $Id: PKGBUILD 18827 2008-11-09 14:01:28Z jgc $ # Maintainer: Tobias Powalowski <tpowa@archlinux.org> # Contributor: James Rayner <iphitus@gmail.com> pkgname=nvidia-96xx-utils -pkgver=96.43.07 +pkgver=96.43.09 pkgrel=1 pkgdesc="NVIDIA legacy drivers utilities and libraries, 96xx branch." arch=(i686 x86_64) @@ -16,9 +16,9 @@ conflicts=('libgl' 'libgl-dri' 'ati-fglrx-utils' 'nvidia-utils' \ 'nvidia-71xx-utils' 'nvidia-legacy-utils') provides=('libgl') install=nvidia-96xx.install -source=(http://us.download.nvidia.com/XFree86/Linux-${ARCH}/${pkgver}/NVIDIA-Linux-${ARCH}-${pkgver}-pkg0.run \ +source=(http://download.nvidia.com/XFree86/Linux-${ARCH}/${pkgver}/NVIDIA-Linux-${ARCH}-${pkgver}-pkg0.run \ supported-cards.txt) -md5sums=('8fa2b7c5e4629850d4bd33033ec46166' +md5sums=('758c739114b81ea2cb7da7c22ab80a7e' '6363d7e494d33729609540088e33e73f') [ "$CARCH" = "x86_64" ] && md5sums=('c03bd2469292d91dde8767af1418c4e1' '6363d7e494d33729609540088e33e73f') @@ -31,14 +31,14 @@ build() sh NVIDIA-Linux-${ARCH}-${pkgver}-pkg0.run --extract-only cd NVIDIA-Linux-${ARCH}-${pkgver}-pkg0/usr/ - mkdir -p $startdir/pkg/usr/{lib,bin,share/applications,share/pixmaps,man/man1} + mkdir -p $startdir/pkg/usr/{lib,bin,share/applications,share/pixmaps,share/man/man1} mkdir -p $startdir/pkg/usr/lib/xorg/modules/{extensions,drivers} mkdir -p $startdir/pkg/usr/share/licenses/nvidia-96xx/ install lib/{libGLcore.so.${pkgver},libGL.so.${pkgver},libnvidia-cfg.so.${pkgver},tls/libnvidia-tls.so.${pkgver}} \ $startdir/pkg/usr/lib/ || return 1 - install -m644 share/man/man1/* $startdir/pkg/usr/man/man1/ || return 1 - rm $startdir/pkg/usr/man/man1/nvidia-installer.1.gz || return 1 + install -m644 share/man/man1/* $startdir/pkg/usr/share/man/man1/ || return 1 + rm $startdir/pkg/usr/share/man/man1/nvidia-installer.1.gz || return 1 install X11R6/lib/libXv* $startdir/pkg/usr/lib/ || return 1 install -m644 share/applications/nvidia-settings.desktop $startdir/pkg/usr/share/applications/ || return 1 # fix nvidia .desktop file diff --git a/abs/core-testing/nvidia-96xx/PKGBUILD b/abs/core-testing/nvidia-96xx/PKGBUILD index 3ccbbfe..0041d95 100644 --- a/abs/core-testing/nvidia-96xx/PKGBUILD +++ b/abs/core-testing/nvidia-96xx/PKGBUILD @@ -1,26 +1,23 @@ -# $Id: PKGBUILD 14780 2008-10-10 15:35:36Z thomas $ +# $Id: PKGBUILD 19057 2008-11-14 11:41:03Z pierre $ # Maintainer : Tobias Powalowski <tpowa@archlinux.org> pkgname=nvidia-96xx -pkgver=96.43.07 -_kernver='2.6.26-ARCH' -pkgrel=6 +pkgver=96.43.09 +_kernver='2.6.27-ARCH' +pkgrel=1 pkgdesc="NVIDIA legacy drivers for kernel26, 96xx branch" arch=(i686 x86_64) license=('custom:NVIDIA') [ "$CARCH" = "i686" ] && ARCH=x86 [ "$CARCH" = "x86_64" ] && ARCH=x86_64 url="http://www.nvidia.com/" -depends=('kernel26>=2.6.26' 'kernel26<2.6.28' 'nvidia-96xx-utils') +depends=('kernel26>=2.6.27' 'kernel26<2.6.28' 'nvidia-96xx-utils') conflicts=('nvidia' 'nvidia-71xx' 'nvidia-legacy') install=nvidia-96xx.install license=('custom') -source=(http://us.download.nvidia.com/XFree86/Linux-$ARCH/${pkgver}/NVIDIA-Linux-$ARCH-${pkgver}-pkg0.run - NVIDIA_173.14.12_2.6.27.patch) -md5sums=('8fa2b7c5e4629850d4bd33033ec46166' - 'cd4a68b5a88be6976b90cd0df6bfe89e') -[ "$CARCH" = "x86_64" ] && md5sums=('c03bd2469292d91dde8767af1418c4e1' - 'cd4a68b5a88be6976b90cd0df6bfe89e') +source=(http://download.nvidia.com/XFree86/Linux-$ARCH/${pkgver}/NVIDIA-Linux-$ARCH-${pkgver}-pkg0.run) +md5sums=('758c739114b81ea2cb7da7c22ab80a7e') +[ "$CARCH" = "x86_64" ] && md5sums=('c03bd2469292d91dde8767af1418c4e1') build() { @@ -29,9 +26,6 @@ build() sh NVIDIA-Linux-$ARCH-${pkgver}-pkg0.run --extract-only cd NVIDIA-Linux-$ARCH-${pkgver}-pkg0 - # Any extra patches are applied in here... - patch -Np1 -i ../NVIDIA_173.14.12_2.6.27.patch || return 1 - cd usr/src/nv/ ln -s Makefile.kbuild Makefile make SYSSRC=/lib/modules/$_kernver/build module || return 1 diff --git a/abs/core-testing/nvidia-96xx/nvidia-96xx.install b/abs/core-testing/nvidia-96xx/nvidia-96xx.install index dbbec39..dfded65 100644 --- a/abs/core-testing/nvidia-96xx/nvidia-96xx.install +++ b/abs/core-testing/nvidia-96xx/nvidia-96xx.install @@ -1,6 +1,6 @@ # arg 1: the new package version post_install() { - KERNEL_VERSION='2.6.26-ARCH' + KERNEL_VERSION='2.6.27-ARCH' depmod -v $KERNEL_VERSION > /dev/null 2>&1 } @@ -13,7 +13,7 @@ post_upgrade() { # arg 1: the old package version post_remove() { - KERNEL_VERSION='2.6.26-ARCH' + KERNEL_VERSION='2.6.27-ARCH' depmod -v $KERNEL_VERSION > /dev/null 2>&1 } diff --git a/abs/core-testing/nvidia-utils/PKGBUILD b/abs/core-testing/nvidia-utils/PKGBUILD index d1058c4..384086a 100644 --- a/abs/core-testing/nvidia-utils/PKGBUILD +++ b/abs/core-testing/nvidia-utils/PKGBUILD @@ -1,10 +1,10 @@ -# $Id: PKGBUILD 7914 2008-08-05 08:01:00Z tpowa $ +# $Id: PKGBUILD 19054 2008-11-14 11:36:20Z pierre $ # Maintainer: Thomas Baechler <thomas@archlinux.org> # Contributor: James Rayner <iphitus@gmail.com> pkgname=nvidia-utils -pkgver=173.14.12 -pkgrel=5 +pkgver=177.82 +pkgrel=1 pkgdesc="NVIDIA drivers utilities and libraries." arch=('i686' 'x86_64') [ "$CARCH" = "i686" ] && ARCH=x86 @@ -18,9 +18,9 @@ license=('custom') install=nvidia.install source=(http://us.download.nvidia.com/XFree86/Linux-${ARCH}/${pkgver}/NVIDIA-Linux-${ARCH}-${pkgver}-pkg0.run \ supported-cards.txt) -md5sums=('76b8eba1b14fc273a1a4044705b0aa56' +md5sums=('882f34a662f0175682fdc4a9bec909ba' 'bf8d68d66757096c3ab17653230bf2a8') -[ "$CARCH" = "x86_64" ] && md5sums=('8675e4ca65033b343c8c77b2ce82e71d' +[ "$CARCH" = "x86_64" ] && md5sums=('6a6d04411529c8d7616deee3d68c5346' 'bf8d68d66757096c3ab17653230bf2a8') options=(docs !strip) diff --git a/abs/core-testing/nvidia/PKGBUILD b/abs/core-testing/nvidia/PKGBUILD index 0814d77..b1a5f33 100644 --- a/abs/core-testing/nvidia/PKGBUILD +++ b/abs/core-testing/nvidia/PKGBUILD @@ -1,22 +1,22 @@ -# $Id: PKGBUILD 8443 2008-08-11 05:11:22Z tpowa $ +# $Id: PKGBUILD 19051 2008-11-14 11:33:00Z pierre $ # Maintainer : Thomas Baechler <thomas@archlinux.org> pkgname=nvidia -pkgver=173.14.12 -_kernver='2.6.26-ARCH' -pkgrel=4 +pkgver=177.82 +_kernver='2.6.27-ARCH' +pkgrel=1 pkgdesc="NVIDIA drivers for kernel26." arch=('i686' 'x86_64') [ "$CARCH" = "i686" ] && ARCH=x86 [ "$CARCH" = "x86_64" ] && ARCH=x86_64 url="http://www.nvidia.com/" -depends=('kernel26>=2.6.26.2-1' 'kernel26<2.6.27' 'nvidia-utils') +depends=('kernel26>=2.6.27' 'kernel26<2.6.28' 'nvidia-utils') conflicts=('nvidia-96xx' 'nvidia-71xx' 'nvidia-legacy') license=('custom') install=nvidia.install source=(http://us.download.nvidia.com/XFree86/Linux-$ARCH/${pkgver}/NVIDIA-Linux-$ARCH-${pkgver}-pkg0.run) -md5sums=('76b8eba1b14fc273a1a4044705b0aa56') -[ "$CARCH" = "x86_64" ] && md5sums=('8675e4ca65033b343c8c77b2ce82e71d') +md5sums=('882f34a662f0175682fdc4a9bec909ba') +[ "$CARCH" = "x86_64" ] && md5sums=('6a6d04411529c8d7616deee3d68c5346') build() { diff --git a/abs/core-testing/nvidia/nvidia.install b/abs/core-testing/nvidia/nvidia.install index dbbec39..dfded65 100644 --- a/abs/core-testing/nvidia/nvidia.install +++ b/abs/core-testing/nvidia/nvidia.install @@ -1,6 +1,6 @@ # arg 1: the new package version post_install() { - KERNEL_VERSION='2.6.26-ARCH' + KERNEL_VERSION='2.6.27-ARCH' depmod -v $KERNEL_VERSION > /dev/null 2>&1 } @@ -13,7 +13,7 @@ post_upgrade() { # arg 1: the old package version post_remove() { - KERNEL_VERSION='2.6.26-ARCH' + KERNEL_VERSION='2.6.27-ARCH' depmod -v $KERNEL_VERSION > /dev/null 2>&1 } diff --git a/abs/core-testing/openexr/PKGBUILD b/abs/core-testing/openexr/PKGBUILD index 1c92fbb..c71f10b 100644 --- a/abs/core-testing/openexr/PKGBUILD +++ b/abs/core-testing/openexr/PKGBUILD @@ -1,24 +1,23 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 17480 2008-10-30 16:52:29Z pierre $ # Maintainer: Tobias Powalowski <tpowa@archlinux.org> pkgname=openexr -pkgver=1.4.0a -pkgrel=2 -depends=('mesa' 'libxext' 'libxft' 'fltk') -makedepends=('xproto') +pkgver=1.6.1 +pkgrel=1 +depends=('zlib' 'ilmbase') pkgdesc="openexr library for EXR images" arch=(i686 x86_64) -options=(!libtool) -source=(http://savannah.nongnu.org/download/$pkgname/$pkgname-$pkgver.tar.gz gcc43.patch) +options=('!libtool') +license=('custom') +source=("http://savannah.nongnu.org/download/$pkgname/$pkgname-$pkgver.tar.gz" 'gcc43.patch') url="http://www.openexr.org" +md5sums=('11951f164f9c872b183df75e66de145a' '7c83ee3d69ad688142e7de63cb68e70a') build() { - cd $startdir/src/$pkgname-1.4.0 - # gcc4 fix - #patch -Np1 -i ../openexr-gcc4.patch - patch -Np1 -i ../gcc43.patch + cd $startdir/src/$pkgname-$pkgver + patch -p1 -i $srcdir/gcc43.patch || return 1 ./configure --prefix=/usr make || return 1 make DESTDIR=$startdir/pkg install + install -D -m644 COPYING $pkgdir/usr/share/licenses/$pkgname/COPYING } -md5sums=('d0a4b9a930c766fa51561b05fb204afe' 'd972a8ea4296762ea30a3dc7de2208ac') diff --git a/abs/core-testing/openexr/gcc43.patch b/abs/core-testing/openexr/gcc43.patch index 08ae699..3624872 100644 --- a/abs/core-testing/openexr/gcc43.patch +++ b/abs/core-testing/openexr/gcc43.patch @@ -1,21 +1,22 @@ ---- a/exrenvmap/main.cpp -+++ b/exrenvmap/main.cpp -@@ -46,6 +46,8 @@ +diff -Nura openexr-1.6.1/exrenvmap/main.cpp openexr-1.6.1.new/exrenvmap/main.cpp +--- openexr-1.6.1/exrenvmap/main.cpp 2007-04-25 03:07:51.000000000 +0200 ++++ openexr-1.6.1.new/exrenvmap/main.cpp 2008-10-30 17:18:13.000000000 +0100 +@@ -45,6 +45,7 @@ + #include <iostream> #include <exception> #include <stdlib.h> ++#include <string.h> -+#include <cstring> -+ using namespace Imf; using namespace std; - ---- a/exrmaketiled/main.cpp -+++ b/exrmaketiled/main.cpp -@@ -47,6 +47,8 @@ +diff -Nura openexr-1.6.1/exrmaketiled/main.cpp openexr-1.6.1.new/exrmaketiled/main.cpp +--- openexr-1.6.1/exrmaketiled/main.cpp 2007-04-25 03:08:45.000000000 +0200 ++++ openexr-1.6.1.new/exrmaketiled/main.cpp 2008-10-30 17:18:40.000000000 +0100 +@@ -46,6 +46,7 @@ + #include <exception> #include <string> #include <stdlib.h> ++#include <string.h> -+#include <cstring> -+ using namespace Imf; - using namespace std; + using namespace std; diff --git a/abs/core-testing/openssh/PKGBUILD b/abs/core-testing/openssh/PKGBUILD index 523544f..3313676 100644 --- a/abs/core-testing/openssh/PKGBUILD +++ b/abs/core-testing/openssh/PKGBUILD @@ -1,9 +1,9 @@ -# $Id: PKGBUILD 3735 2008-06-30 20:01:30Z andyrtr $ +# $Id: PKGBUILD 20515 2008-12-05 12:08:00Z allan $ # Maintainer: Aaron Griffin <aaron@archlinux.org> # Contributor: judd <jvinet@zeroflux.org> pkgname=openssh -pkgver=5.0p1 +pkgver=5.1p1 pkgrel=2 #_gsskexver=20080404 pkgdesc='A Secure SHell server/client' @@ -15,10 +15,8 @@ depends=('openssl>=0.9.8g' 'zlib' 'pam' 'tcp_wrappers' 'heimdal>=1.2-1') source=(ftp://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/$pkgname-$pkgver.tar.gz sshd sshd.confd sshd.pam) #http://www.sxw.org.uk/computing/patches/$pkgname-$pkgver-gsskex-$_gsskexver.patch -md5sums=('1f1dfaa775f33dd3328169de9bdc292a' - 'd9ee5e0a0d143689b3d6f11454a2a892' - 'e2cea70ac13af7e63d40eb04415eacd5' - '1c7c2ea8734ec7e3ca58d820634dc73a') +md5sums=('03f2d0c1b5ec60d4ac9997a146d2faec' 'd9ee5e0a0d143689b3d6f11454a2a892' + 'e2cea70ac13af7e63d40eb04415eacd5' '1c7c2ea8734ec7e3ca58d820634dc73a') build() { cd $startdir/src/$pkgname-$pkgver @@ -49,13 +47,17 @@ build() { install -D -m755 contrib/ssh-copy-id $startdir/pkg/usr/bin/ssh-copy-id install -D -m644 contrib/ssh-copy-id.1 $startdir/pkg/usr/man/man1/ssh-copy-id.1 - #adjust our config files + i# sshd_config sed -i \ -e 's|^#ListenAddress 0.0.0.0|ListenAddress 0.0.0.0|g' \ -e 's|^#UsePAM no|UsePAM yes|g' \ -e 's|^#ChallengeResponseAuthentication yes|ChallengeResponseAuthentication no|g' \ $startdir/pkg/etc/ssh/sshd_config - sed -i -e 's|^# Host \*|Host *|g' $startdir/pkg/etc/ssh/ssh_config echo "HashKnownHosts yes" >> $startdir/pkg/etc/ssh/ssh_config echo "StrictHostKeyChecking ask" >> $startdir/pkg/etc/ssh/ssh_config + + #ssh_config + sed -i \ + -e 's|^# Host \*|Host *|g' \ + $startdir/pkg/etc/ssh/ssh_config } diff --git a/abs/core-testing/openssl/PKGBUILD b/abs/core-testing/openssl/PKGBUILD index ec3fe68..c52c9aa 100644 --- a/abs/core-testing/openssl/PKGBUILD +++ b/abs/core-testing/openssl/PKGBUILD @@ -1,28 +1,30 @@ -# $Id: PKGBUILD 9446 2008-08-17 18:04:42Z pierre $ +# $Id: PKGBUILD 21679 2008-12-14 17:14:03Z pierre $ # Maintainer: Pierre Schmitz <pierre@archlinux.de> + pkgname=openssl -pkgver=0.9.8h -pkgrel=13 +pkgver=0.9.8i +pkgrel=4 pkgdesc='The Open Source toolkit for Secure Sockets Layer and Transport Layer Security' arch=('i686' 'x86_64') url='http://www.openssl.org' license=('custom:BSD') -groups=('base') -depends=('glibc') +depends=('zlib' 'perl') +optdepends=('ca-certificates') options=('!makeflags') source=("http://www.openssl.org/source/${pkgname}-${pkgver}.tar.gz" \ - 'http://www.linuxfromscratch.org/patches/blfs/svn/openssl-0.9.8g-fix_manpages-1.patch') -md5sums=('7d3d41dafc76cf2fcb5559963b5783b3' + 'http://www.linuxfromscratch.org/patches/blfs/svn/openssl-0.9.8i-fix_manpages-1.patch') +md5sums=('561e00f18821c74b2b86c8c7786f9d8b' '04a6a88c2ee4badd4f8649792b73eaf3') build() { - cd $startdir/src/$pkgname-$pkgver + cd $srcdir/$pkgname-$pkgver - patch -p1 -i ../openssl-0.9.8g-fix_manpages-1.patch || return 1 - ./config --prefix=/usr --openssldir=/etc/ssl shared + patch -p1 -i $srcdir/openssl-0.9.8i-fix_manpages-1.patch || return 1 + ./config --prefix=/usr --openssldir=/etc/ssl shared zlib-dynamic -Wa,--noexecstack make || return 1 - make INSTALL_PREFIX=$startdir/pkg MANDIR=/usr/share/man install + make test || return 1 + make INSTALL_PREFIX=$pkgdir MANDIR=/usr/share/man install - install -D -m644 LICENSE $startdir/pkg/usr/share/licenses/$pkgname/LICENSE + install -D -m644 LICENSE $pkgdir/usr/share/licenses/$pkgname/LICENSE } diff --git a/abs/core-testing/pam/PKGBUILD b/abs/core-testing/pam/PKGBUILD index 4bdca6a..0750e52 100644 --- a/abs/core-testing/pam/PKGBUILD +++ b/abs/core-testing/pam/PKGBUILD @@ -1,22 +1,23 @@ -# $Id: PKGBUILD 3761 2008-06-30 20:27:30Z andyrtr $ +# $Id: PKGBUILD 17251 2008-10-27 08:14:27Z jgc $ # Maintainer: judd <jvinet@zeroflux.org> pkgname=pam -pkgver=1.0.1 -pkgrel=11 +pkgver=1.0.2 +pkgrel=2 pkgdesc="PAM (Pluggable Authentication Modules) library" arch=(i686 x86_64) license=('GPL2') url="http://www.kernel.org/pub/linux/libs/pam/" groups=('base') depends=('glibc' 'db>=4.7' 'cracklib') +makedepends=('flex') backup=(etc/security/{access.conf,group.conf,limits.conf,namespace.conf,namespace.init,pam_env.conf,time.conf} etc/pam.d/other etc/default/passwd etc/environment) source=(http://www.kernel.org/pub/linux/libs/pam/library/Linux-PAM-$pkgver.tar.bz2 \ - ftp://ftp.suse.com/pub/people/kukuk/pam/pam_unix2/pam_unix2-2.1.tar.bz2 \ + ftp://ftp.suse.com/pub/people/kukuk/pam/pam_unix2/pam_unix2-2.6.tar.bz2 \ other) options=('!libtool' '!emptydirs') -md5sums=('1c75f81bd44c5da93014992820917847' - '08d3bc1940897b5dfcbe2f51dd979ad0' - '6e6c8719e5989d976a14610f340bd33a') +md5sums=('fc5e35645b75befae28c88b711b28ffb' + 'e2788389a6c59224110a45fcff30e02b' + '6e6c8719e5989d976a14610f340bd33a') build() { cd $startdir/src/Linux-PAM-$pkgver @@ -26,7 +27,7 @@ build() { install -D -m644 ../other $startdir/pkg/etc/pam.d/other # build pam_unix2 module # source ftp://ftp.suse.com/pub/people/kukuk/pam/pam_unix2 - cd $startdir/src/pam_unix2-2.1 + cd $startdir/src/pam_unix2-2.6 ./configure make || return 1 make DESTDIR=$startdir/pkg install diff --git a/abs/core-testing/pango/PKGBUILD b/abs/core-testing/pango/PKGBUILD index 5284f02..afa7a8f 100644 --- a/abs/core-testing/pango/PKGBUILD +++ b/abs/core-testing/pango/PKGBUILD @@ -1,24 +1,24 @@ -# $Id: PKGBUILD 4025 2008-07-02 18:01:45Z jgc $ +# $Id: PKGBUILD 22043 2008-12-21 12:14:05Z jgc $ # Maintainer: Jan de Groot <jgc@archlinux.org> pkgname=pango -pkgver=1.20.5 +pkgver=1.22.4 pkgrel=1 pkgdesc="A library for layout and rendering of text" arch=(i686 x86_64) license=('LGPL') -depends=('glib2>=2.16.4' 'cairo>=1.6.4' 'libxft>=2.1.12' 'libthai>=0.1.9') +depends=('glib2>=2.18.3' 'cairo>=1.8.6' 'libxft>=2.1.13' 'libthai>=0.1.9') makedepends=('pkgconfig' 'libxt') options=('!libtool' '!emptydirs') install=pango.install -source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/1.20/${pkgname}-${pkgver}.tar.bz2) -url="http://www.gtk.org/" -md5sums=('052b60a12f6b2eb4f251ab961f2b2b84') +source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/1.22/${pkgname}-${pkgver}.tar.bz2) +url="http://www.pango.org/" +md5sums=('7c3f3748052799746d73c6d3a0cc1205') build() { - cd ${startdir}/src/${pkgname}-${pkgver} + cd "${srcdir}/${pkgname}-${pkgver}" ./configure --prefix=/usr --sysconfdir=/etc \ - --localstatedir=/var --without-qt || return 1 + --localstatedir=/var || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 + make DESTDIR="${pkgdir}" install || return 1 } diff --git a/abs/core-testing/pango/bgo563356.patch b/abs/core-testing/pango/bgo563356.patch new file mode 100644 index 0000000..226fd0c --- /dev/null +++ b/abs/core-testing/pango/bgo563356.patch @@ -0,0 +1,305 @@ +diff -aur old/ChangeLog new/ChangeLog +--- old/ChangeLog 2008-12-06 14:35:33.037390818 +0800 ++++ new/ChangeLog 2008-12-06 14:35:11.475339336 +0800 +@@ -1,3 +1,39 @@ ++2008-12-05 Behdad Esfahbod <behdad@gnome.org> ++ ++ Bug 563356 – The input area of firefox and the blank width after text ++ in gnome-menu was stretched too wide, under pango-1.22.3 ++ ++ * docs/tmpl/fonts.sgml: ++ * pango/pango-impl-utils.h: ++ * pango/pangocairo-atsuifont.c ++ (pango_cairo_atsui_font_create_metrics_for_context): ++ * pango/pangocairo-win32font.c ++ (pango_cairo_win32_font_create_metrics_for_context): ++ * pango/pangofc-font.c (pango_fc_font_create_metrics_for_context): ++ For approximate_char_width calculation take each char's width into ++ account. That is, do a weighted average instead of uniform average. ++ g_unichar_iszerowidth() chars count as 0, g_unichar_iswide() chars ++ count 2, and the rest count as 1. Pretty much wcwidth() behavior. ++ See bug report for rationale. ++ ++2008-11-28 Behdad Esfahbod <behdad@gnome.org> ++ ++ Bug 562574 – Pangocariowin32 is leaking every cairo font it ever ++ creates ++ ++ * pango/pangocairo-atsuifont.c (pango_cairo_atsui_font_finalize): ++ * pango/pangocairo-win32font.c (pango_cairo_win32_font_finalize): ++ Finalize shared pangocairo font resources. Oops! ++ ++ * pango/pangocairo-font.c (_pango_cairo_font_private_finalize): ++ Protect against multiple calls to finalize. This is practiced by the ++ pangocairo-fcfont when a font is shutdown and then finalized. ++ ++2008-11-26 Behdad Esfahbod <behdad@gnome.org> ++ ++ * examples/cairotwisted.c (parametrize_path), (point_on_path): ++ Handle close_path correctly. ++ + 2008-11-23 Behdad Esfahbod <behdad@gnome.org> + + * === Released 1.22.3 === +diff -aur old/docs/tmpl/fonts.sgml new/docs/tmpl/fonts.sgml +--- old/docs/tmpl/fonts.sgml 2008-12-06 14:35:11.450807479 +0800 ++++ new/docs/tmpl/fonts.sgml 2008-12-06 14:34:53.771786070 +0800 +@@ -441,7 +441,10 @@ + @descent: the distance from the baseline to the lowest point of the glyphs of + the font. This is positive in practically all fonts. + @approximate_char_width: approximate average width of the regular glyphs of +- the font. ++ the font. Note that for this calculation, East Asian characters ++ (those passing g_unichar_iswide()) are counted as double-width. ++ This produces a more uniform value for this measure across languages ++ and results in more uniform and more expected UI sizes. + @approximate_digit_width: approximate average width of the glyphs for digits + of the font. + @underline_position: position of the underline. This is normally negative. +diff -aur old/examples/cairotwisted.c new/examples/cairotwisted.c +--- old/examples/cairotwisted.c 2008-12-06 14:35:32.900725834 +0800 ++++ new/examples/cairotwisted.c 2008-12-06 14:35:11.264059243 +0800 +@@ -216,7 +216,7 @@ + parametrize_path (cairo_path_t *path) + { + int i; +- cairo_path_data_t *data, current_point; ++ cairo_path_data_t *data, last_move_to, current_point; + parametrization_t *parametrization; + + parametrization = malloc (path->num_data * sizeof (parametrization[0])); +@@ -226,8 +226,13 @@ + parametrization[i] = 0.0; + switch (data->header.type) { + case CAIRO_PATH_MOVE_TO: ++ last_move_to = data[1]; + current_point = data[1]; + break; ++ case CAIRO_PATH_CLOSE_PATH: ++ /* Make it look like it's a line_to to last_move_to */ ++ data = (&last_move_to) - 1; ++ /* fall through */ + case CAIRO_PATH_LINE_TO: + parametrization[i] = two_points_distance (¤t_point, &data[1]); + current_point = data[1]; +@@ -245,8 +250,6 @@ + + current_point = data[3]; + break; +- case CAIRO_PATH_CLOSE_PATH: +- break; + default: + g_assert_not_reached (); + } +@@ -320,7 +323,7 @@ + { + int i; + double ratio, the_y = *y, the_x = *x, dx, dy; +- cairo_path_data_t *data, current_point; ++ cairo_path_data_t *data, last_move_to, current_point; + cairo_path_t *path = param->path; + parametrization_t *parametrization = param->parametrization; + +@@ -333,6 +336,7 @@ + switch (data->header.type) { + case CAIRO_PATH_MOVE_TO: + current_point = data[1]; ++ last_move_to = data[1]; + break; + case CAIRO_PATH_LINE_TO: + current_point = data[1]; +@@ -352,6 +356,10 @@ + + case CAIRO_PATH_MOVE_TO: + break; ++ case CAIRO_PATH_CLOSE_PATH: ++ /* Make it look like it's a line_to to last_move_to */ ++ data = (&last_move_to) - 1; ++ /* fall through */ + case CAIRO_PATH_LINE_TO: + { + ratio = the_x / parametrization[i]; +@@ -424,8 +432,6 @@ + *y += dx * ratio; + } + break; +- case CAIRO_PATH_CLOSE_PATH: +- break; + default: + g_assert_not_reached (); + } +diff -aur old/pango/pango-impl-utils.h new/pango/pango-impl-utils.h +--- old/pango/pango-impl-utils.h 2008-12-06 14:35:22.291559359 +0800 ++++ new/pango/pango-impl-utils.h 2008-12-06 14:35:03.550729660 +0800 +@@ -23,6 +23,7 @@ + #ifndef __PANGO_IMPL_UTILS_H__ + #define __PANGO_IMPL_UTILS_H__ + ++#include <glib.h> + #include <glib-object.h> + #include <pango/pango.h> + +@@ -92,6 +93,36 @@ + PangoRectangle *ink_rect, + PangoRectangle *logical_rect); + ++ ++/* We define these functions static here because we don't want to add public API ++ * for them (if anything, it belongs to glib, but glib found it trivial enough ++ * not to add API for). At some point metrics calculations will be ++ * centralized and this mess can be minimized. Or so I hope. ++ */ ++ ++static inline G_GNUC_UNUSED int ++pango_unichar_width (gunichar c) ++{ ++ return G_UNLIKELY (g_unichar_iszerowidth (c)) ? 0 : ++ G_UNLIKELY (g_unichar_iswide (c)) ? 2 : 1; ++} ++ ++static G_GNUC_UNUSED glong ++pango_utf8_strwidth (const gchar *p) ++{ ++ glong len = 0; ++ g_return_val_if_fail (p != NULL, 0); ++ ++ while (*p) ++ { ++ len += pango_unichar_width (g_utf8_get_char (p)); ++ p = g_utf8_next_char (p); ++ } ++ ++ return len; ++} ++ ++ + G_END_DECLS + + #endif /* __PANGO_IMPL_UTILS_H__ */ +diff -aur old/pango/pangocairo-atsuifont.c new/pango/pangocairo-atsuifont.c +--- old/pango/pangocairo-atsuifont.c 2008-12-06 14:35:23.464057615 +0800 ++++ new/pango/pangocairo-atsuifont.c 2008-12-06 14:35:04.914061436 +0800 +@@ -24,6 +24,7 @@ + + #import <Cocoa/Cocoa.h> + ++#include "pango-impl-utils.h" + #include "pangoatsui-private.h" + #include "pangocairo.h" + #include "pangocairo-private.h" +@@ -148,7 +149,7 @@ + pango_layout_set_text (layout, sample_str, -1); + pango_layout_get_extents (layout, NULL, &extents); + +- metrics->approximate_char_width = extents.width / g_utf8_strlen (sample_str, -1); ++ metrics->approximate_char_width = extents.width / pango_utf8_strwidth (sample_str); + + pango_layout_set_text (layout, "0123456789", -1); + metrics->approximate_digit_width = max_glyph_width (layout); +@@ -174,6 +175,10 @@ + static void + pango_cairo_atsui_font_finalize (GObject *object) + { ++ PangoCairoATSUIFont *cafont = (PangoCairoATSUIFont *) object; ++ ++ _pango_cairo_font_private_finalize (&cafont->cf_priv); ++ + G_OBJECT_CLASS (pango_cairo_atsui_font_parent_class)->finalize (object); + } + +@@ -191,7 +196,7 @@ + } + + static void +-pango_cairo_atsui_font_init (PangoCairoATSUIFont *cafont) ++pango_cairo_atsui_font_init (PangoCairoATSUIFont *cafont G_GNUC_UNUSED) + { + } + +diff -aur old/pango/pangocairo-fcfont.c new/pango/pangocairo-fcfont.c +--- old/pango/pangocairo-fcfont.c 2008-12-06 14:35:22.840724772 +0800 ++++ new/pango/pangocairo-fcfont.c 2008-12-06 14:35:04.294060844 +0800 +@@ -88,7 +88,7 @@ + static void + pango_cairo_fc_font_finalize (GObject *object) + { +- PangoCairoFcFont *cffont = (PangoCairoFcFont *) (object); ++ PangoCairoFcFont *cffont = (PangoCairoFcFont *) object; + + _pango_cairo_font_private_finalize (&cffont->cf_priv); + +@@ -162,7 +162,7 @@ + } + + static void +-pango_cairo_fc_font_init (PangoCairoFcFont *cffont) ++pango_cairo_fc_font_init (PangoCairoFcFont *cffont G_GNUC_UNUSED) + { + } + +diff -aur old/pango/pangocairo-font.c new/pango/pangocairo-font.c +--- old/pango/pangocairo-font.c 2008-12-06 14:35:23.387391067 +0800 ++++ new/pango/pangocairo-font.c 2008-12-06 14:35:04.840728398 +0800 +@@ -560,14 +560,18 @@ + + if (cf_priv->scaled_font) + cairo_scaled_font_destroy (cf_priv->scaled_font); ++ cf_priv->scaled_font = NULL; + + _pango_cairo_font_hex_box_info_destroy (cf_priv->hbi); ++ cf_priv->hbi = NULL; + + if (cf_priv->glyph_extents_cache) + g_free (cf_priv->glyph_extents_cache); ++ cf_priv->glyph_extents_cache = NULL; + + g_slist_foreach (cf_priv->metrics_by_lang, (GFunc)free_metrics_info, NULL); + g_slist_free (cf_priv->metrics_by_lang); ++ cf_priv->metrics_by_lang = NULL; + } + + gboolean +diff -aur old/pango/pangocairo-win32font.c new/pango/pangocairo-win32font.c +--- old/pango/pangocairo-win32font.c 2008-12-06 14:35:22.500726273 +0800 ++++ new/pango/pangocairo-win32font.c 2008-12-06 14:35:03.990726207 +0800 +@@ -150,7 +150,7 @@ + pango_layout_set_text (layout, sample_str, -1); + pango_layout_get_extents (layout, NULL, &extents); + +- metrics->approximate_char_width = extents.width / g_utf8_strlen (sample_str, -1); ++ metrics->approximate_char_width = extents.width / pango_utf8_strwidth (sample_str); + + pango_layout_set_text (layout, "0123456789", -1); + metrics->approximate_digit_width = max_glyph_width (layout); +@@ -164,6 +164,10 @@ + static void + pango_cairo_win32_font_finalize (GObject *object) + { ++ PangoCairoWin32Font *cwfont = (PangoCairoWin32Font *) object; ++ ++ _pango_cairo_font_private_finalize (&cwfont->cf_priv); ++ + G_OBJECT_CLASS (pango_cairo_win32_font_parent_class)->finalize (object); + } + +@@ -225,7 +229,7 @@ + } + + static void +-pango_cairo_win32_font_init (PangoCairoWin32Font *cwfont) ++pango_cairo_win32_font_init (PangoCairoWin32Font *cwfont G_GNUC_UNUSED) + { + } + +diff -aur old/pango/pangofc-font.c new/pango/pangofc-font.c +--- old/pango/pangofc-font.c 2008-12-06 14:35:23.117390557 +0800 ++++ new/pango/pangofc-font.c 2008-12-06 14:35:04.564059609 +0800 +@@ -496,7 +496,7 @@ + pango_layout_get_extents (layout, NULL, &extents); + + metrics->approximate_char_width = +- extents.width / g_utf8_strlen (sample_str, -1); ++ extents.width / pango_utf8_strwidth (sample_str); + + pango_layout_set_text (layout, "0123456789", -1); + metrics->approximate_digit_width = max_glyph_width (layout); diff --git a/abs/core-testing/pil/PKGBUILD b/abs/core-testing/pil/PKGBUILD index 59e9b83..f7149de 100644 --- a/abs/core-testing/pil/PKGBUILD +++ b/abs/core-testing/pil/PKGBUILD @@ -1,10 +1,12 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ -# Maintainer: simo <simo@archlinux.org> +# $Id: PKGBUILD 16703 2008-10-22 02:31:25Z allan $ +# Maintainer: Allan McRae <allan@archlinux.org> +# Contributor: simo <simo@archlinux.org> + pkgname=pil pkgver=1.1.6 -pkgrel=4 +pkgrel=5 pkgdesc="Python imaging library" -arch=(i686 x86_64) +arch=('i686' 'x86_64') url="http://www.pythonware.com/products/pil/index.htm" license=('custom:"pil"') depends=('python' 'libjpeg' 'freetype2') @@ -13,14 +15,14 @@ source=(http://effbot.org/downloads/Imaging-$pkgver.tar.gz) md5sums=('3a9b5c20ca52f0a9900512d2c7347622') build() { - cd $startdir/src/Imaging-$pkgver + cd $srcdir/Imaging-$pkgver python setup.py build_ext - python setup.py install --root=$startdir/pkg - mkdir -p $startdir/pkg/usr/include/python2.5/ - cp libImaging/*.h $startdir/pkg/usr/include/python2.5/ + python setup.py install --root=$pkgdir + mkdir -p $pkgdir/usr/include/python2.6/ + cp libImaging/*.h $pkgdir/usr/include/python2.6/ # Install license - install -m644 -D $startdir/src/Imaging-$pkgver/README \ - $startdir/pkg/usr/share/licenses/pil/README + install -m644 -D $srcdir/Imaging-$pkgver/README \ + $pkgdir/usr/share/licenses/pil/README } diff --git a/abs/core-testing/plextor-convertX-driver/PKGBUILD b/abs/core-testing/plextor-convertX-driver/PKGBUILD index 102d539..fb503fb 100755 --- a/abs/core-testing/plextor-convertX-driver/PKGBUILD +++ b/abs/core-testing/plextor-convertX-driver/PKGBUILD @@ -2,13 +2,13 @@ pkgname=plextor-convertX-driver pkgver=0.9.8 -pkgrel=2 -_kernver=2.6.26-ARCH +pkgrel=3 +_kernver=2.6.27-ARCH pkgdesc="Drivers for Plextor tuners" arch=(i686 x86_64) url="http://nikosapi.org/software/WIS_Go7007" install="convertX.install" -source=("http://nikosapi.org/software/WIS_Go7007/wis-go7007-linux-0.9.8-2.tar.bz2" 'wis-go7007-2.6.26-nopage.diff') +source=("http://nikosapi.org/software/WIS_Go7007/wis-go7007-linux-0.9.8-2.tar.bz2" 'wis-go7007-2.6.26-nopage.diff' 'wis-go7007-linux-0.9.8-2-2.6.27.patch') depends=('udev>=070' 'fxload') makedepends=('gcc') @@ -17,6 +17,7 @@ build() { # SET UP cd $startdir/src/wis-go7007-linux-0.9.8-2 || return 1 patch -Np1 -i ../wis-go7007-2.6.26-nopage.diff || return 1 + patch -Np1 -i ../wis-go7007-linux-0.9.8-2-2.6.27.patch || return 1 # build make clean || return 1 make || return 1 diff --git a/abs/core-testing/plextor-convertX-driver/wis-go7007-linux-0.9.8-2-2.6.27.patch b/abs/core-testing/plextor-convertX-driver/wis-go7007-linux-0.9.8-2-2.6.27.patch new file mode 100644 index 0000000..6275d8c --- /dev/null +++ b/abs/core-testing/plextor-convertX-driver/wis-go7007-linux-0.9.8-2-2.6.27.patch @@ -0,0 +1,83 @@ +diff -Naur wis-go7007-linux-0.9.8-2/kernel/go7007-driver.c wis-go7007-linux-0.9.8-2-kernel-2.6.27/kernel/go7007-driver.c +--- wis-go7007-linux-0.9.8-2/kernel/go7007-driver.c 2007-03-21 12:51:54.000000000 -0500 ++++ wis-go7007-linux-0.9.8-2-kernel-2.6.27/kernel/go7007-driver.c 2008-12-30 21:04:32.545534308 -0600 +@@ -32,7 +32,7 @@ + #include <linux/i2c.h> + #include <linux/firmware.h> + #include <asm/uaccess.h> +-#include <asm/semaphore.h> ++#include <linux/semaphore.h> + #include <asm/system.h> + #include <linux/videodev.h> + #include <media/tuner.h> +diff -Naur wis-go7007-linux-0.9.8-2/kernel/go7007-i2c.c wis-go7007-linux-0.9.8-2-kernel-2.6.27/kernel/go7007-i2c.c +--- wis-go7007-linux-0.9.8-2/kernel/go7007-i2c.c 2008-04-06 09:28:35.000000000 -0500 ++++ wis-go7007-linux-0.9.8-2-kernel-2.6.27/kernel/go7007-i2c.c 2008-12-30 21:04:32.569550193 -0600 +@@ -29,7 +29,7 @@ + #include <linux/device.h> + #include <linux/i2c.h> + #include <asm/uaccess.h> +-#include <asm/semaphore.h> ++#include <linux/semaphore.h> + #include <asm/system.h> + + #include "go7007-priv.h" +diff -Naur wis-go7007-linux-0.9.8-2/kernel/go7007-v4l2.c wis-go7007-linux-0.9.8-2-kernel-2.6.27/kernel/go7007-v4l2.c +--- wis-go7007-linux-0.9.8-2/kernel/go7007-v4l2.c 2008-12-30 21:16:17.221534155 -0600 ++++ wis-go7007-linux-0.9.8-2-kernel-2.6.27/kernel/go7007-v4l2.c 2008-12-30 21:10:24.252534209 -0600 +@@ -35,10 +35,12 @@ + #include <media/audiochip.h> + #else + #include <media/v4l2-common.h> ++#include <media/v4l2-chip-ident.h> ++#include <media/v4l2-ioctl.h> + #endif + #include <linux/i2c.h> + #include <asm/uaccess.h> +-#include <asm/semaphore.h> ++#include <linux/semaphore.h> + #include <asm/system.h> + + #include "../include/go7007.h" +@@ -1478,7 +1480,7 @@ + + static struct video_device go7007_template = { + .name = "go7007", +- .type = VID_TYPE_CAPTURE, ++ .vfl_type = VID_TYPE_CAPTURE, + .fops = &go7007_fops, + .minor = -1, + .release = go7007_vfl_release, +@@ -1492,7 +1494,7 @@ + if (go->video_dev == NULL) + return -ENOMEM; + memcpy(go->video_dev, &go7007_template, sizeof(go7007_template)); +- go->video_dev->dev = go->dev; ++ go->video_dev->parent = go->dev; + rv = video_register_device(go->video_dev, VFL_TYPE_GRABBER, -1); + if (rv < 0) + { +diff -Naur wis-go7007-linux-0.9.8-2/kernel/snd-go7007.c wis-go7007-linux-0.9.8-2-kernel-2.6.27/kernel/snd-go7007.c +--- wis-go7007-linux-0.9.8-2/kernel/snd-go7007.c 2007-09-06 22:45:25.000000000 -0500 ++++ wis-go7007-linux-0.9.8-2-kernel-2.6.27/kernel/snd-go7007.c 2008-12-30 21:04:33.077579435 -0600 +@@ -34,7 +34,7 @@ + #include <linux/mm.h> + #include <linux/i2c.h> + #include <asm/uaccess.h> +-#include <asm/semaphore.h> ++#include <linux/semaphore.h> + #include <asm/system.h> + #include <sound/driver.h> + #include <sound/core.h> +diff -Naur wis-go7007-linux-0.9.8-2/kernel/wis-sony-tuner.c wis-go7007-linux-0.9.8-2-kernel-2.6.27/kernel/wis-sony-tuner.c +--- wis-go7007-linux-0.9.8-2/kernel/wis-sony-tuner.c 2006-04-01 16:37:18.000000000 -0600 ++++ wis-go7007-linux-0.9.8-2-kernel-2.6.27/kernel/wis-sony-tuner.c 2008-12-30 21:10:36.100534544 -0600 +@@ -23,6 +23,8 @@ + #include <media/tuner.h> + #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16) + #include <media/v4l2-common.h> ++#include <media/v4l2-chip-ident.h> ++#include <media/v4l2-ioctl.h> + #endif + + #include "wis-i2c.h" diff --git a/abs/core-testing/ppp/PKGBUILD b/abs/core-testing/ppp/PKGBUILD index 24f40a7..8240ad7 100644 --- a/abs/core-testing/ppp/PKGBUILD +++ b/abs/core-testing/ppp/PKGBUILD @@ -1,14 +1,14 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 20217 2008-12-01 18:12:37Z thomas $ # Maintainer: judd <jvinet@zeroflux.org> pkgname=ppp pkgver=2.4.4 -pkgrel=15 +pkgrel=7 pkgdesc="A daemon which implements the PPP protocol for dial-up networking" arch=(i686 x86_64) url="http://www.samba.org/ppp/" license=('custom:GPL/BSD') groups=('base') -depends=('glibc' 'libpcap>=0.9.8') +depends=('glibc' 'libpcap>=1.0.0') backup=(etc/ppp/{chap-secrets,pap-secrets,options,ip-up,ip-down}) source=(ftp://ftp.samba.org/pub/ppp/ppp-$pkgver.tar.gz \ options pon poff ppp plog pon.1 ip-up ip-down) @@ -42,6 +42,6 @@ build() { install -D -m600 etc.ppp/pap-secrets $startdir/pkg/etc/ppp/pap-secrets install -D -m600 etc.ppp/chap-secrets $startdir/pkg/etc/ppp/chap-secrets install -D -m755 $startdir/src/ppp $startdir/pkg/etc/rc.d/ppp - install -D -m644 $startdir/src/pon.1 $startdir/pkg/usr/man/man1/pon.1 + install -D -m644 $startdir/src/pon.1 $startdir/pkg/usr/share/man/man1/pon.1 mkdir -p $startdir/pkg/etc/ppp/peers } diff --git a/abs/core-testing/pygobject/PKGBUILD b/abs/core-testing/pygobject/PKGBUILD index 159de7a..e6e4548 100644 --- a/abs/core-testing/pygobject/PKGBUILD +++ b/abs/core-testing/pygobject/PKGBUILD @@ -1,21 +1,21 @@ -# $Id: PKGBUILD 2539 2008-06-06 13:24:21Z jgc $ +# $Id: PKGBUILD 16706 2008-10-22 02:32:50Z allan $ # Maintainer: Jan de Groot <jgc@archlinux.org> pkgname=pygobject -pkgver=2.14.2 -pkgrel=1 +pkgver=2.15.4 +pkgrel=2 pkgdesc="Python bindings for GObject" arch=(i686 x86_64) license=('LGPL') -depends=('python>=2.5.1-5' 'glib2>=2.16.3') -source=(http://ftp.gnome.org/pub/gnome/sources/pygobject/2.14/${pkgname}-${pkgver}.tar.bz2) +depends=('python>=2.5.2-5' 'glib2>=2.18.1') +source=(http://ftp.gnome.org/pub/gnome/sources/pygobject/2.15/${pkgname}-${pkgver}.tar.bz2) options=('!libtool') url="http://www.pygtk.org/" -md5sums=('0e9e9300e81847f4f7266f49d3bebbaf') +md5sums=('df59affe5b8fd7148506c3473d479868') build() { - cd ${startdir}/src/${pkgname}-${pkgver} + cd "${srcdir}/${pkgname}-${pkgver}" ./configure --prefix=/usr || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 + make DESTDIR="${pkgdir}" install || return 1 } diff --git a/abs/core-testing/pygtk/PKGBUILD b/abs/core-testing/pygtk/PKGBUILD index 71bec7d..434af1c 100644 --- a/abs/core-testing/pygtk/PKGBUILD +++ b/abs/core-testing/pygtk/PKGBUILD @@ -1,24 +1,23 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 16726 2008-10-22 02:50:46Z allan $ # Maintainer: Jan de Groot <jgc@archlinux.org> # Contributor: Sarah Hay <sarahhay@mb.sympatico.ca> pkgname=pygtk -pkgver=2.12.1 -pkgrel=1 +pkgver=2.13.0 +pkgrel=2 pkgdesc="Python bindings for the GTK widget set" arch=(i686 x86_64) license=('LGPL') -depends=('libglade>=2.6.2' 'pycairo>=1.4.0' 'pygobject>=2.14.1' 'python-numeric>=24.2-2' 'gtk2>=2.12.0') +depends=('libglade>=2.6.3' 'pycairo>=1.6.4' 'pygobject>=2.15.4' 'python-numeric>=24.2-2') options=('!libtool') url="http://www.pygtk.org/" -source=(http://ftp.gnome.org/pub/gnome/sources/pygtk/2.12/${pkgname}-${pkgver}.tar.bz2) -md5sums=('a816346d750d61e3fa67a200e4292694') +source=(http://ftp.gnome.org/pub/gnome/sources/pygtk/2.13/${pkgname}-${pkgver}.tar.bz2) +md5sums=('e1513921bfd3790b456899c483fceaea') build() { - cd ${startdir}/src/${pkgname}-${pkgver} - sed -i -e 's/SUBDIRS = codegen . $(GTK_SUBDIR) examples tests docs/SUBDIRS = codegen . $(GTK_SUBDIR) examples tests/' Makefile.in - ./configure --prefix=/usr + cd "${srcdir}/${pkgname}-${pkgver}" + ./configure --prefix=/usr || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install - install -m644 gtk/gtk-extrafuncs.defs ${startdir}/pkg/usr/share/pygtk/2.0/defs/ + make DESTDIR="${pkgdir}" install || return 1 + install -m644 gtk/gtk-extrafuncs.defs "${pkgdir}/usr/share/pygtk/2.0/defs/" || return 1 } diff --git a/abs/core-testing/python-numeric/PKGBUILD b/abs/core-testing/python-numeric/PKGBUILD index 9ec5dec..67a8ab5 100644 --- a/abs/core-testing/python-numeric/PKGBUILD +++ b/abs/core-testing/python-numeric/PKGBUILD @@ -1,14 +1,14 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 16713 2008-10-22 02:37:43Z allan $ # Maintainer: arjan <arjan@archlinux.org> # Contributor orelien <aurelien.foret@wanadoo.fr> pkgname=python-numeric pkgver=24.2 -pkgrel=2 +pkgrel=3 pkgdesc="Numerical Python adds a fast array facility to the Python language." arch=(i686 x86_64) depends=('python>=2.5') -source=(http://heanet.dl.sourceforge.net/sourceforge/numpy/Numeric-${pkgver}.tar.gz) +source=(http://downloads.sourceforge.net/sourceforge/numpy/Numeric-${pkgver}.tar.gz) replaces=('numeric') url="http://numeric.scipy.org/" md5sums=(2ae672656e06716a149acb048cca3093) diff --git a/abs/core-testing/python/ChangeLog b/abs/core-testing/python/ChangeLog new file mode 100644 index 0000000..2d5c46a --- /dev/null +++ b/abs/core-testing/python/ChangeLog @@ -0,0 +1,9 @@ +2008-12-07 Allan McRae <allan@archlinux.org> + * python 2.6.1-1 + * upstream update + * fix gdbm related build error + * fix modulator/pynche launchers + +2008-10-27 Allan McRae <allan@archlinux.org> + * python 2.6-2 + * patched to use internal expat
\ No newline at end of file diff --git a/abs/core-testing/python/PKGBUILD b/abs/core-testing/python/PKGBUILD index bc812de..16ebac5 100644 --- a/abs/core-testing/python/PKGBUILD +++ b/abs/core-testing/python/PKGBUILD @@ -1,57 +1,58 @@ -# $Id: PKGBUILD 4689 2008-07-08 21:50:56Z andyrtr $ +# $Id: PKGBUILD 20912 2008-12-07 08:52:24Z allan $ # Maintainer: Allan McRae <allan@archlinux.org> # Contributer: Jason Chu <jason@archlinux.org> pkgname=python -pkgver=2.5.2 -pkgrel=5 -_pybasever=2.5 +pkgver=2.6.1 +pkgrel=1 +_pybasever=2.6 pkgdesc="A high-level scripting language" arch=('i686' 'x86_64') license=('custom') url="http://www.python.org" -depends=('db4.5' 'bzip2' 'gdbm' 'openssl>=0.9.8d' 'zlib') +depends=('db' 'bzip2' 'gdbm' 'openssl>=0.9.8d' 'zlib') makedepends=('tk>=8.5.0' 'sqlite3') -provides=('python-elementree' 'python-ctypes') -replaces=('python-elementree' 'python-ctypes') -install=python.install +optdepends=('tk: for IDLE, pynche and modulator') +provides=('python-elementtree' 'python-ctypes') +replaces=('python-elementtree' 'python-ctypes') source=(http://www.python.org/ftp/python/${pkgver}/Python-${pkgver}.tar.bz2 + python-2.6-internal-expat.patch + python-2.6-gdbm.patch modulator-launcher - pynche-launcher - Python-2.4.4-gdbm-1.patch - python-2.5.CVE-2007-4965-int-overflow.patch - python2.6-set_wakeup_fd4.patch - Python-2.5.2-idlelib.patch) -md5sums=('afb5451049eda91fbde10bd5a4b7fadc' - 'faa0d4b947bfe67fc8684b5c464f46f2' - '60a44af1d8af276274e20c564c0f3d8b' - '2b61e06365e9fb5f3af22d946efa8be6' - '491416c1b337fc61b6cdf5981d895a7d' - 'ec56710959deb01b5fa35829cafec6a3' - 'e6441e0b013ac64795221154e0495e10') + pynche-launcher) +md5sums=('e81c2f0953aa60f8062c05a4673f2be0' + '993800dbcc0c4f199c1ceee998a06e71' + '13fab4bb2cacbc433e62d7191a17f71e' + 'b4a531570415280dc406c8d5c1fa8d83' + '9f731b9033db285132a3524fb36409e7') + build() { - cd ${startdir}/src/Python-${pkgver} - patch -Np1 -i ${srcdir}/Python-2.4.4-gdbm-1.patch || return 1 - # fix http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2007-4965 - patch -Np1 -i ${srcdir}/python-2.5.CVE-2007-4965-int-overflow.patch || return 1 - - patch -Np2 -i ${srcdir}/python2.6-set_wakeup_fd4.patch || return 1 - patch -Np0 -i ${srcdir}/Python-2.5.2-idlelib.patch + cd ${srcdir}/Python-${pkgver} + + patch -Np0 -i ${srcdir}/python-2.6-internal-expat.patch + patch -Np1 -i ${srcdir}/python-2.6-gdbm.patch ./configure --prefix=/usr --enable-shared --with-threads --enable-unicode + + # temporary backwards compatibility stuff... + sed -i 's#SITEPATH=#SITEPATH=:/usr/lib/python2.5/site-packages#' Makefile + make || return 1 make DESTDIR=${pkgdir} install rm ${pkgdir}/usr/bin/python ln -sf python${_pybasever} ${pkgdir}/usr/bin/python + ln -sf python${_pybasever} ${pkgdir}/usr/bin/python2 # Install the tools #modulator + sed -i "s#%%PYBASEVER%%#${_pybasever}#" ${srcdir}/modulator-launcher install -m755 ${srcdir}/modulator-launcher ${pkgdir}/usr/bin/modulator cp -r Tools/modulator ${pkgdir}/usr/lib/python${_pybasever}/site-packages/ #pynche + sed -i "s#%%PYBASEVER%%#${_pybasever}#" ${srcdir}/pynche-launcher install -m755 ${srcdir}/pynche-launcher ${pkgdir}/usr/bin/pynche rm -f Tools/pynche/*.pyw cp -r Tools/pynche ${pkgdir}/usr/lib/python${_pybasever}/site-packages/ @@ -65,5 +66,5 @@ build() { install Tools/scripts/*py ${pkgdir}/usr/lib/python${_pybasever}/Tools/scripts/ # license - install -D -m644 LICENSE ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE + install -Dm644 LICENSE ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE } diff --git a/abs/core-testing/python/modulator-launcher b/abs/core-testing/python/modulator-launcher index 732f05c..ba46e93 100644 --- a/abs/core-testing/python/modulator-launcher +++ b/abs/core-testing/python/modulator-launcher @@ -1,2 +1,2 @@ #!/bin/bash -exec /usr/lib/python2.5/site-packages/modulator/modulator.py +exec /usr/lib/python%%PYBASEVER%%/site-packages/modulator/modulator.py diff --git a/abs/core-testing/python/pynche-launcher b/abs/core-testing/python/pynche-launcher index ab3a6d8..a4338a7 100644 --- a/abs/core-testing/python/pynche-launcher +++ b/abs/core-testing/python/pynche-launcher @@ -1,3 +1,3 @@ #!/bin/bash -/usr/lib/python2.5/site-packages/pynche/pynche +/usr/lib/python%%PYBASEVER%%/site-packages/pynche/pynche diff --git a/abs/core-testing/python/python-2.6-gdbm.patch b/abs/core-testing/python/python-2.6-gdbm.patch new file mode 100644 index 0000000..0f223f6 --- /dev/null +++ b/abs/core-testing/python/python-2.6-gdbm.patch @@ -0,0 +1,12 @@ +diff -Naur Python-2.6-old/setup.py Python-2.6/setup.py +--- Python-2.6-old/setup.py 2008-09-30 10:15:45.000000000 +1000 ++++ Python-2.6/setup.py 2008-12-07 16:04:01.000000000 +1000 +@@ -1013,7 +1013,7 @@ + if self.compiler.find_library_file(lib_dirs, 'ndbm'): + ndbm_libs = ['ndbm'] + else: +- ndbm_libs = [] ++ ndbm_libs = ['gdbm', 'gdbm_compat'] + exts.append( Extension('dbm', ['dbmmodule.c'], + define_macros=[('HAVE_NDBM_H',None)], + libraries = ndbm_libs ) ) diff --git a/abs/core-testing/python/python-2.6-internal-expat.patch b/abs/core-testing/python/python-2.6-internal-expat.patch new file mode 100644 index 0000000..86252ab --- /dev/null +++ b/abs/core-testing/python/python-2.6-internal-expat.patch @@ -0,0 +1,33 @@ +--- setup.py 2008-04-22 12:12:24.613554757 +0300 ++++ setup.py 2008-04-22 12:13:09.276544063 +0300 +@@ -1035,18 +1035,15 @@ + # + # More information on Expat can be found at www.libexpat.org. + # +- expatinc = os.path.join(os.getcwd(), srcdir, 'Modules', 'expat') +- define_macros = [ +- ('HAVE_EXPAT_CONFIG_H', '1'), +- ] ++ # Use system expat ++ expatinc = '/usr/include' ++ define_macros = [] + + exts.append(Extension('pyexpat', + define_macros = define_macros, + include_dirs = [expatinc], ++ libraries = ['expat'], + sources = ['pyexpat.c', +- 'expat/xmlparse.c', +- 'expat/xmlrole.c', +- 'expat/xmltok.c', + ], + )) + +@@ -1058,6 +1055,7 @@ + exts.append(Extension('_elementtree', + define_macros = define_macros, + include_dirs = [expatinc], ++ libraries = ['expat'], + sources = ['_elementtree.c'], + )) + diff --git a/abs/core-testing/samba/PKGBUILD b/abs/core-testing/samba/PKGBUILD index 599025e..67151b9 100644 --- a/abs/core-testing/samba/PKGBUILD +++ b/abs/core-testing/samba/PKGBUILD @@ -1,78 +1,85 @@ -# $Id: PKGBUILD 14140 2008-10-04 09:43:47Z tpowa $ +# $Id: PKGBUILD 22200 2008-12-22 22:24:26Z tpowa $ # Maintainer: judd <jvinet@zeroflux.org> pkgname=samba -pkgver=3.2.4 +pkgver=3.2.6 # We use the 'A' to fake out pacman's version comparators. Samba chooses # to append 'a','b',etc to their subsequent releases, which pamcan # misconstrues as alpha, beta, etc. Bad samba! -_realver=3.2.4 -pkgrel=4 +_realver=3.2.6 +pkgrel=2 pkgdesc="Tools to access a server's filespace and printers via SMB" arch=(i686 x86_64) url="http://www.samba.org" license=('GPL3') backup=(etc/logrotate.d/samba etc/pam.d/samba etc/samba/smb.conf etc/xinetd.d/swat etc/conf.d/samba) -depends=('db>=4.7' 'popt' 'libcups' 'acl' 'libldap' 'smbclient=3.2.4' 'libcap' 'heimdal>=1.2-1' 'pam' 'gnutls>=2.4.1' 'tdb=3.2.4') +depends=('db>=4.7' 'popt' 'libcups' 'acl' 'libldap' 'smbclient=3.2.6' 'libcap' 'heimdal>=1.2-1' 'pam' 'fam' 'gnutls>=2.4.1' 'tdb=3.2.6') options=(!makeflags) source=(http://us1.samba.org/samba/ftp/stable/${pkgname}-${_realver}.tar.gz \ no-clients.patch samba samba.logrotate swat.xinetd samba.pam samba.conf.d) build() { - cd ${startdir}/src/${pkgname}-${_realver}/source - patch -Np2 -i ${startdir}/src/no-clients.patch || return 1 + cd ${srcdir}/${pkgname}-${_realver}/source + patch -Np2 -i ${srcdir}/no-clients.patch || return 1 ./configure --prefix=/usr --with-configdir=/etc/samba \ --with-lockdir=/var/cache/samba \ --with-piddir=/var/run/samba \ --with-fhs --with-pam --with-ads --with-acl-support \ --without-cifsmount --without-libsmbclient \ - --disable-fam + --with-syslog --with-pam_smbpass \ --localstatedir=/var --disable-dnssd --libdir=/usr/lib/samba make || return 1 - mkdir -p $startdir/pkg/var/log/samba - mkdir -p $startdir/pkg/etc/samba/private - chmod 700 $startdir/pkg/etc/samba/private + mkdir -p ${pkgdir}/var/log/samba + mkdir -p ${pkgdir}/etc/samba/private + chmod 700 ${pkgdir}/etc/samba/private make DESTDIR=$startdir/pkg install - chmod 644 $startdir/pkg/usr/include/*.h - rm -rf $startdir/pkg/usr/var + chmod 644 ${pkgdir}/usr/include/*.h + rm -rf ${pkgdir}/usr/var (cd script; cp installbin.sh i; cat i | sed 's/\/sbin\///' > installbin.sh) - install -D -m755 ../../samba $startdir/pkg/etc/rc.d/samba - install -D -m644 ../../samba.conf.d $startdir/pkg/etc/conf.d/samba - mkdir -p $startdir/pkg/etc/samba + install -D -m755 ../../samba ${pkgdir}/etc/rc.d/samba + install -D -m644 ../../samba.conf.d ${pkgdir}/etc/conf.d/samba + mkdir -p ${pkgdir}/etc/samba cat ../examples/smb.conf.default | \ - sed 's|log file = .*$|log file = /var/log/samba/log.%m|g' >$startdir/pkg/etc/samba/smb.conf.default - install -D -m644 ../../samba.logrotate $startdir/pkg/etc/logrotate.d/samba - install -D -m644 ../../swat.xinetd $startdir/pkg/etc/xinetd.d/swat - install -D -m644 ../../samba.pam $startdir/pkg/etc/pam.d/samba + sed 's|log file = .*$|log file = /var/log/samba/log.%m|g' >${pkgdir}/etc/samba/smb.conf.default + install -D -m644 ../../samba.logrotate ${pkgdir}/etc/logrotate.d/samba + install -D -m644 ../../swat.xinetd ${pkgdir}/etc/xinetd.d/swat + install -D -m644 ../../samba.pam ${pkgdir}/etc/pam.d/samba # symlink libs - for i in ${startdir}/pkg/usr/lib/samba/libsmbshare*; do - ln -sf samba/$(basename $i) ${startdir}/pkg/usr/lib/$(basename $i) + for i in ${pkgdir}/usr/lib/samba/libsmbshare*; do + ln -sf samba/$(basename $i) ${pkgdir}/usr/lib/$(basename $i) done # spool directory - install -d -m1777 $startdir/pkg/var/spool/samba - sed -i 's|/usr/spool/samba|/var/spool/samba|g' $startdir/pkg/etc/samba/smb.conf.default + install -d -m1777 ${pkgdir}/var/spool/samba + sed -i 's|/usr/spool/samba|/var/spool/samba|g' ${pkgdir}/etc/samba/smb.conf.default # fix logrotate - sed -i -e 's|log.%m|%m.log|g' $startdir/pkg/etc/samba/smb.conf.default + sed -i -e 's|log.%m|%m.log|g' ${pkgdir}/etc/samba/smb.conf.default # nsswitch libraries - install -D -m755 nsswitch/libnss_wins.so $startdir/pkg/lib/libnss_wins.so - ln -s libnss_wins.so $startdir/pkg/lib/libnss_wins.so.2 - install -D -m755 nsswitch/libnss_winbind.so $startdir/pkg/lib/libnss_winbind.so - install -D -m755 bin/pam_winbind.so $startdir/pkg/lib/security/pam_winbind.so + install -D -m755 nsswitch/libnss_wins.so ${pkgdir}/lib/libnss_wins.so + ln -s libnss_wins.so ${pkgdir}/lib/libnss_wins.so.2 + install -D -m755 nsswitch/libnss_winbind.so ${pkgdir}/lib/libnss_winbind.so + install -D -m755 bin/pam_winbind.so ${pkgdir}/lib/security/pam_winbind.so # remove conflict files of smbclient and tdb for man in libsmbclient smbspool \ umount.cifs mount.cifs net; do - rm -f ${startdir}/pkg/usr/share/man/man8/${man}.8 + rm -f ${pkgdir}/usr/share/man/man8/${man}.8 done for i in libnetapi* libtdb* libtalloc* libwbclient*; do - rm -f ${startdir}/pkg/usr/lib/samba/$i + rm -f ${pkgdir}/usr/lib/samba/$i done - rm -f ${startdir}/pkg/usr/bin/tdbbackup - rm -f ${startdir}/pkg/usr/include/{tdb.h,talloc.h,netapi.h} + rm -f ${pkgdir}/usr/bin/tdbbackup + rm -f ${pkgdir}/usr/include/{tdb.h,talloc.h,netapi.h} for man in rpcclient smbcacls smbclient smbcquotas \ smbtree smbtar nmblookup smbget; do - rm -f ${startdir}/pkg/usr/share/man/man1/${man}.1 + rm -f ${pkgdir}/usr/share/man/man1/${man}.1 done - rm -f ${startdir}/pkg/usr/share/man/man7/libsmbclient.7 + rm -f ${pkgdir}/usr/share/man/man7/libsmbclient.7 - rm -f ${startdir}/pkg/usr/include/libsmbclient.h + rm -f ${pkgdir}/usr/include/libsmbclient.h } +md5sums=('0cd27c7afbb8211616eea4010f32271c' + 'a676f0dde2c434aeb5125376b8797a64' + 'e93533fa2296c07c1f645dfdd373657f' + '5697da77590ec092cc8a883bae06093c' + 'a4bbfa39fee95bba2e7ad6b535fae7e6' + '96f82c38f3f540b53f3e5144900acf17' + 'f2f2e348acd1ccb566e95fa8a561b828') diff --git a/abs/core-testing/smbclient/PKGBUILD b/abs/core-testing/smbclient/PKGBUILD index 5e423ebe..c0034b3 100644 --- a/abs/core-testing/smbclient/PKGBUILD +++ b/abs/core-testing/smbclient/PKGBUILD @@ -1,56 +1,57 @@ -# $Id: PKGBUILD 14139 2008-10-04 09:13:09Z tpowa $ +# $Id: PKGBUILD 22197 2008-12-22 22:08:42Z tpowa $ # Maintainer: Jan de Groot <jgc@archlinux.org> pkgname=smbclient -pkgver=3.2.4 +pkgver=3.2.6 # We use the 'A' to fake out pacman's version comparators. Samba chooses -# to append 'a','b',etc to their subsequent releases, which pamcan +# to append 'a','b',etc to their subsequent releases, which pacman # misconstrues as alpha, beta, etc. Bad samba! -_realver=3.2.4 -pkgrel=3 +_realver=3.2.6 +pkgrel=2 pkgdesc="Tools to access a server's filespace and printers via SMB" arch=(i686 x86_64) url="http://www.samba.org" license=('GPL3') -depends=('popt' 'libldap' 'libcap' 'heimdal>=1.2-1' 'db>=4.7' 'tdb=3.2.4') +depends=('popt' 'libldap' 'libcap' 'heimdal>=1.2-1' 'db>=4.7' 'tdb=3.2.6') source=(http://us1.samba.org/samba/ftp/samba-${_realver}.tar.gz) options=(!makeflags) build() { - cd ${startdir}/src/samba-${_realver}/source + cd ${srcdir}/samba-${_realver}/source ./configure --prefix=/usr --with-cifsmount --with-fhs --with-pam \ --with-datadir=/usr/share --with-configdir=/etc/samba \ --with-lockdir=/var/run/samba --with-ads --with-acl-support \ - --localstatedir=/var --disable-dnssd --libdir=/usr/lib/samba + --localstatedir=/var --with-syslog --with-pam_smbpass --disable-dnssd \ + --libdir=/usr/lib/samba make proto bin/smbclient libsmbclient \ bin/rpcclient bin/smbspool bin/smbtree \ bin/smbcacls bin/smbcquotas bin/smbget \ bin/net bin/nmblookup bin/mount.cifs bin/umount.cifs || return 1 - mkdir -p ${startdir}/pkg/usr/bin ${startdir}/pkg/sbin ${startdir}/pkg/usr/lib/samba - install -m755 bin/{smbclient,rpcclient,smbspool,smbtree,smbcacls,smbcquotas,smbget,net,nmblookup} ${startdir}/pkg/usr/bin/ - install -m755 bin/{mount.cifs,umount.cifs} ${startdir}/pkg/sbin/ - mv bin/*.so* ${startdir}/pkg/usr/lib/samba - install -m755 script/smbtar ${startdir}/pkg/usr/bin/ - mkdir -p ${startdir}/pkg/usr/lib/cups/backend - ln -sf /usr/bin/smbspool ${startdir}/pkg/usr/lib/cups/backend/smb - for i in ${startdir}/pkg/usr/lib/samba/*; do - ln -sf samba/$(basename $i) ${startdir}/pkg/usr/lib/$(basename $i) + mkdir -p ${pkgdir}/usr/bin ${pkgdir}/sbin ${pkgdir}/usr/lib/samba + install -m755 bin/{smbclient,rpcclient,smbspool,smbtree,smbcacls,smbcquotas,smbget,net,nmblookup} ${pkgdir}/usr/bin/ + install -m755 bin/{mount.cifs,umount.cifs} ${pkgdir}/sbin/ + mv bin/*.so* ${pkgdir}/usr/lib/samba + install -m755 script/smbtar ${pkgdir}/usr/bin/ + mkdir -p ${pkgdir}/usr/lib/cups/backend + ln -sf /usr/bin/smbspool ${pkgdir}/usr/lib/cups/backend/smb + for i in ${pkgdir}/usr/lib/samba/*; do + ln -sf samba/$(basename $i) ${pkgdir}/usr/lib/$(basename $i) done - rm -rf $startdir/pkg/usr/lib/libtdb* - mkdir -p ${startdir}/pkg/usr/include - install -m644 include/libsmbclient.h ${startdir}/pkg/usr/include/ - install -m644 lib/talloc/talloc.h ${startdir}/pkg/usr/include/ - install -m644 lib/netapi/netapi.h ${startdir}/pkg/usr/include/ - mkdir -p ${startdir}/pkg/usr/share/man/man{1,7,8} + rm -rf ${pkgdir}/usr/lib/libtdb* + mkdir -p ${pkgdir}/usr/include + install -m644 include/libsmbclient.h ${pkgdir}/usr/include/ + install -m644 lib/talloc/talloc.h ${pkgdir}/usr/include/ + install -m644 lib/netapi/netapi.h ${pkgdir}/usr/include/ + mkdir -p ${pkgdir}/usr/share/man/man{1,7,8} for man in smbspool \ umount.cifs mount.cifs net; do - install -m644 ../docs/manpages/${man}.8 ${startdir}/pkg/usr/share/man/man8/ + install -m644 ../docs/manpages/${man}.8 ${pkgdir}/usr/share/man/man8/ done for man in rpcclient smbcacls smbclient smbcquotas smbget \ smbtree smbtar nmblookup; do - install -m644 ../docs/manpages/${man}.1 ${startdir}/pkg/usr/share/man/man1/ + install -m644 ../docs/manpages/${man}.1 ${pkgdir}/usr/share/man/man1/ done - install -m644 ../docs/manpages/libsmbclient.7 ${startdir}/pkg/usr/share/man/man7/ + install -m644 ../docs/manpages/libsmbclient.7 ${pkgdir}/usr/share/man/man7/ } -md5sums=('7870a6bb3a025c6081cd56688acd494a') +md5sums=('0cd27c7afbb8211616eea4010f32271c') diff --git a/abs/core-testing/sqlite3/PKGBUILD b/abs/core-testing/sqlite3/PKGBUILD index eb1dbc6..b40c3ee 100644 --- a/abs/core-testing/sqlite3/PKGBUILD +++ b/abs/core-testing/sqlite3/PKGBUILD @@ -1,10 +1,10 @@ -# $Id: PKGBUILD 12988 2008-09-25 16:26:35Z andyrtr $ +# $Id: PKGBUILD 22976 2008-12-30 11:35:01Z andyrtr $ # Maintainer: Andreas Radke <andyrtr@archlinux.org> # Contributor: Tom Newsom <Jeepster@gmx.co.uk> pkgname=sqlite3 -pkgver=3.6.3 -pkgrel=1 +pkgver=3.6.7 +pkgrel=2 pkgdesc="A C library that implements an SQL database engine" arch=('i686' 'x86_64') license=('custom') @@ -14,19 +14,21 @@ makedepends=('tcl') conflicts=('sqlite') replaces=('sqlite') source=(http://www.sqlite.org/sqlite-$pkgver.tar.gz - sqlite-3.5.8-pkgconfig-version.patch license.txt) options=(!libtool) -md5sums=('671d2715f33158abc47a7a2ddd6066c5' - '025965a176173eaf21877f6daed088d4' +md5sums=('5223d1f459b608ed8c2c54f8847f8e1a' 'c1cdbc5544034d9012e421e75a5e4890') build() { cd ${srcdir}/sqlite-${pkgver} - patch -Np1 -i ${srcdir}/sqlite-3.5.8-pkgconfig-version.patch || return 1 - ./configure --prefix=/usr --enable-threadsafe --disable-static || return 1 + export LTLINK_EXTRAS="-ldl" + export CFLAGS="$CFLAGS -DSQLITE_ENABLE_FTS3=1 -DSQLITE_ENABLE_COLUMN_METADATA=1" + ./configure --prefix=/usr \ + --enable-threadsafe \ + --disable-static \ + --enable-load-extension || return 1 make || return 1 - make DESTDIR=${pkgdir} install + make DESTDIR=${pkgdir} install || return 1 install -Dm0644 sqlite3.1 ${pkgdir}/usr/share/man/man1/sqlite3.1 # license diff --git a/abs/core-testing/tcl/ChangeLog b/abs/core-testing/tcl/ChangeLog index 313bd98..0aeabc7 100644 --- a/abs/core-testing/tcl/ChangeLog +++ b/abs/core-testing/tcl/ChangeLog @@ -1,10 +1,16 @@ -2008-08-16 Allan McRae <allan@archlinux.org> +2008-12-24 Allan McRae <allan@archlinux.org> + * 8.5.6-1 : + new upstream release + +2008-10-16 Allan McRae <allan@archlinux.org> + * 8.5.5-1 : + new upstream release +2008-08-16 Allan McRae <allan@archlinux.org> * 8.5.4-1 : new upstream release FHS man directory -2008-07-01 Allan McRae <allan@archlinux.org> - +2008-07-01 Allan McRae <allan@archlinux.org> * 8.5.3-1 : new upstream release. diff --git a/abs/core-testing/tcl/PKGBUILD b/abs/core-testing/tcl/PKGBUILD index ec911bb..bcf3ab2 100644 --- a/abs/core-testing/tcl/PKGBUILD +++ b/abs/core-testing/tcl/PKGBUILD @@ -1,17 +1,17 @@ -# $Id: PKGBUILD 8742 2008-08-16 05:01:49Z allan $ +# $Id: PKGBUILD 22246 2008-12-24 10:50:10Z allan $ # Maintainer: Allan McRae <allan@archlinux.org> # Committer: Judd Vinet <jvinet@zeroflux.org> pkgname=tcl -pkgver=8.5.4 +pkgver=8.5.6 pkgrel=1 pkgdesc="The Tcl scripting language" arch=('i686' 'x86_64') license=('custom') -depends=(glibc) +depends=('glibc') source=(http://downloads.sourceforge.net/sourceforge/tcl/tcl${pkgver}-src.tar.gz) url="http://tcl.sourceforge.net/" -md5sums=('15032a6a43f3bfbe9223b95186849472') +md5sums=('d0b0b3ff7600ff63135c710b575265cd') build() { cd ${srcdir}/tcl${pkgver}/unix diff --git a/abs/core-testing/tdb/PKGBUILD b/abs/core-testing/tdb/PKGBUILD index 1714862..88f37dc 100644 --- a/abs/core-testing/tdb/PKGBUILD +++ b/abs/core-testing/tdb/PKGBUILD @@ -1,29 +1,28 @@ -# $Id: PKGBUILD 14092 2008-10-03 15:43:08Z tpowa $ +# $Id: PKGBUILD 22194 2008-12-22 21:57:23Z tpowa $ # Maintainer: eric <eric@archlinux.org> # Contributor: Tom Newsom <Jeepster@gmx.co.uk> pkgname=tdb -pkgver=3.2.4 -pkgrel=1 +pkgver=3.2.6 +pkgrel=2 # We use the 'A' to fake out pacman's version comparators. Samba chooses # to append 'a','b',etc to their subsequent releases, which pamcan # misconstrues as alpha, beta, etc. Bad samba! -_realver=3.2.4 +_realver=3.2.6 pkgdesc="A Trivial Database similar to GDBM but allows simultaneous commits" arch=(i686 x86_64) license=('GPL3') -source=(http://downloads.sourceforge.net/$pkgname/$pkgname-$pkgver.tar.gz) url="www.samba.org" source=(http://us1.samba.org/samba/ftp/samba-${_realver}.tar.gz) options=(!makeflags) build() { - cd ${startdir}/src/samba-${_realver}/source/lib/tdb + cd ${srcdir}/samba-${_realver}/source/lib/tdb ./autogen.sh ./configure --prefix=/usr make || return 1 make DESTDIR=$startdir/pkg install - ln -sf /usr/lib/libtdb.so.1.1.1 $startdir/pkg/usr/lib/libtdb.so.1 - ln -sf /usr/lib/libtdb.so.1.1.1 $startdir/pkg/usr/lib/libtdb.so + ln -sf /usr/lib/libtdb.so.1.1.1 ${pkgdir}/usr/lib/libtdb.so.1 + ln -sf /usr/lib/libtdb.so.1.1.1 ${pkgdir}/usr/lib/libtdb.so } -md5sums=('7870a6bb3a025c6081cd56688acd494a') +md5sums=('0cd27c7afbb8211616eea4010f32271c') diff --git a/abs/core-testing/tk/ChangeLog b/abs/core-testing/tk/ChangeLog index 83abeb6..fc2998f 100644 --- a/abs/core-testing/tk/ChangeLog +++ b/abs/core-testing/tk/ChangeLog @@ -1,16 +1,21 @@ -2008-08-20 Allan McRae <allan@archlinux.org> +2008-12-24 Allan McRae <allan@archlinux.org> + * 8.5.6-1 : + new upstream release + +2008-10-16 Allan McRae <allan@archlinux.org> + * 8.5.5-1 : + new upstream release +2008-08-20 Allan McRae <allan@archlinux.org> * 8.5.4-2 : Remove xproto compatibility patch as no longer needed -2008-08-16 Allan McRae <allan@archlinux.org> - +2008-08-16 Allan McRae <allan@archlinux.org> * 8.5.4-1 : new upstream release FHS man pages -2008-07-01 Allan McRae <allan@archlinux.org> - +2008-07-01 Allan McRae <allan@archlinux.org> * 8.5.3-1 : new upstream release added patch for xproto-7.0.13 compatibility diff --git a/abs/core-testing/tk/PKGBUILD b/abs/core-testing/tk/PKGBUILD index 80299e6..3c75949 100644 --- a/abs/core-testing/tk/PKGBUILD +++ b/abs/core-testing/tk/PKGBUILD @@ -1,17 +1,17 @@ -# $Id: PKGBUILD 9873 2008-08-20 08:29:04Z allan $ +# $Id: PKGBUILD 22248 2008-12-24 10:55:13Z allan $ # Maintainer: Allan McRae <allan@archlinux.org> # Contributor: Judd Vinet <jvinet@zeroflux.org> pkgname=tk -pkgver=8.5.4 -pkgrel=2 +pkgver=8.5.6 +pkgrel=1 pkgdesc="A windowing toolkit for use with tcl" arch=('i686' 'x86_64') url="http://tcl.sourceforge.net/" license=('custom') depends=("tcl=${pkgver}" 'libxss' 'libxft') source=(http://downloads.sourceforge.net/sourceforge/tcl/tk${pkgver}-src.tar.gz) -md5sums=('a6aee7653566ec0b7c4b0f4c24a96f20') +md5sums=('7da2e00adddc7eed6080df904579d94e') build() { cd ${srcdir}/tk${pkgver}/unix diff --git a/abs/core-testing/ttf-dejavu/ChangeLog b/abs/core-testing/ttf-dejavu/ChangeLog index 5c02e9f..b3cf284 100644 --- a/abs/core-testing/ttf-dejavu/ChangeLog +++ b/abs/core-testing/ttf-dejavu/ChangeLog @@ -1,3 +1,13 @@ +2008-12-22 Alexander Fehr <pizzapunk gmail com> + + * ttf-dejavu-2.28-1: + New upstream release. + +2008-11-26 Alexander Fehr <pizzapunk gmail com> + + * ttf-dejavu-2.27-1: + New upstream release. + 2008-07-29 Alexander Fehr <pizzapunk gmail com> * ttf-dejavu-2.26-1: diff --git a/abs/core-testing/ttf-dejavu/PKGBUILD b/abs/core-testing/ttf-dejavu/PKGBUILD index 5cbbecc..93356a5 100644 --- a/abs/core-testing/ttf-dejavu/PKGBUILD +++ b/abs/core-testing/ttf-dejavu/PKGBUILD @@ -1,10 +1,10 @@ -# $Id: PKGBUILD 7356 2008-07-31 01:07:11Z alexanderf $ +# $Id: PKGBUILD 22203 2008-12-22 23:29:26Z alexanderf $ # Maintainer: Alexander Fehr <pizzapunk gmail com> # Contributor: Jan de Groot <jgc@archlinux.org> # Contributor: Michal Krenek <mikos@sg1.cz> pkgname=ttf-dejavu -pkgver=2.26 +pkgver=2.28 pkgrel=1 pkgdesc="Font family based on the Bitstream Vera Fonts with a wider range of characters" arch=('i686' 'x86_64') @@ -13,7 +13,7 @@ license=('custom') depends=('fontconfig' 'xorg-fonts-encodings') install=ttf-dejavu.install source=(http://downloads.sourceforge.net/dejavu/dejavu-fonts-ttf-$pkgver.tar.bz2) -md5sums=('bff450e8c1b3c9a3f38294ac44d81adc') +md5sums=('10002ae52fbad207641d1fd2bf9bf4b8') build() { cd "$srcdir/dejavu-fonts-ttf-$pkgver" diff --git a/abs/core-testing/udev/PKGBUILD b/abs/core-testing/udev/PKGBUILD index 53250cc..f24e308 100644 --- a/abs/core-testing/udev/PKGBUILD +++ b/abs/core-testing/udev/PKGBUILD @@ -1,9 +1,9 @@ -# $Id: PKGBUILD 14541 2008-10-08 07:37:32Z tpowa $ +# $Id: PKGBUILD 22190 2008-12-22 18:25:11Z tpowa $ # Maintainer: Aaron Griffin <aaron@archlinux.org> # Maintainer: Tobias Powalowski <tpowa@archlinux.org> # Maintainer: Thomas Bächler <thomas@archlinux.org> pkgname=udev -pkgver=130 +pkgver=135 pkgrel=1 pkgdesc="The userspace dev tools (udev)" arch=(i686 x86_64) @@ -25,13 +25,13 @@ options=(!makeflags) source=(http://www.kernel.org/pub/linux/utils/kernel/hotplug/$pkgname-$pkgver.tar.bz2 81-arch.rules load-modules.sh resolve-modalias.c cdsymlinks.sh root-link.sh arch-udev-rules.patch readme-udev-arch.txt) -md5sums=('eaaac3c45b8c87d81a82fed254ecee25' +md5sums=('661b9df34e1304dad10f595d95b472bb' '3a955ca8e2122a48a223f9d8adf87b70' 'f4951f61438d69894b728212dac7318b' 'fca04a608009069beb786e26338a783b' '8424b78e9dd772e75b4ef90814807815' '2d6dc6842464f107bccc68cd505a6c31' - 'beb8ebffc3652584363804e41445ba17' + 'ae216c26a6a5cae4a3ef9c0e1f7bfaa6' '7fc6d33bb218e752302eef0a80ff0a89') build() { diff --git a/abs/core-testing/udev/arch-udev-rules.patch b/abs/core-testing/udev/arch-udev-rules.patch index 22f9d1b..b672731 100644 --- a/abs/core-testing/udev/arch-udev-rules.patch +++ b/abs/core-testing/udev/arch-udev-rules.patch @@ -5,21 +5,19 @@ diff -Nur rules.d/60-persistent-storage.rules rules.d.arch/60-persistent-storage SUBSYSTEM!="block", GOTO="persistent_storage_end" # skip rules for inappropriate block devices --KERNEL=="ram*|loop*|fd*|nbd*|gnbd*|dm-*|md*", GOTO="persistent_storage_end" -+KERNEL=="ram*|loop*|fd*|nbd*|gnbd*|md*", GOTO="persistent_storage_end" +-KERNEL=="ram*|loop*|fd*|nbd*|gnbd*|dm-*|md*|btibm*", GOTO="persistent_storage_end" ++KERNEL=="ram*|loop*|fd*|nbd*|gnbd*|md*|btibm*", GOTO="persistent_storage_end" # never access non-cdrom removable ide devices, the drivers are causing event loops on open() KERNEL=="hd*[!0-9]", ATTR{removable}=="1", DRIVERS=="ide-cs|ide-floppy", GOTO="persistent_storage_end" diff -Nur rules.d/80-drivers.rules rules.d.arch/80-drivers.rules --- rules.d/80-drivers.rules 2008-09-12 15:59:57.000000000 +0200 +++ rules.d.arch/80-drivers.rules 2008-09-12 16:01:56.000000000 +0200 -@@ -2,16 +2,17 @@ +@@ -2,14 +2,16 @@ ACTION!="add", GOTO="drivers_end" -DRIVER!="?*", ENV{MODALIAS}=="?*", RUN{ignore_error}+="/sbin/modprobe $env{MODALIAS}" --SUBSYSTEM=="pnp", DRIVER!="?*", ENV{MODALIAS}!="?*", \ -- RUN{ignore_error}+="/bin/sh -c '/sbin/modprobe -a $$(while read id; do echo pnp:d$$id; done < /sys$devpath/id)'" -SUBSYSTEM=="tifm", RUN+="/sbin/modprobe --all tifm_sd tifm_ms" -SUBSYSTEM=="memstick", RUN+="/sbin/modprobe --all ms_block mspro_block" -SUBSYSTEM=="mmc", RUN+="/sbin/modprobe mmc_block" @@ -28,7 +26,6 @@ diff -Nur rules.d/80-drivers.rules rules.d.arch/80-drivers.rules -SUBSYSTEM=="scsi", ENV{DEVTYPE}=="scsi_device", TEST!="[module/sg]", RUN+="/sbin/modprobe sg" -SUBSYSTEM=="module", KERNEL=="parport_pc", RUN+="/sbin/modprobe ppdev" +DRIVER!="?*", ENV{MODALIAS}=="?*", RUN{ignore_error}+="/lib/udev/load-modules.sh $env{MODALIAS}" -+SUBSYSTEM=="pnp", ENV{MODALIAS}!="?*", DRIVER!="?*", RUN{ignore_error}+="/bin/sh -c 'while read id; do /lib/udev/load-modules.sh pnp:d$$id; /lib/udev/load-modules.sh pnp:c$$id ; done < /sys$devpath/id'" +SUBSYSTEM=="tifm", RUN+="/lib/udev/load-modules.sh tifm_sd" +SUBSYSTEM=="tifm", RUN+="/lib/udev/load-modules.sh tifm_ms" +SUBSYSTEM=="memstick", RUN+="/lib/udev/load-modules.sh ms_block" @@ -72,42 +69,33 @@ diff -Nur rules.d/50-udev-default.rules rules.d.arch/50-udev-default.rules # input KERNEL=="mouse*|mice|event*", NAME="input/%k", MODE="0640" -@@ -29,20 +35,25 @@ - - # video4linux +@@ -36,13 +36,18 @@ + KERNEL=="vtx*|vbi*", GROUP="video" + KERNEL=="winradio*", GROUP="video" KERNEL=="vbi0", SYMLINK+="vbi" -+KERNEL=="vbi[0-9]*", NAME="v4l/vbi%n", SYMLINK+="%k", GROUP="video" - KERNEL=="radio0", SYMLINK+="radio" +-KERNEL=="radio0", SYMLINK+="radio" ++KERNEL=="vbi[0-9]*", NAME="v4l/vbi%n", SYMLINK+="%k" ++KERNEL=="radio0", SYMLINK+="video" +KERNEL=="radio[0-9]*", NAME="v4l/radio%n", SYMLINK+="radio%n", GROUP="video" KERNEL=="video0", SYMLINK+="video" -+KERNEL=="video[0-9]*", NAME="v4l/video%n", SYMLINK+="%k", GROUP="video" ++KERNEL=="video[0-9]*", NAME="v4l/video%n", SYMLINK+="%k" +KERNEL=="vtx0", SYMLINK+="vtx" -+KERNEL=="vtx[0-9]*", NAME="v4l/vtx%n", SYMLINK+="%k", GROUP="video" ++KERNEL=="vtx[0-9]*", NAME="v4l/vtx%n", SYMLINK+="%k" # graphics --KERNEL=="agpgart", MODE="0600" +-KERNEL=="agpgart", MODE="0600", GROUP="video" -KERNEL=="card[0-9]*", NAME="dri/%k", MODE="0666" -KERNEL=="fb0", SYMLINK+="fb" +KERNEL=="agpgart", NAME="misc/%k", SYMLINK+="%k", GROUP="video", MODE="0600" +KERNEL=="card[0-9]*", NAME="dri/%k", GROUP="video", MODE="0666" +KERNEL=="fb[0-9]*", NAME="fb/%n", SYMLINK+="%k", GROUP="video" - - # DVB video --SUBSYSTEM=="dvb", PROGRAM="/bin/sh -c 'K=%k; K=$${K#dvb}; printf dvb/adapter%%i/%%s $${K%%%%.*} $${K#*.}'", NAME="%c" -+SUBSYSTEM=="dvb", PROGRAM="/bin/sh -c 'K=%k; K=$${K#dvb}; printf dvb/adapter%%i/%%s $${K%%%%.*} $${K#*.}'", NAME="%c", GROUP="video" - - # Firewire --KERNEL=="dv1394*", SYMLINK+="dv1394/%n" --KERNEL=="video1394*", NAME="video1394/%n" -+KERNEL=="dv1394*", SYMLINK+="dv1394/%n", GROUP="video" -+KERNEL=="video1394*", NAME="video1394/%n", GROUP="video" - - # firmware class requests - SUBSYSTEM=="firmware", ACTION=="add", RUN+="firmware.sh" + KERNEL=="pmu", GROUP="video" + KERNEL=="nvidia*|nvidiactl*", GROUP="video" + SUBSYSTEM=="graphics", GROUP="video" @@ -62,19 +73,19 @@ + # block, tapes, block-releated + SUBSYSTEM=="block", GROUP="disk" SUBSYSTEM=="block", KERNEL=="sr[0-9]*", SYMLINK+="scd%n" - SUBSYSTEM=="scsi", KERNEL=="[0-9]*:[0-9]*", ACTION=="add", ATTR{type}=="0|7|14", ATTR{timeout}="60" - SUBSYSTEM=="scsi", KERNEL=="[0-9]*:[0-9]*", ACTION=="add", ATTR{type}=="1", ATTR{timeout}="900" -KERNEL=="hd*", SUBSYSTEMS=="ide", ATTRS{media}=="floppy", OPTIONS+="all_partitions" +KERNEL=="hd*", SUBSYSTEMS=="ide", ATTRS{media}=="floppy", OPTIONS+="all_partitions", GROUP="floppy" KERNEL=="fd[0-9]", GROUP="floppy" diff --git a/abs/core-testing/unichrome-dri/PKGBUILD b/abs/core-testing/unichrome-dri/PKGBUILD index c51bb2b..2870c39 100644 --- a/abs/core-testing/unichrome-dri/PKGBUILD +++ b/abs/core-testing/unichrome-dri/PKGBUILD @@ -1,40 +1,38 @@ -# $Id: PKGBUILD 1898 2008-05-22 18:05:23Z jgc $ +# $Id: PKGBUILD 13002 2008-09-25 18:36:29Z jgc $ # Maintainer: Alexander Baldeck <alexander@archlinux.org> # Contributor: Jan de Groot <jgc@archlinux.org> pkgname=unichrome-dri -pkgver=7.0.3 -_mesaver=7.0.3 +pkgver=7.2 pkgrel=1 pkgdesc="DRI drivers for Unichrome-based videochipsets" arch=(i686 x86_64) -license=('GPL') url="http://xorg.freedesktop.org/" -depends=('libdrm>=2.3.0' 'expat>=2.0') -makedepends=('imake' 'mesa>=7.0.3' 'glproto>=1.4.9') +depends=('libdrm>=2.3.1' 'expat>=2.0.1' 'libgl>=7.1-2') +makedepends=('dri2proto>=1.1' 'glproto>=1.4.9' 'pkgconfig' 'libxfixes' 'libxdamage' 'libxxf86vm' 'libxext') options=('!libtool') -source=(http://downloads.sourceforge.net/sourceforge/mesa3d/MesaLib-${_mesaver}.tar.bz2) +source=(http://downloads.sourceforge.net/mesa3d/MesaLib-${pkgver}.tar.bz2 + mesa-7.1-link-shared.patch) +md5sums=('04d379292e023df0b0266825cb0dbde5' + 'f0baa948d9810f268413111ee439d24b') build() { - cd ${startdir}/src/Mesa-${_mesaver}/configs - - CONFIG="linux-dri-x86" - [ "$CARCH" = "x86_64" ] && CONFIG="linux-dri-x86-64" - echo "EXTRA_LIB_PATH =" >> ${CONFIG} - echo "OPT_FLAGS = ${CFLAGS} -fno-strict-aliasing" >> ${CONFIG} - echo "SRC_DIRS = glx/x11 mesa" >> ${CONFIG} - echo "USING_EGL = 0" >> ${CONFIG} - echo "PROGRAM_DIRS =" >> ${CONFIG} - echo "MKDEP = makedepend" >> ${CONFIG} - echo "DRI_DIRS = unichrome" >> ${CONFIG} - echo "DRI_DRIVER_SEARCH_DIR = /usr/lib/xorg/modules/dri" >> ${CONFIG} - echo "DRI_DRIVER_INSTALL_DIR = /usr/lib/xorg/modules/dri" >> ${CONFIG} - echo "ARCH_FLAGS += -DGLX_USE_TLS" >> ${CONFIG} - echo "X11_INCLUDES = `pkg-config --cflags-only-I x11`" >> ${CONFIG} - - ln -s ${CONFIG} current - cd ${startdir}/src/Mesa-${_mesaver}/src/mesa - make linux-solo || return 1 - cd drivers/dri - make DESTDIR=${startdir}/pkg install || return 1 + cd ${srcdir}/Mesa-${pkgver} + patch -Np1 -i ${srcdir}/mesa-7.1-link-shared.patch + export CFLAGS="${CFLAGS} -ffast-math" + ./configure --prefix=/usr \ + --with-dri-driverdir=/usr/lib/xorg/modules/dri \ + --with-dri-drivers=unichrome \ + --enable-glx-tls \ + --disable-ttm-api \ + --with-driver=dri \ + --enable-xcb \ + --disable-glu \ + --disable-glut \ + --disable-glw || return 1 + make || return 1 + cd src/mesa/drivers/dri || return 1 + make DESTDIR=${pkgdir} install || return 1 + rm -rf ${pkgdir}/usr/lib/pkgconfig + rm -rf ${pkgdir}/usr/include + rm -f ${pkgdir}/usr/lib/xorg/modules/dri/libdricore.so } -md5sums=('e6e6379d7793af40a6bc3ce1bace572e') diff --git a/abs/core-testing/unichrome-dri/mesa-7.1-link-shared.patch b/abs/core-testing/unichrome-dri/mesa-7.1-link-shared.patch new file mode 100644 index 0000000..7fdbf14 --- /dev/null +++ b/abs/core-testing/unichrome-dri/mesa-7.1-link-shared.patch @@ -0,0 +1,102 @@ +diff -up mesa-20080814/src/mesa/drivers/dri/Makefile.dricore mesa-20080814/src/mesa/drivers/dri/Makefile +--- mesa-20080814/src/mesa/drivers/dri/Makefile.dricore 2008-08-14 02:28:38.000000000 +1000 ++++ mesa-20080814/src/mesa/drivers/dri/Makefile 2008-08-14 16:18:20.000000000 +1000 +@@ -6,12 +6,17 @@ include $(TOP)/configs/current + + + +-default: $(TOP)/$(LIB_DIR) subdirs ++default: $(TOP)/$(LIB_DIR) $(TOP)/$(LIB_DIR)/libdricore.so subdirs + + + $(TOP)/$(LIB_DIR): + -mkdir $(TOP)/$(LIB_DIR) + ++libdricore.so: ++ gcc -shared -o libdricore.so -Wl,--whole-archive ../../libmesa.a -Wl,--no-whole-archive -lm -lpthread -lc ++ ++$(TOP)/$(LIB_DIR)/libdricore.so: $(TOP)/$(LIB_DIR) libdricore.so ++ $(INSTALL) libdricore.so $(TOP)/$(LIB_DIR) + + subdirs: + @for dir in $(DRI_DIRS) ; do \ +@@ -31,12 +36,14 @@ dri.pc: dri.pc.in + $(pcedit) $< > $@ + + +-install: dri.pc ++install: dri.pc $(TOP)/$(LIB_DIR)/libdricore.so + @for dir in $(DRI_DIRS) ; do \ + if [ -d $$dir ] ; then \ + (cd $$dir && $(MAKE) install) || exit 1 ; \ + fi \ + done ++ $(INSTALL) -d $(DESTDIR)$(DRI_DRIVER_INSTALL_DIR) ++ $(INSTALL) -m 755 $(TOP)/$(LIB_DIR)/libdricore.so $(DESTDIR)$(DRI_DRIVER_INSTALL_DIR) + $(INSTALL) -d $(DESTDIR)$(INSTALL_INC_DIR)/GL/internal + $(INSTALL) -m 0644 $(TOP)/include/GL/internal/dri_interface.h \ + $(DESTDIR)$(INSTALL_INC_DIR)/GL/internal +@@ -52,5 +59,6 @@ clean: + (cd $$dir && $(MAKE) clean) ; \ + fi \ + done ++ -rm -f libdricore.so $(TOP)/$(LIB_DIR)/libdricore.so + -rm -f common/*.o + -rm -f *.pc +diff -up mesa-20080814/src/mesa/drivers/dri/Makefile.template.dricore mesa-20080814/src/mesa/drivers/dri/Makefile.template +--- mesa-20080814/src/mesa/drivers/dri/Makefile.template.dricore 2008-08-14 02:28:38.000000000 +1000 ++++ mesa-20080814/src/mesa/drivers/dri/Makefile.template 2008-08-14 16:19:37.000000000 +1000 +@@ -1,6 +1,6 @@ + # -*-makefile-*- + +-MESA_MODULES = $(TOP)/src/mesa/libmesa.a ++MESA_MODULES = $(TOP)/$(LIB_DIR)/libdricore.so + + COMMON_SOURCES = \ + ../common/utils.c \ +@@ -64,7 +64,9 @@ default: symlinks depend $(LIBNAME) $(TO + + $(LIBNAME): $(OBJECTS) $(MESA_MODULES) $(WINOBJ) Makefile $(TOP)/src/mesa/drivers/dri/Makefile.template + $(MKLIB) -o $@ -noprefix -linker '$(CC)' -ldflags '$(LDFLAGS)' \ +- $(OBJECTS) $(MESA_MODULES) $(WINOBJ) $(DRI_LIB_DEPS) ++ $(OBJECTS) $(WINOBJ) \ ++ -L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) -ldricore \ ++ $(DRI_LIB_DEPS) + + + $(TOP)/$(LIB_DIR)/$(LIBNAME): $(LIBNAME) +diff -up mesa-20080814/src/mesa/x86/read_rgba_span_x86.S.dricore mesa-20080814/src/mesa/x86/read_rgba_span_x86.S +--- mesa-20080814/src/mesa/x86/read_rgba_span_x86.S.dricore 2008-08-14 02:28:38.000000000 +1000 ++++ mesa-20080814/src/mesa/x86/read_rgba_span_x86.S 2008-08-14 16:16:49.000000000 +1000 +@@ -77,7 +77,6 @@ + */ + + .globl _generic_read_RGBA_span_BGRA8888_REV_MMX +-.hidden _generic_read_RGBA_span_BGRA8888_REV_MMX + .type _generic_read_RGBA_span_BGRA8888_REV_MMX, @function + _generic_read_RGBA_span_BGRA8888_REV_MMX: + pushl %ebx +@@ -172,7 +171,6 @@ _generic_read_RGBA_span_BGRA8888_REV_MMX + */ + + .globl _generic_read_RGBA_span_BGRA8888_REV_SSE +-.hidden _generic_read_RGBA_span_BGRA8888_REV_SSE + .type _generic_read_RGBA_span_BGRA8888_REV_SSE, @function + _generic_read_RGBA_span_BGRA8888_REV_SSE: + pushl %esi +@@ -335,7 +333,6 @@ _generic_read_RGBA_span_BGRA8888_REV_SSE + + .text + .globl _generic_read_RGBA_span_BGRA8888_REV_SSE2 +-.hidden _generic_read_RGBA_span_BGRA8888_REV_SSE2 + .type _generic_read_RGBA_span_BGRA8888_REV_SSE2, @function + _generic_read_RGBA_span_BGRA8888_REV_SSE2: + pushl %esi +@@ -494,7 +491,6 @@ _generic_read_RGBA_span_BGRA8888_REV_SSE + + .text + .globl _generic_read_RGBA_span_RGB565_MMX +- .hidden _generic_read_RGBA_span_RGB565_MMX + .type _generic_read_RGBA_span_RGB565_MMX, @function + + _generic_read_RGBA_span_RGB565_MMX: diff --git a/abs/core-testing/v4l-dvb/PKGBUILD b/abs/core-testing/v4l-dvb/PKGBUILD index 8db31a2..10ef694 100644 --- a/abs/core-testing/v4l-dvb/PKGBUILD +++ b/abs/core-testing/v4l-dvb/PKGBUILD @@ -2,9 +2,9 @@ # Maintainer: Cecil Watson<knoppmyth@gmail.com> pkgname=v4l-dvb -_kernver=2.6.26-ARCH +_kernver=2.6.27-ARCH pkgver=1 -pkgrel=1 +pkgrel=3 pkgdesc="V4L-DVB drivers from mercurial" arch=('i686' 'x86_64') license=('GPL2') diff --git a/abs/core-testing/v4l-dvb/v4l-dvb.install b/abs/core-testing/v4l-dvb/v4l-dvb.install index c87bb82..1c17557 100644 --- a/abs/core-testing/v4l-dvb/v4l-dvb.install +++ b/abs/core-testing/v4l-dvb/v4l-dvb.install @@ -1,20 +1,20 @@ # arg 1: the new package version post_install() { - KERNEL_VERSION='2.6.26-ARCH' + KERNEL_VERSION='2.6.27-ARCH' depmod -ae -v $KERNEL_VERSION > /dev/null 2>&1 } # arg 1: the new package version # arg 2: the old package version post_upgrade() { - KERNEL_VERSION='2.6.26-ARCH' + KERNEL_VERSION='2.6.27-ARCH' depmod -ae -v $KERNEL_VERSION > /dev/null 2>&1 } # arg 1: the old package version post_remove() { - KERNEL_VERSION='2.6.26-ARCH' + KERNEL_VERSION='2.6.27-ARCH' depmod -ae -v $KERNEL_VERSION > /dev/null 2>&1 } diff --git a/abs/core-testing/xf86-input-aiptek/PKGBUILD b/abs/core-testing/xf86-input-aiptek/PKGBUILD index f3d5b39..509eba6 100644 --- a/abs/core-testing/xf86-input-aiptek/PKGBUILD +++ b/abs/core-testing/xf86-input-aiptek/PKGBUILD @@ -1,23 +1,22 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 10857 2008-08-31 13:24:55Z jgc $ #Maintainer: Jan de Groot <jgc@archlinux.org> pkgname=xf86-input-aiptek -pkgver=1.0.1 -pkgrel=4 +pkgver=1.1.1 +pkgrel=1 pkgdesc="X.Org Aiptek USB Digital Tablet input driver" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" depends=('glibc') -makedepends=('pkgconfig' 'xorg-server>=1.1.1') +makedepends=('pkgconfig' 'xorg-server>=1.4.99.906') options=('!libtool') groups=('xorg-input-drivers') source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) -md5sums=('951b2b1a270f67d28e2e89fd2b9f15ae') +md5sums=('2aa75313ea5652a8cf93581c65ee6493') build() { cd ${startdir}/src/${pkgname}-${pkgver} - ./configure --prefix=/usr \ - --build=${CHOST} --host=${CHOST} + ./configure --prefix=/usr || return 1 make || return 1 make DESTDIR=${startdir}/pkg install || return 1 } diff --git a/abs/core-testing/xf86-input-calcomp/PKGBUILD b/abs/core-testing/xf86-input-calcomp/PKGBUILD index b18d89c..2792455 100644 --- a/abs/core-testing/xf86-input-calcomp/PKGBUILD +++ b/abs/core-testing/xf86-input-calcomp/PKGBUILD @@ -1,23 +1,22 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 11000 2008-08-31 13:46:51Z jgc $ # Maintainer: Alexander Baldeck <alexander@archlinux.org> # Contributor: Jan de Groot <jgc@archlinux.org> pkgname=xf86-input-calcomp -pkgver=1.1.1 +pkgver=1.1.2 pkgrel=1 pkgdesc="X.Org CalComp Drawing Board input driver" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" depends=('glibc') -makedepends=('pkgconfig' 'xorg-server>=1.4') +makedepends=('pkgconfig' 'xorg-server>=1.4.99.906') options=('!libtool') groups=('xorg-input-drivers') source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) +md5sums=('ebc9a64dc72ae3015c16011bbd2d3557') build() { cd ${startdir}/src/${pkgname}-${pkgver} - ./configure --prefix=/usr \ - --build=${CHOST} --host=${CHOST} + ./configure --prefix=/usr || return 1 make || return 1 make DESTDIR=${startdir}/pkg install || return 1 } -md5sums=('689099e2ade8a8c9f68f82fdf569b3ad') diff --git a/abs/core-testing/xf86-input-digitaledge/PKGBUILD b/abs/core-testing/xf86-input-digitaledge/PKGBUILD index 2017d0f..fcdfd1a 100644 --- a/abs/core-testing/xf86-input-digitaledge/PKGBUILD +++ b/abs/core-testing/xf86-input-digitaledge/PKGBUILD @@ -1,23 +1,22 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 11039 2008-08-31 13:50:33Z jgc $ #Maintainer: Jan de Groot <jgc@archlinux.org> pkgname=xf86-input-digitaledge -pkgver=1.1.0 -pkgrel=4 +pkgver=1.1.1 +pkgrel=1 pkgdesc="X.Org Digital Edge Tablet input driver" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" depends=('glibc') -makedepends=('pkgconfig' 'xorg-server>=1.1.1') +makedepends=('pkgconfig' 'xorg-server>=1.4.99.906') groups=('xorg-input-drivers') options=('!libtool') source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) -md5sums=('53461c34cc0712aacab92b820b9fcb84') +md5sums=('4c27e0f3c6447e76df39a837fd46a00f') build() { cd ${startdir}/src/${pkgname}-${pkgver} - ./configure --prefix=/usr \ - --build=${CHOST} --host=${CHOST} + ./configure --prefix=/usr || return 1 make || return 1 make DESTDIR=${startdir}/pkg install || return 1 } diff --git a/abs/core-testing/xf86-input-dmc/PKGBUILD b/abs/core-testing/xf86-input-dmc/PKGBUILD index 5839019..afc4e86 100644 --- a/abs/core-testing/xf86-input-dmc/PKGBUILD +++ b/abs/core-testing/xf86-input-dmc/PKGBUILD @@ -1,23 +1,22 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 11060 2008-08-31 13:52:40Z jgc $ # Maintainer: Alexander Baldeck <alexander@archlinux.org> # Contributor: Jan de Groot <jgc@archlinux.org> pkgname=xf86-input-dmc -pkgver=1.1.1 +pkgver=1.1.2 pkgrel=1 pkgdesc="X.Org DMC FIT10 serial input driver" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" depends=('glibc') -makedepends=('pkgconfig' 'xorg-server>=1.4') +makedepends=('pkgconfig' 'xorg-server>=1.4.99.906') options=('!libtool') groups=('xorg-input-drivers') source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) +md5sums=('91021ea8f3593221c0d9ee9cc14deb48') build() { cd ${startdir}/src/${pkgname}-${pkgver} - ./configure --prefix=/usr \ - --build=${CHOST} --host=${CHOST} + ./configure --prefix=/usr || return 1 make || return 1 make DESTDIR=${startdir}/pkg install || return 1 } -md5sums=('f21f008220bc7687ce1c34ab557ec32f') diff --git a/abs/core-testing/xf86-input-dynapro/PKGBUILD b/abs/core-testing/xf86-input-dynapro/PKGBUILD index 467e05d..4043a9f 100644 --- a/abs/core-testing/xf86-input-dynapro/PKGBUILD +++ b/abs/core-testing/xf86-input-dynapro/PKGBUILD @@ -1,23 +1,22 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 11063 2008-08-31 13:54:38Z jgc $ # Maintainer: Alexander Baldeck <alexander@archlinux.org> # Contributor: Jan de Groot <jgc@archlinux.org> pkgname=xf86-input-dynapro -pkgver=1.1.1 +pkgver=1.1.2 pkgrel=1 pkgdesc="X.org DynaPro Touch Screen input driver" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" depends=('glibc') -makedepends=('pkgconfig' 'xorg-server>=1.4') +makedepends=('pkgconfig' 'xorg-server>=1.4.99.906') options=('!libtool') groups=('xorg-input-drivers') source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) +md5sums=('ceb5efbd3d62e24ab3a5f9f180777f7c') build() { cd ${startdir}/src/${pkgname}-${pkgver} - ./configure --prefix=/usr \ - --build=${CHOST} --host=${CHOST} + ./configure --prefix=/usr || return 1 make || return 1 make DESTDIR=${startdir}/pkg install || return 1 } -md5sums=('d47be12a230c44a05d56d6b79ebcfc38') diff --git a/abs/core-testing/xf86-input-elographics/PKGBUILD b/abs/core-testing/xf86-input-elographics/PKGBUILD index 374fcaa..1b48f31 100644 --- a/abs/core-testing/xf86-input-elographics/PKGBUILD +++ b/abs/core-testing/xf86-input-elographics/PKGBUILD @@ -1,26 +1,26 @@ -# $Id: PKGBUILD 3250 2008-06-21 18:18:33Z jgc $ +# $Id: PKGBUILD 17524 2008-10-30 22:03:55Z jgc $ #Maintainer: Jan de Groot <jgc@archlinux.org> pkgname=xf86-input-elographics -pkgver=1.2.2 +pkgver=1.2.3 pkgrel=1 pkgdesc="X.org Elographics TouchScreen input driver" arch=(i686 x86_64) license=('custom') url="http://xorg.freedesktop.org/" depends=('glibc') -makedepends=('pkgconfig' 'xorg-server>=1.4.2') +makedepends=('pkgconfig' 'xorg-server>=1.5.2') options=('!libtool') groups=('xorg-input-drivers') source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) -md5sums=('50a9c32af12ca4733afe23042f012f9c') +md5sums=('cc2923460c8eff9652b01889a063058d') build() { - cd ${startdir}/src/${pkgname}-${pkgver} + cd "${srcdir}/${pkgname}-${pkgver}" ./configure --prefix=/usr || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 + make DESTDIR="${pkgdir}" install || return 1 - install -m755 -d ${pkgdir}/usr/share/licenses/${pkgname} - install -m644 COPYING ${pkgdir}/usr/share/licenses/${pkgname}/ || return 1 + install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}" + install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/" || return 1 } diff --git a/abs/core-testing/xf86-input-evdev/PKGBUILD b/abs/core-testing/xf86-input-evdev/PKGBUILD index 0745861..1a1f167 100644 --- a/abs/core-testing/xf86-input-evdev/PKGBUILD +++ b/abs/core-testing/xf86-input-evdev/PKGBUILD @@ -1,22 +1,25 @@ -# $Id: PKGBUILD 3693 2008-06-29 11:05:37Z jgc $ +# $Id: PKGBUILD 20574 2008-12-05 20:53:20Z jgc $ # Maintainer: Alexander Baldeck <Alexander@archlinux.org # Contributor: Jan de Groot <jgc@archlinux.org> pkgname=xf86-input-evdev -pkgver=2.0.1 +pkgver=2.1.0 pkgrel=1 pkgdesc="X.org evdev input driver" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" +license=('custom') depends=('glibc') -makedepends=('pkgconfig' 'xorg-server>=1.4.2' 'inputproto>=1.4.3' 'randrproto>=1.2.1') +makedepends=('pkgconfig' 'xorg-server>=1.5.3' 'inputproto>=1.4.4' 'randrproto>=1.2.1') options=('!libtool') groups=('xorg-input-drivers') source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) -md5sums=('061c4558316b1ec9ee71478bdf68b10c') +md5sums=('a6070ead29b2d81b5b386a96df2661b8') build() { - cd ${startdir}/src/${pkgname}-${pkgver} + cd "${srcdir}/${pkgname}-${pkgver}" ./configure --prefix=/usr || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 + make DESTDIR="${pkgdir}" install || return 1 + install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}" + install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/" || return 1 } diff --git a/abs/core-testing/xf86-input-fpit/PKGBUILD b/abs/core-testing/xf86-input-fpit/PKGBUILD index c8931e9..280ca28 100644 --- a/abs/core-testing/xf86-input-fpit/PKGBUILD +++ b/abs/core-testing/xf86-input-fpit/PKGBUILD @@ -1,23 +1,22 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 11093 2008-08-31 13:58:34Z jgc $ #Maintainer: Jan de Groot <jgc@archlinux.org> pkgname=xf86-input-fpit -pkgver=1.1.0 -pkgrel=4 +pkgver=1.2.0 +pkgrel=1 pkgdesc="X.Org Fujitsu Stylistic Tablet PC input driver" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" depends=('glibc') -makedepends=('pkgconfig' 'xorg-server>=1.1.1') +makedepends=('pkgconfig' 'xorg-server>=1.4.99.906') groups=('xorg-input-drivers') options=('!libtool') source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) -md5sums=('a31066a2076d18619ceaea67f6d89698') +md5sums=('0f3e013d5ff58e0aba3d9e1d18830291') build() { cd ${startdir}/src/${pkgname}-${pkgver} - ./configure --prefix=/usr \ - --build=${CHOST} --host=${CHOST} + ./configure --prefix=/usr || return 1 make || return 1 make DESTDIR=${startdir}/pkg install || return 1 } diff --git a/abs/core-testing/xf86-input-hyperpen/PKGBUILD b/abs/core-testing/xf86-input-hyperpen/PKGBUILD index 8873552..b06636b 100644 --- a/abs/core-testing/xf86-input-hyperpen/PKGBUILD +++ b/abs/core-testing/xf86-input-hyperpen/PKGBUILD @@ -1,23 +1,22 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 11115 2008-08-31 14:01:17Z jgc $ #Maintainer: Jan de Groot <jgc@archlinux.org> pkgname=xf86-input-hyperpen -pkgver=1.1.0 -pkgrel=4 +pkgver=1.2.0 +pkgrel=1 pkgdesc="X.Org HyperPen Tablet input driver" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" depends=('glibc') -makedepends=('pkgconfig' 'xorg-server>=1.1.1') +makedepends=('pkgconfig' 'xorg-server>=1.4.99.906') options=('!libtool') groups=('xorg-input-drivers') source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) -md5sums=('1dfccb75069e61e0c6f990b47eb58c40') +md5sums=('175c1e1ad668ebbbe212c1e975dd14f9') build() { cd ${startdir}/src/${pkgname}-${pkgver} - ./configure --prefix=/usr \ - --build=${CHOST} --host=${CHOST} + ./configure --prefix=/usr || return 1 make || return 1 make DESTDIR=${startdir}/pkg install || return 1 } diff --git a/abs/core-testing/xf86-input-jamstudio/PKGBUILD b/abs/core-testing/xf86-input-jamstudio/PKGBUILD index 28be4e1..35036e2 100644 --- a/abs/core-testing/xf86-input-jamstudio/PKGBUILD +++ b/abs/core-testing/xf86-input-jamstudio/PKGBUILD @@ -1,23 +1,22 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 11114 2008-08-31 14:00:38Z jgc $ #Maintainer: Jan de Groot <jgc@archlinux.org> pkgname=xf86-input-jamstudio -pkgver=1.1.0 -pkgrel=4 +pkgver=1.2.0 +pkgrel=1 pkgdesc="X.Org KB-Gear JamStudio pentablet input driver" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" depends=('glibc') -makedepends=('pkgconfig' 'xorg-server>=1.1.1') +makedepends=('pkgconfig' 'xorg-server>=1.4.99.906') options=('!libtool') groups=('xorg-input-drivers') source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) -md5sums=('a32e36a24545791a3408cdc5563b6523') +md5sums=('8011f90d7dd801d26e8c3dd058633978') build() { cd ${startdir}/src/${pkgname}-${pkgver} - ./configure --prefix=/usr \ - --build=${CHOST} --host=${CHOST} + ./configure --prefix=/usr || return 1 make || return 1 make DESTDIR=${startdir}/pkg install || return 1 } diff --git a/abs/core-testing/xf86-input-joystick/PKGBUILD b/abs/core-testing/xf86-input-joystick/PKGBUILD index e2146e8..de6f6e3 100644 --- a/abs/core-testing/xf86-input-joystick/PKGBUILD +++ b/abs/core-testing/xf86-input-joystick/PKGBUILD @@ -1,23 +1,23 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 23023 2009-01-01 16:35:00Z jgc $ # Maintainer: Alexander Baldeck <alexander@archlinux.org> # Contributor: Jan de Groot <jgc@archlinux.org> pkgname=xf86-input-joystick -pkgver=1.3.1 +pkgver=1.4.0 pkgrel=1 pkgdesc="X.Org Joystick input driver" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" depends=('glibc') -makedepends=('pkgconfig' 'xorg-server>=1.4') +makedepends=('pkgconfig' 'xorg-server>=1.5.3') +conflicts=('xorg-server<1.5.3') groups=('xorg-input-drivers') options=('!libtool') source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) +md5sums=('600bca5bd96a0dee90e20b606aa1eb93') build() { cd ${startdir}/src/${pkgname}-${pkgver} - ./configure --prefix=/usr \ - --build=${CHOST} --host=${CHOST} + ./configure --prefix=/usr || return 1 make || return 1 make DESTDIR=${startdir}/pkg install || return 1 } -md5sums=('ff25ea697cfa1570cc28f4b9cf9c761f') diff --git a/abs/core-testing/xf86-input-magellan/PKGBUILD b/abs/core-testing/xf86-input-magellan/PKGBUILD index 324c0be..9ed417a 100644 --- a/abs/core-testing/xf86-input-magellan/PKGBUILD +++ b/abs/core-testing/xf86-input-magellan/PKGBUILD @@ -1,23 +1,22 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 11137 2008-08-31 14:03:11Z jgc $ # Maintainer: Alexander Baldeck <alexander@archlinux.org> # Contributor: Jan de Groot <jgc@archlinux.org> pkgname=xf86-input-magellan -pkgver=1.1.1 +pkgver=1.2.0 pkgrel=1 pkgdesc="X.Org Magellan Space mouse input driver" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" depends=('glibc') -makedepends=('pkgconfig' 'xorg-server>=1.4') +makedepends=('pkgconfig' 'xorg-server>=1.4.99.906') groups=('xorg-input-drivers') options=('!libtool') source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) +md5sums=('9801ba10f15f8be2420dfb3f3b5d5d27') build() { cd ${startdir}/src/${pkgname}-${pkgver} - ./configure --prefix=/usr \ - --build=${CHOST} --host=${CHOST} + ./configure --prefix=/usr || return 1 make || return 1 make DESTDIR=${startdir}/pkg install || return 1 } -md5sums=('8a966d3b74dc2a801ff09b895037090c') diff --git a/abs/core-testing/xf86-input-magictouch/PKGBUILD b/abs/core-testing/xf86-input-magictouch/PKGBUILD index fdd4a4a..70c417e 100644 --- a/abs/core-testing/xf86-input-magictouch/PKGBUILD +++ b/abs/core-testing/xf86-input-magictouch/PKGBUILD @@ -1,4 +1,4 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 20562 2008-12-05 20:36:01Z jgc $ #Maintainer: Jan de Groot <jgc@archlinux.org> pkgname=xf86-input-magictouch @@ -15,9 +15,8 @@ source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) md5sums=('d23f2791cd634ef85b7cc5e9da8f8407') build() { - cd ${startdir}/src/${pkgname}-${pkgver} - ./configure --prefix=/usr \ - --build=${CHOST} --host=${CHOST} + cd "${srcdir}/${pkgname}-${pkgver}" + ./configure --prefix=/usr || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 + make DESTDIR="${pkgdir}" install || return 1 } diff --git a/abs/core-testing/xf86-input-microtouch/PKGBUILD b/abs/core-testing/xf86-input-microtouch/PKGBUILD index be6b234..5984af1 100644 --- a/abs/core-testing/xf86-input-microtouch/PKGBUILD +++ b/abs/core-testing/xf86-input-microtouch/PKGBUILD @@ -1,23 +1,22 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 11144 2008-08-31 14:03:49Z jgc $ # Maintainer: Alexander Baldeck <alexander@archlinux.org> # Contributor: Jan de Groot <jgc@archlinux.org> pkgname=xf86-input-microtouch -pkgver=1.1.1 +pkgver=1.2.0 pkgrel=1 pkgdesc="X.org microtouch input driver" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" depends=('glibc') -makedepends=('pkgconfig' 'xorg-server>=1.4') +makedepends=('pkgconfig' 'xorg-server>=1.4.99.906') groups=('xorg-input-drivers') options=('!libtool') source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) +md5sums=('1ad1aee7d8df84b9ea832d1e75963257') build() { cd ${startdir}/src/${pkgname}-${pkgver} - ./configure --prefix=/usr \ - --build=${CHOST} --host=${CHOST} + ./configure --prefix=/usr || return 1 make || return 1 make DESTDIR=${startdir}/pkg install || return 1 } -md5sums=('9843fbea6cc0c4129e96ce9a6c893cf6') diff --git a/abs/core-testing/xf86-input-mutouch/PKGBUILD b/abs/core-testing/xf86-input-mutouch/PKGBUILD index 36da1e3..ce27c8e 100644 --- a/abs/core-testing/xf86-input-mutouch/PKGBUILD +++ b/abs/core-testing/xf86-input-mutouch/PKGBUILD @@ -1,23 +1,22 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 15051 2008-10-12 12:28:57Z jgc $ #Maintainer: Jan de Groot <jgc@archlinux.org> pkgname=xf86-input-mutouch -pkgver=1.1.0 -pkgrel=4 +pkgver=1.2.1 +pkgrel=1 pkgdesc="X.org mutouch input driver" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" depends=('glibc') -makedepends=('pkgconfig' 'xorg-server>=1.1.1') +makedepends=('pkgconfig' 'xorg-server>=1.5.2') groups=('xorg-input-drivers') options=('!libtool') source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) -md5sums=('98ae915c67cabf0e6d40a425dbdbe10b') +md5sums=('f28998cdfae2a4c41589299a4ee1f459') build() { - cd ${startdir}/src/${pkgname}-${pkgver} - ./configure --prefix=/usr \ - --build=${CHOST} --host=${CHOST} + cd "${srcdir}/${pkgname}-${pkgver}" + ./configure --prefix=/usr || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 + make DESTDIR="${pkgdir}" install || return 1 } diff --git a/abs/core-testing/xf86-input-palmax/PKGBUILD b/abs/core-testing/xf86-input-palmax/PKGBUILD index ff5c4b2..45c4da1 100644 --- a/abs/core-testing/xf86-input-palmax/PKGBUILD +++ b/abs/core-testing/xf86-input-palmax/PKGBUILD @@ -1,23 +1,22 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 11159 2008-08-31 14:05:43Z jgc $ #Maintainer: Jan de Groot <jgc@archlinux.org> pkgname=xf86-input-palmax -pkgver=1.1.0 -pkgrel=4 +pkgver=1.2.0 +pkgrel=1 pkgdesc="X.org palmax input driver" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" depends=('glibc') -makedepends=('pkgconfig' 'xorg-server>=1.1.1') +makedepends=('pkgconfig' 'xorg-server>=1.4.99.906') groups=('xorg-input-drivers') options=('!libtool') source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) -md5sums=('0959dbf7972dfb95f56e4bd3f56447cf') +md5sums=('9655d2235569c5a6ac321c6fb89a6f3b') build() { cd ${startdir}/src/${pkgname}-${pkgver} - ./configure --prefix=/usr \ - --build=${CHOST} --host=${CHOST} + ./configure --prefix=/usr || return 1 make || return 1 make DESTDIR=${startdir}/pkg install || return 1 } diff --git a/abs/core-testing/xf86-input-penmount/PKGBUILD b/abs/core-testing/xf86-input-penmount/PKGBUILD index 062401f..b036796 100644 --- a/abs/core-testing/xf86-input-penmount/PKGBUILD +++ b/abs/core-testing/xf86-input-penmount/PKGBUILD @@ -1,23 +1,22 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 11167 2008-08-31 14:06:53Z jgc $ # Maintainer: Alexander Baldeck <alexander@archlinux.org> # Contributor: Jan de Groot <jgc@archlinux.org> pkgname=xf86-input-penmount -pkgver=1.2.1 +pkgver=1.3.0 pkgrel=1 pkgdesc="X.org penmount input driver" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" depends=('glibc') -makedepends=('pkgconfig' 'xorg-server>=1.4') +makedepends=('pkgconfig' 'xorg-server>=1.4.99.906') groups=('xorg-input-drivers') options=('!libtool') source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) build() { cd ${startdir}/src/${pkgname}-${pkgver} - ./configure --prefix=/usr \ - --build=${CHOST} --host=${CHOST} + ./configure --prefix=/usr || return 1 make || return 1 make DESTDIR=${startdir}/pkg install || return 1 } -md5sums=('268af4dceda544d8c815b9b7e87d4536') +md5sums=('24594c0222e631fedccc7c540c420b03') diff --git a/abs/core-testing/xf86-input-summa/PKGBUILD b/abs/core-testing/xf86-input-summa/PKGBUILD index 9b0c9ef..abbae8a 100644 --- a/abs/core-testing/xf86-input-summa/PKGBUILD +++ b/abs/core-testing/xf86-input-summa/PKGBUILD @@ -1,23 +1,22 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 11181 2008-08-31 14:11:07Z jgc $ #Maintainer: Jan de Groot <jgc@archlinux.org> pkgname=xf86-input-summa -pkgver=1.1.0 -pkgrel=4 +pkgver=1.2.0 +pkgrel=1 pkgdesc="X.org summa input driver" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" depends=('glibc') -makedepends=('pkgconfig' 'xorg-server>=1.1.1') +makedepends=('pkgconfig' 'xorg-server>=1.4.99.906') options=('!libtool') groups=('xorg-input-drivers') source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) -md5sums=('b37a432fd87bb9f46d011622d6fce6b3') +md5sums=('7e17468c0d90dcbbb6202a8242efff4b') build() { cd ${startdir}/src/${pkgname}-${pkgver} - ./configure --prefix=/usr \ - --build=${CHOST} --host=${CHOST} + ./configure --prefix=/usr || return 1 make || return 1 make DESTDIR=${startdir}/pkg install || return 1 } diff --git a/abs/core-testing/xf86-input-synaptics/PKGBUILD b/abs/core-testing/xf86-input-synaptics/PKGBUILD new file mode 100644 index 0000000..f92e0fd --- /dev/null +++ b/abs/core-testing/xf86-input-synaptics/PKGBUILD @@ -0,0 +1,31 @@ +# $Id: PKGBUILD 22376 2008-12-26 16:24:10Z jgc $ +# Maintainer: Jan de Groot <jgc@archlinux.org> +# Contributor: Tobias Powalowski <tpowa@archlinux.org> +# Contributor: Thomas Bächler <thomas@archlinux.org> +# Contributor: Alexander Baldeck <alexander@archlinux.org> +pkgname=xf86-input-synaptics +pkgver=0.99.3 +pkgrel=1 +pkgdesc="synaptics driver for notebook touchpads" +arch=(i686 x86_64) +license=('custom') +url="http://w1.894.telia.com/~u89404340/touchpad/" +depends=('libx11') +makedepends=('pkgconfig' 'xorg-server>=1.5.3') +replaces=('synaptics') +provides=('synaptics') +conflicts=('synaptics') +options=(!libtool) +source=(http://xorg.freedesktop.org/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) +md5sums=('735a798e0f68c65d98e3d6b092b56d29') + +build() { + cd "${srcdir}/${pkgname}-${pkgver}" + ./configure --prefix=/usr || return 1 + make || return 1 + make DESTDIR="${pkgdir}" install || return 1 + install -d "${pkgdir}/usr/share/hal/fdi/policy/10osvendor" + install -m644 fdi/*.fdi "${pkgdir}/usr/share/hal/fdi/policy/10osvendor/" || return 1 + install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}" + install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/" || return 1 +} diff --git a/abs/core-testing/xf86-input-tek4957/PKGBUILD b/abs/core-testing/xf86-input-tek4957/PKGBUILD index 2ea7a0f..afa4498 100644 --- a/abs/core-testing/xf86-input-tek4957/PKGBUILD +++ b/abs/core-testing/xf86-input-tek4957/PKGBUILD @@ -1,23 +1,22 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 11210 2008-08-31 14:13:46Z jgc $ #Maintainer: Jan de Groot <jgc@archlinux.org> pkgname=xf86-input-tek4957 -pkgver=1.1.0 -pkgrel=4 +pkgver=1.2.0 +pkgrel=1 pkgdesc="X.org tek4957 input driver" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" depends=('glibc') -makedepends=('pkgconfig' 'xorg-server>=1.1.1') +makedepends=('pkgconfig' 'xorg-server>=1.4.99.906') groups=('xorg-input-drivers') options=('!libtool') source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) -md5sums=('be8a4bd474ad6c85b93f66dd6fcfa6ee') +md5sums=('8103db1ca5c55726e0b58148e4b1fc06') build() { cd ${startdir}/src/${pkgname}-${pkgver} - ./configure --prefix=/usr \ - --build=${CHOST} --host=${CHOST} + ./configure --prefix=/usr || return 1 make || return 1 make DESTDIR=${startdir}/pkg install || return 1 } diff --git a/abs/core-testing/xf86-input-ur98/PKGBUILD b/abs/core-testing/xf86-input-ur98/PKGBUILD index 8fcafc0..6c1ec76 100644 --- a/abs/core-testing/xf86-input-ur98/PKGBUILD +++ b/abs/core-testing/xf86-input-ur98/PKGBUILD @@ -1,4 +1,4 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 20489 2008-12-05 10:09:15Z jgc $ #Maintainer: Jan de Groot <jgc@archlinux.org> pkgname=xf86-input-ur98 @@ -15,9 +15,8 @@ source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) md5sums=('3cf8928411458baaa9e726e51772c550') build() { - cd ${startdir}/src/${pkgname}-${pkgver} - ./configure --prefix=/usr \ - --build=${CHOST} --host=${CHOST} + cd "${srcdir}/${pkgname}-${pkgver}" + ./configure --prefix=/usr || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 + make DESTDIR="${pkgdir}" install || return 1 } diff --git a/abs/core-testing/xf86-input-vmmouse/PKGBUILD b/abs/core-testing/xf86-input-vmmouse/PKGBUILD index 55eed97..6b0ef90 100644 --- a/abs/core-testing/xf86-input-vmmouse/PKGBUILD +++ b/abs/core-testing/xf86-input-vmmouse/PKGBUILD @@ -1,23 +1,26 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 22273 2008-12-25 16:56:34Z jgc $ # Maintainer: Alexander Baldeck <alexander@archlinux.org> # Contributor: Jan de Groot <jgc@archlinux.org> pkgname=xf86-input-vmmouse -pkgver=12.4.3 +pkgver=12.6.3 pkgrel=1 pkgdesc="X.org VMWare Mouse input driver" arch=(i686 x86_64) +license=('custom') url="http://xorg.freedesktop.org/" depends=('glibc') -makedepends=('pkgconfig' 'xorg-server>=1.4') +makedepends=('pkgconfig' 'xorg-server>=1.5.3') +conflicts=('xorg-server<1.5.3') groups=('xorg-input-drivers') options=('!libtool') source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) +md5sums=('f5933143d7789557983ecb527092d14e') build() { - cd ${startdir}/src/${pkgname}-${pkgver} - ./configure --prefix=/usr \ - --build=${CHOST} --host=${CHOST} + cd "${srcdir}/${pkgname}-${pkgver}" + ./configure --prefix=/usr || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 + make DESTDIR="${pkgdir}" install || return 1 + install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}" + install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/" || return 1 } -md5sums=('44730af795616ed4d4a0cd9a3a07935d') diff --git a/abs/core-testing/xf86-input-void/PKGBUILD b/abs/core-testing/xf86-input-void/PKGBUILD index d2d5b2b..ce4b0cf 100644 --- a/abs/core-testing/xf86-input-void/PKGBUILD +++ b/abs/core-testing/xf86-input-void/PKGBUILD @@ -1,23 +1,25 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 11237 2008-08-31 14:17:19Z jgc $ #Maintainer: Jan de Groot <jgc@archlinux.org> pkgname=xf86-input-void -pkgver=1.1.0 -pkgrel=2 +pkgver=1.1.1 +pkgrel=1 pkgdesc="X.org void input driver" arch=(i686 x86_64) +license=('custom') url="http://xorg.freedesktop.org/" depends=('glibc') -makedepends=('pkgconfig' 'xorg-server>=1.1.1') +makedepends=('pkgconfig' 'xorg-server>=1.4.99.906') groups=('xorg-input-drivers') options=('!libtool') source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) -md5sums=('ea72a92d43b95f413347df96d6a73933') +md5sums=('862c230f5f6e0c545f232b4c0fa9537a') build() { cd ${startdir}/src/${pkgname}-${pkgver} - ./configure --prefix=/usr \ - --build=${CHOST} --host=${CHOST} + ./configure --prefix=/usr || return 1 make || return 1 make DESTDIR=${startdir}/pkg install || return 1 + install -m755 -d ${pkgdir}/usr/share/licenses/${pkgname} + install -m644 COPYING ${pkgdir}/usr/share/licenses/${pkgname}/ || return 1 } diff --git a/abs/core-testing/xf86-video-amd/PKGBUILD b/abs/core-testing/xf86-video-amd/PKGBUILD index 1bf6f62..fa31ce0 100644 --- a/abs/core-testing/xf86-video-amd/PKGBUILD +++ b/abs/core-testing/xf86-video-amd/PKGBUILD @@ -1,27 +1,28 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 11397 2008-08-31 14:36:04Z jgc $ # Maintainer: Alexander Baldeck <alexander@archlinux.org> pkgname=xf86-video-amd -pkgver=2.7.7.6 +pkgver=2.7.7.7 pkgrel=1 pkgdesc="X.org AMD/Geode LX & NX video driver" # there is no 64bit geode yet! arch=(i686) +license=('custom') url="http://xorg.freedesktop.org/" -makedepends=('pkgconfig' 'xorg-server>=1.4') +depends=('glibc') +makedepends=('pkgconfig' 'xorg-server>=1.4.99.906') +conflicts=('xorg-server<1.4.99.906') options=('!libtool') -license=('custom:amd') groups=('xorg-video-drivers') source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) +md5sums=('2f3e8c3019afda926e7ab95b074c35e1') build() { cd ${startdir}/src/${pkgname}-${pkgver} ./configure --prefix=/usr \ - --build=${CHOST} --host=${CHOST} \ - --enable-visibility + --enable-visibility || return 1 make || return 1 make DESTDIR=${startdir}/pkg install || return 1 - install -D -m644 ${startdir}/src/${pkgname}-${pkgver}/COPYING \ - ${startdir}/pkg/usr/share/licenses/${pkgname}/COPYING + install -m755 -d ${pkgdir}/usr/share/licenses/${pkgname} + install -m644 COPYING ${pkgdir}/usr/share/licenses/${pkgname}/ || return 1 } -md5sums=('e839cc4552032b7bd44beb72e575980f') diff --git a/abs/core-testing/xf86-video-apm/PKGBUILD b/abs/core-testing/xf86-video-apm/PKGBUILD index 7808dbc..4ed1cff 100644 --- a/abs/core-testing/xf86-video-apm/PKGBUILD +++ b/abs/core-testing/xf86-video-apm/PKGBUILD @@ -1,22 +1,23 @@ -# $Id: PKGBUILD 3262 2008-06-21 18:38:40Z jgc $ +# $Id: PKGBUILD 22289 2008-12-25 17:19:55Z jgc $ # Maintainer: Alexander Baldeck <alexander@archlinux.org> # Contributor: Jan de Groot <jgc@archlinux.org> pkgname=xf86-video-apm -pkgver=1.2.0 +pkgver=1.2.1 pkgrel=1 pkgdesc="X.org Alliance ProMotion video driver" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" depends=('glibc') -makedepends=('pkgconfig' 'xorg-server>=1.4.0.90') +makedepends=('pkgconfig' 'xorg-server>=1.5.3') +conflicts=('xorg-server<1.5.3') groups=('xorg-video-drivers') options=('!libtool') source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) +md5sums=('673c93df004bb857dc89ae9c78ccf907') build() { - cd ${startdir}/src/${pkgname}-${pkgver} - ./configure --prefix=/usr + cd "${srcdir}/${pkgname}-${pkgver}" + ./configure --prefix=/usr || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 + make DESTDIR="${pkgdir}" install || return 1 } -md5sums=('4f78650d79656dc803a720049d65682e') diff --git a/abs/core-testing/xf86-video-ark/PKGBUILD b/abs/core-testing/xf86-video-ark/PKGBUILD index cbe38bd..288686c 100644 --- a/abs/core-testing/xf86-video-ark/PKGBUILD +++ b/abs/core-testing/xf86-video-ark/PKGBUILD @@ -1,22 +1,23 @@ -# $Id: PKGBUILD 3260 2008-06-21 18:36:28Z jgc $ +# $Id: PKGBUILD 22271 2008-12-25 16:54:52Z jgc $ # Maintainer: Alexander Baldeck <alexander@archlinux.org> # Contributor: Jan de Groot <jgc@archlinux.org> pkgname=xf86-video-ark -pkgver=0.7.0 +pkgver=0.7.1 pkgrel=1 pkgdesc="X.org ark video driver" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" depends=('glibc') -makedepends=('pkgconfig' 'xorg-server>=1.4.0.90') +makedepends=('pkgconfig' 'xorg-server>=1.5.3') +conflicts=('xorg-server<1.5.3') options=('!libtool') groups=('xorg-video-drivers') source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) +md5sums=('be91391f061863617018403cdbd2944f') build() { - cd ${startdir}/src/${pkgname}-${pkgver} - ./configure --prefix=/usr + cd "${srcdir}/${pkgname}-${pkgver}" + ./configure --prefix=/usr || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 + make DESTDIR="${pkgdir}" install || return 1 } -md5sums=('6826c556ebe9a1248cbc7f7edd44f956') diff --git a/abs/core-testing/xf86-video-ati/PKGBUILD b/abs/core-testing/xf86-video-ati/PKGBUILD index c95c021..79faa91 100644 --- a/abs/core-testing/xf86-video-ati/PKGBUILD +++ b/abs/core-testing/xf86-video-ati/PKGBUILD @@ -1,51 +1,32 @@ -# $Id: PKGBUILD 3261 2008-06-21 18:38:23Z jgc $ -# Maintainer: Alexander Baldeck <alexander@archlinux.org> -# Contributor: Jan de Groot <jgc@archlinux.org> +# $Id: PKGBUILD 22423 2008-12-26 19:32:02Z jgc $ +# Maintainer: Jan de Groot <jgc@archlinux.org> +# Contributor: Alexander Baldeck <alexander@archlinux.org> pkgname=xf86-video-ati -pkgver=6.8.0 -pkgrel=4 -_mesaver="7.0.3" +pkgver=6.9.0 +pkgrel=6 pkgdesc="X.org ati video driver" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" -depends=('libdrm>=2.3.0') -makedepends=('pkgconfig' 'xorg-server>=1.4' 'imake' 'mesa>=7.0.3' - 'glproto>=1.4.9' 'xf86driproto' 'diffutils') +depends=('libdrm>=2.3.1' 'libgl>=7.2' 'libpciaccess' 'ati-dri>=7.2') +makedepends=('pkgconfig' 'xorg-server>=1.5.0' 'fontsproto' + 'glproto>=1.4.9' 'xf86driproto' 'diffutils' 'xorg-util-macros') +conflicts=('xorg-server<1.5.0') groups=('xorg-video-drivers') options=('!libtool') -license=('custom') source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2 - http://downloads.sourceforge.net/sourceforge/mesa3d/MesaLib-${_mesaver}.tar.bz2) + git-20081021.patch) +md5sums=('afa4873f58ae6fa31fedeb9ed31531db' + 'f2ce4e7fb4e266bbc61fb2d9c7c20a3b') build() { - cd ${startdir}/src/${pkgname}-${pkgver} + cd "${srcdir}/${pkgname}-${pkgver}" + patch -Np1 -i "${srcdir}/git-20081021.patch" || return 1 + libtoolize --force --copy || return 1 + aclocal || return 1 + autoconf || return 1 + automake || return 1 ./configure --prefix=/usr \ - --enable-dri + --enable-dri || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 - - cd ${startdir}/src/Mesa-${_mesaver}/configs - - CONFIG="linux-dri-x86" - [ "$CARCH" = "x86_64" ] && CONFIG="linux-dri-x86-64" - echo "EXTRA_LIB_PATH =" >> ${CONFIG} - # currently commented, see FS#7590 for details - #echo "OPT_FLAGS = ${CFLAGS} -fno-strict-aliasing" >> ${CONFIG} - echo "SRC_DIRS = glx/x11 mesa" >> ${CONFIG} - echo "USING_EGL = 0" >> ${CONFIG} - echo "PROGRAM_DIRS =" >> ${CONFIG} - echo "MKDEP = makedepend" >> ${CONFIG} - echo "DRI_DIRS = r128 radeon r200 r300" >> ${CONFIG} - echo "DRI_DRIVER_SEARCH_DIR = /usr/lib/xorg/modules/dri" >> ${CONFIG} - echo "DRI_DRIVER_INSTALL_DIR = /usr/lib/xorg/modules/dri" >> ${CONFIG} - echo "ARCH_FLAGS += -DGLX_USE_TLS" >> ${CONFIG} - echo "X11_INCLUDES = `pkg-config --cflags-only-I x11`" >> ${CONFIG} - - ln -s ${CONFIG} current - cd ${startdir}/src/Mesa-${_mesaver}/src/mesa - make linux-solo || return 1 - cd drivers/dri - make DESTDIR=${startdir}/pkg install || return 1 + make "DESTDIR=${pkgdir}" install || return 1 } -md5sums=('3c97c7925ebf4162eeb3463e23adc0e3' - 'e6e6379d7793af40a6bc3ce1bace572e') diff --git a/abs/core-testing/xf86-video-ati/git-20081021.patch b/abs/core-testing/xf86-video-ati/git-20081021.patch new file mode 100644 index 0000000..b3a1baf --- /dev/null +++ b/abs/core-testing/xf86-video-ati/git-20081021.patch @@ -0,0 +1,17245 @@ +diff --git a/man/radeon.man b/man/radeon.man +index 03622a0..68029ed 100644 +--- a/man/radeon.man ++++ b/man/radeon.man +@@ -283,7 +283,8 @@ The default value is + .BI "Option \*qEnablePageFlip\*q \*q" boolean \*q + Enable page flipping for 3D acceleration. This will increase performance + but not work correctly in some rare cases, hence the default is +-.B off. ++.B off. ++It is currently only supported on r4xx and older hardware. + .TP + .BI "Option \*qForceMinDotClock\*q \*q" frequency \*q + Override minimum dot clock. Some Radeon BIOSes report a minimum dot +@@ -297,10 +298,9 @@ parameter may be specified as a float value with standard suffixes like + "k", "kHz", "M", "MHz". + .TP + .BI "Option \*qRenderAccel\*q \*q" boolean \*q +-Enables or disables hardware Render acceleration. This driver does not +-support component alpha (subpixel) rendering. It is only supported on +-Radeon series up to and including 9200 (9500/9700 and newer +-unsupported). The default is to ++Enables or disables hardware Render acceleration. It is supported on ++Radeon series up to and including r5xx for EXA and up to and ++including r2xx for XAA. The default is to + .B enable + Render acceleration. + .TP +diff --git a/src/AtomBios/CD_Operations.c b/src/AtomBios/CD_Operations.c +index 509aa0c..58c4ae9 100644 +--- a/src/AtomBios/CD_Operations.c ++++ b/src/AtomBios/CD_Operations.c +@@ -44,7 +44,6 @@ Revision History: + #include "xorg-server.h" + + #include "Decoder.h" +-#include "atombios.h" + + VOID PutDataRegister(PARSER_TEMP_DATA STACK_BASED * pParserTempData); + VOID PutDataPS(PARSER_TEMP_DATA STACK_BASED * pParserTempData); +@@ -231,7 +230,7 @@ UINT32 IndirectInputOutput(PARSER_TEMP_DATA STACK_BASED * pParserTempData) + IndirectIOParserCommands[*pParserTempData->IndirectIOTablePointer].func(pParserTempData); + pParserTempData->IndirectIOTablePointer+=IndirectIOParserCommands[*pParserTempData->IndirectIOTablePointer].csize; + } +- pParserTempData->IndirectIOTablePointer-=*(UINT16*)(pParserTempData->IndirectIOTablePointer+1); ++ pParserTempData->IndirectIOTablePointer-=UINT16LE_TO_CPU(*(UINT16*)(pParserTempData->IndirectIOTablePointer+1)); + pParserTempData->IndirectIOTablePointer++; + return pParserTempData->IndirectData; + } else pParserTempData->IndirectIOTablePointer+=IndirectIOParserCommands[*pParserTempData->IndirectIOTablePointer].csize; +@@ -243,7 +242,7 @@ UINT32 IndirectInputOutput(PARSER_TEMP_DATA STACK_BASED * pParserTempData) + + VOID PutDataRegister(PARSER_TEMP_DATA STACK_BASED * pParserTempData) + { +- pParserTempData->Index=(UINT32)pParserTempData->pCmd->Parameters.WordXX.PA_Destination; ++ pParserTempData->Index=(UINT32)UINT16LE_TO_CPU(pParserTempData->pCmd->Parameters.WordXX.PA_Destination); + pParserTempData->Index+=pParserTempData->CurrentRegBlock; + switch(pParserTempData->Multipurpose.CurrentPort){ + case ATI_RegsPort: +@@ -269,16 +268,16 @@ VOID PutDataRegister(PARSER_TEMP_DATA STACK_BASED * pParserTempData) + VOID PutDataPS(PARSER_TEMP_DATA STACK_BASED * pParserTempData) + { + *(pParserTempData->pDeviceData->pParameterSpace+pParserTempData->pCmd->Parameters.ByteXX.PA_Destination)= +- pParserTempData->DestData32; ++ CPU_TO_UINT32LE(pParserTempData->DestData32); + } + + VOID PutDataWS(PARSER_TEMP_DATA STACK_BASED * pParserTempData) + { + if (pParserTempData->pCmd->Parameters.ByteXX.PA_Destination < WS_QUOTIENT_C) +- *(pParserTempData->pWorkingTableData->pWorkSpace+pParserTempData->pCmd->Parameters.ByteXX.PA_Destination) = pParserTempData->DestData32; ++ *(pParserTempData->pWorkingTableData->pWorkSpace+pParserTempData->pCmd->Parameters.ByteXX.PA_Destination) = pParserTempData->DestData32; + else +- switch (pParserTempData->pCmd->Parameters.ByteXX.PA_Destination) +- { ++ switch (pParserTempData->pCmd->Parameters.ByteXX.PA_Destination) ++ { + case WS_REMINDER_C: + pParserTempData->MultiplicationOrDivision.Division.Reminder32=pParserTempData->DestData32; + break; +@@ -339,7 +338,7 @@ VOID SkipParameters16(PARSER_TEMP_DATA STACK_BASED * pParserTempData) + + UINT32 GetParametersRegister(PARSER_TEMP_DATA STACK_BASED * pParserTempData) + { +- pParserTempData->Index=*(UINT16*)pParserTempData->pWorkingTableData->IP; ++ pParserTempData->Index=UINT16LE_TO_CPU(*(UINT16*)pParserTempData->pWorkingTableData->IP); + pParserTempData->pWorkingTableData->IP+=sizeof(UINT16); + pParserTempData->Index+=pParserTempData->CurrentRegBlock; + switch(pParserTempData->Multipurpose.CurrentPort) +@@ -361,9 +360,11 @@ UINT32 GetParametersRegister(PARSER_TEMP_DATA STACK_BASED * pParserTempData) + + UINT32 GetParametersPS(PARSER_TEMP_DATA STACK_BASED * pParserTempData) + { ++ UINT32 data; + pParserTempData->Index=*pParserTempData->pWorkingTableData->IP; + pParserTempData->pWorkingTableData->IP+=sizeof(UINT8); +- return *(pParserTempData->pDeviceData->pParameterSpace+pParserTempData->Index); ++ data = UINT32LE_TO_CPU(*(pParserTempData->pDeviceData->pParameterSpace+pParserTempData->Index)); ++ return data; + } + + UINT32 GetParametersWS(PARSER_TEMP_DATA STACK_BASED * pParserTempData) +@@ -419,9 +420,12 @@ UINT32 GetParametersMC(PARSER_TEMP_DATA STACK_BASED * pParserTempData) + + UINT32 GetParametersIndirect(PARSER_TEMP_DATA STACK_BASED * pParserTempData) + { +- pParserTempData->Index=*(UINT16*)pParserTempData->pWorkingTableData->IP; ++ UINT32 ret; ++ ++ pParserTempData->Index=UINT16LE_TO_CPU(*(UINT16*)pParserTempData->pWorkingTableData->IP); + pParserTempData->pWorkingTableData->IP+=sizeof(UINT16); +- return *(UINT32*)(RELATIVE_TO_BIOS_IMAGE(pParserTempData->Index)+pParserTempData->CurrentDataBlock); ++ ret = UINT32LE_TO_CPU(*(UINT32*)(RELATIVE_TO_BIOS_IMAGE(pParserTempData->Index)+pParserTempData->CurrentDataBlock)); ++ return ret; + } + + UINT32 GetParametersDirect8(PARSER_TEMP_DATA STACK_BASED * pParserTempData) +@@ -435,7 +439,7 @@ UINT32 GetParametersDirect8(PARSER_TEMP_DATA STACK_BASED * pParserTempData) + UINT32 GetParametersDirect16(PARSER_TEMP_DATA STACK_BASED * pParserTempData) + { + pParserTempData->CD_Mask.SrcAlignment=alignmentLowerWord; +- pParserTempData->Index=*(UINT16*)pParserTempData->pWorkingTableData->IP; ++ pParserTempData->Index=UINT16LE_TO_CPU(*(UINT16*)pParserTempData->pWorkingTableData->IP); + pParserTempData->pWorkingTableData->IP+=sizeof(UINT16); + return pParserTempData->Index; + } +@@ -443,7 +447,7 @@ UINT32 GetParametersDirect16(PARSER_TEMP_DATA STACK_BASED * pParserTempData) + UINT32 GetParametersDirect32(PARSER_TEMP_DATA STACK_BASED * pParserTempData) + { + pParserTempData->CD_Mask.SrcAlignment=alignmentDword; +- pParserTempData->Index=*(UINT32*)pParserTempData->pWorkingTableData->IP; ++ pParserTempData->Index=UINT32LE_TO_CPU(*(UINT32*)pParserTempData->pWorkingTableData->IP); + pParserTempData->pWorkingTableData->IP+=sizeof(UINT32); + return pParserTempData->Index; + } +@@ -474,7 +478,7 @@ VOID ProcessMove(PARSER_TEMP_DATA STACK_BASED * pParserTempData) + { + if (pParserTempData->CD_Mask.SrcAlignment!=alignmentDword) + { +- pParserTempData->DestData32=GetDestination[pParserTempData->ParametersType.Destination](pParserTempData); ++ pParserTempData->DestData32=GetDestination[pParserTempData->ParametersType.Destination](pParserTempData); + } else + { + SkipDestination[pParserTempData->ParametersType.Destination](pParserTempData); +@@ -664,7 +668,8 @@ VOID ProcessSwitch(PARSER_TEMP_DATA STACK_BASED * pParserTempData){ + pParserTempData->SourceData32=GetSource[pParserTempData->ParametersType.Source](pParserTempData); + pParserTempData->SourceData32 >>= SourceAlignmentShift[pParserTempData->CD_Mask.SrcAlignment]; + pParserTempData->SourceData32 &= AlignmentMask[pParserTempData->CD_Mask.SrcAlignment]; +- while ( *(UINT16*)pParserTempData->pWorkingTableData->IP != (((UINT16)NOP_OPCODE << 8)+NOP_OPCODE)) ++ ++ while ( UINT16LE_TO_CPU(*(UINT16*)pParserTempData->pWorkingTableData->IP) != (((UINT16)NOP_OPCODE << 8)+NOP_OPCODE)) + { + if (*pParserTempData->pWorkingTableData->IP == 'c') + { +@@ -673,7 +678,7 @@ VOID ProcessSwitch(PARSER_TEMP_DATA STACK_BASED * pParserTempData){ + pParserTempData->Index=GetParametersDirect16(pParserTempData); + if (pParserTempData->SourceData32 == pParserTempData->DestData32) + { +- pParserTempData->pWorkingTableData->IP= RELATIVE_TO_TABLE(pParserTempData->Index); ++ pParserTempData->pWorkingTableData->IP= RELATIVE_TO_TABLE(pParserTempData->Index); + return; + } + } +@@ -695,7 +700,7 @@ VOID cmdSetDataBlock(PARSER_TEMP_DATA STACK_BASED * pParserTempData) + } else + { + pMasterDataTable = GetDataMasterTablePointer(pParserTempData->pDeviceData); +- pParserTempData->CurrentDataBlock= (TABLE_UNIT_TYPE)((PTABLE_UNIT_TYPE)pMasterDataTable)[value]; ++ pParserTempData->CurrentDataBlock= UINT16LE_TO_CPU((TABLE_UNIT_TYPE)((PTABLE_UNIT_TYPE)pMasterDataTable)[value]); + } + } + pParserTempData->pWorkingTableData->IP+=sizeof(COMMAND_TYPE_OPCODE_VALUE_BYTE); +@@ -704,13 +709,13 @@ VOID cmdSetDataBlock(PARSER_TEMP_DATA STACK_BASED * pParserTempData) + VOID cmdSet_ATI_Port(PARSER_TEMP_DATA STACK_BASED * pParserTempData) + { + pParserTempData->Multipurpose.CurrentPort=ATI_RegsPort; +- pParserTempData->CurrentPortID = (UINT8)((COMMAND_TYPE_1*)pParserTempData->pWorkingTableData->IP)->Parameters.WordXX.PA_Destination; ++ pParserTempData->CurrentPortID = (UINT8)UINT16LE_TO_CPU(((COMMAND_TYPE_1*)pParserTempData->pWorkingTableData->IP)->Parameters.WordXX.PA_Destination); + pParserTempData->pWorkingTableData->IP+=sizeof(COMMAND_TYPE_OPCODE_OFFSET16); + } + + VOID cmdSet_Reg_Block(PARSER_TEMP_DATA STACK_BASED * pParserTempData) + { +- pParserTempData->CurrentRegBlock = ((COMMAND_TYPE_1*)pParserTempData->pWorkingTableData->IP)->Parameters.WordXX.PA_Destination; ++ pParserTempData->CurrentRegBlock = UINT16LE_TO_CPU(((COMMAND_TYPE_1*)pParserTempData->pWorkingTableData->IP)->Parameters.WordXX.PA_Destination); + pParserTempData->pWorkingTableData->IP+=sizeof(COMMAND_TYPE_OPCODE_OFFSET16); + } + +@@ -754,19 +759,23 @@ VOID ProcessDebug(PARSER_TEMP_DATA STACK_BASED * pParserTempData) + + VOID ProcessDS(PARSER_TEMP_DATA STACK_BASED * pParserTempData) + { +- pParserTempData->pWorkingTableData->IP+=((COMMAND_TYPE_1*)pParserTempData->pWorkingTableData->IP)->Parameters.WordXX.PA_Destination+sizeof(COMMAND_TYPE_OPCODE_OFFSET16); ++ pParserTempData->pWorkingTableData->IP+=UINT16LE_TO_CPU(((COMMAND_TYPE_1*)pParserTempData->pWorkingTableData->IP)->Parameters.WordXX.PA_Destination)+sizeof(COMMAND_TYPE_OPCODE_OFFSET16); + } + + +-VOID cmdCall_Table(PARSER_TEMP_DATA STACK_BASED * pParserTempData){ ++VOID cmdCall_Table(PARSER_TEMP_DATA STACK_BASED * pParserTempData) ++{ + UINT16* MasterTableOffset; + pParserTempData->pWorkingTableData->IP+=sizeof(COMMAND_TYPE_OPCODE_VALUE_BYTE); + MasterTableOffset = GetCommandMasterTablePointer(pParserTempData->pDeviceData); + if(((PTABLE_UNIT_TYPE)MasterTableOffset)[((COMMAND_TYPE_OPCODE_VALUE_BYTE*)pParserTempData->pCmd)->Value]!=0 ) // if the offset is not ZERO + { ++ ATOM_TABLE_ATTRIBUTE lTableAttr; ++ + pParserTempData->CommandSpecific.IndexInMasterTable=GetTrueIndexInMasterTable(pParserTempData,((COMMAND_TYPE_OPCODE_VALUE_BYTE*)pParserTempData->pCmd)->Value); +- pParserTempData->Multipurpose.PS_SizeInDwordsUsedByCallingTable = +- (((ATOM_COMMON_ROM_COMMAND_TABLE_HEADER *)pParserTempData->pWorkingTableData->pTableHead)->TableAttribute.PS_SizeInBytes>>2); ++ ++ lTableAttr = GetCommandTableAttribute(pParserTempData->pWorkingTableData->pTableHead); ++ pParserTempData->Multipurpose.PS_SizeInDwordsUsedByCallingTable = (lTableAttr.PS_SizeInBytes >>2); + pParserTempData->pDeviceData->pParameterSpace+= + pParserTempData->Multipurpose.PS_SizeInDwordsUsedByCallingTable; + pParserTempData->Status=CD_CALL_TABLE; +@@ -792,7 +801,7 @@ VOID ProcessJump(PARSER_TEMP_DATA STACK_BASED * pParserTempData) + (pParserTempData->ParametersType.Destination == pParserTempData->CompareFlags )) + { + +- pParserTempData->pWorkingTableData->IP= RELATIVE_TO_TABLE(((COMMAND_TYPE_OPCODE_OFFSET16*)pParserTempData->pWorkingTableData->IP)->CD_Offset16); ++ pParserTempData->pWorkingTableData->IP= RELATIVE_TO_TABLE(UINT16LE_TO_CPU(((COMMAND_TYPE_OPCODE_OFFSET16*)pParserTempData->pWorkingTableData->IP)->CD_Offset16)); + } else + { + pParserTempData->pWorkingTableData->IP+=sizeof(COMMAND_TYPE_OPCODE_OFFSET16); +@@ -805,7 +814,7 @@ VOID ProcessJumpE(PARSER_TEMP_DATA STACK_BASED * pParserTempData) + (pParserTempData->CompareFlags == pParserTempData->ParametersType.Destination)) + { + +- pParserTempData->pWorkingTableData->IP= RELATIVE_TO_TABLE(((COMMAND_TYPE_OPCODE_OFFSET16*)pParserTempData->pWorkingTableData->IP)->CD_Offset16); ++ pParserTempData->pWorkingTableData->IP= RELATIVE_TO_TABLE(UINT16LE_TO_CPU(((COMMAND_TYPE_OPCODE_OFFSET16*)pParserTempData->pWorkingTableData->IP)->CD_Offset16)); + } else + { + pParserTempData->pWorkingTableData->IP+=sizeof(COMMAND_TYPE_OPCODE_OFFSET16); +@@ -817,7 +826,7 @@ VOID ProcessJumpNE(PARSER_TEMP_DATA STACK_BASED * pParserTempData) + if (pParserTempData->CompareFlags != Equal) + { + +- pParserTempData->pWorkingTableData->IP= RELATIVE_TO_TABLE(((COMMAND_TYPE_OPCODE_OFFSET16*)pParserTempData->pWorkingTableData->IP)->CD_Offset16); ++ pParserTempData->pWorkingTableData->IP= RELATIVE_TO_TABLE(UINT16LE_TO_CPU(((COMMAND_TYPE_OPCODE_OFFSET16*)pParserTempData->pWorkingTableData->IP)->CD_Offset16)); + } else + { + pParserTempData->pWorkingTableData->IP+=sizeof(COMMAND_TYPE_OPCODE_OFFSET16); +diff --git a/src/AtomBios/Decoder.c b/src/AtomBios/Decoder.c +index e8b3b6e..73aac94 100644 +--- a/src/AtomBios/Decoder.c ++++ b/src/AtomBios/Decoder.c +@@ -40,12 +40,9 @@ Revision History: + #endif + + #include <X11/Xos.h> +- ++#include "xorg-server.h" + + #include "Decoder.h" +-#include "atombios.h" +-#include "CD_binding.h" +-#include "CD_Common_Types.h" + + #ifndef DISABLE_EASF + #include "easf.h" +@@ -77,13 +74,13 @@ UINT16* GetCommandMasterTablePointer(DEVICE_DATA STACK_BASED* pDeviceData) + /* + make MasterTableOffset point to EASF_ASIC_SETUP_TABLE structure, including usSize. + */ +- MasterTableOffset = (UINT16 *) (pDeviceData->pBIOS_Image+((EASF_ASIC_DESCRIPTOR*)pDeviceData->pBIOS_Image)->usAsicSetupTable_Offset); ++ MasterTableOffset = (UINT16 *) (pDeviceData->pBIOS_Image+(UINT16LE_TO_CPU(((EASF_ASIC_DESCRIPTOR*)pDeviceData->pBIOS_Image)->usAsicSetupTable_Offset)); + } else + #endif + { + #ifndef UEFI_BUILD +- MasterTableOffset = (UINT16 *)(*(UINT16 *)(pDeviceData->pBIOS_Image+OFFSET_TO_POINTER_TO_ATOM_ROM_HEADER) + pDeviceData->pBIOS_Image); +- MasterTableOffset = (UINT16 *)((ULONG)((ATOM_ROM_HEADER *)MasterTableOffset)->usMasterCommandTableOffset + pDeviceData->pBIOS_Image ); ++ MasterTableOffset = (UINT16 *)(UINT16LE_TO_CPU(*(UINT16 *)(pDeviceData->pBIOS_Image+OFFSET_TO_POINTER_TO_ATOM_ROM_HEADER)) + pDeviceData->pBIOS_Image); ++ MasterTableOffset = (UINT16 *)((ULONG)UINT16LE_TO_CPU(((ATOM_ROM_HEADER *)MasterTableOffset)->usMasterCommandTableOffset) + pDeviceData->pBIOS_Image ); + MasterTableOffset =(UINT16 *) &(((ATOM_MASTER_COMMAND_TABLE *)MasterTableOffset)->ListOfCommandTables); + #else + MasterTableOffset = (UINT16 *)(&(GetCommandMasterTable( )->ListOfCommandTables)); +@@ -97,8 +94,8 @@ UINT16* GetDataMasterTablePointer(DEVICE_DATA STACK_BASED* pDeviceData) + UINT16 *MasterTableOffset; + + #ifndef UEFI_BUILD +- MasterTableOffset = (UINT16 *)(*(UINT16 *)(pDeviceData->pBIOS_Image+OFFSET_TO_POINTER_TO_ATOM_ROM_HEADER) + pDeviceData->pBIOS_Image); +- MasterTableOffset = (UINT16 *)((ULONG)((ATOM_ROM_HEADER *)MasterTableOffset)->usMasterDataTableOffset + pDeviceData->pBIOS_Image ); ++ MasterTableOffset = (UINT16 *)(UINT16LE_TO_CPU(*(UINT16 *)(pDeviceData->pBIOS_Image+OFFSET_TO_POINTER_TO_ATOM_ROM_HEADER)) + pDeviceData->pBIOS_Image); ++ MasterTableOffset = (UINT16 *)((ULONG)(UINT16LE_TO_CPU(((ATOM_ROM_HEADER *)MasterTableOffset)->usMasterDataTableOffset)) + pDeviceData->pBIOS_Image ); + MasterTableOffset =(UINT16 *) &(((ATOM_MASTER_DATA_TABLE *)MasterTableOffset)->ListOfDataTables); + #else + MasterTableOffset = (UINT16 *)(&(GetDataMasterTable( )->ListOfDataTables)); +@@ -129,11 +126,29 @@ UINT8 GetTrueIndexInMasterTable(PARSER_TEMP_DATA STACK_BASED * pParserTempData, + } + } + ++ATOM_TABLE_ATTRIBUTE GetCommandTableAttribute(UINT8 *pTableHeader) ++{ ++ ATOM_TABLE_ATTRIBUTE_ACCESS lTableAccess; ++ ++ /* It's unclear whether this union trick breaks C aliasing rules, ++ * however, it's explicitely permitted by gcc, and we have other ++ * case where the code relies on a union being accessed by either ++ * of the "ways" and stay consistent so if a compiler breaks this ++ * assumption, it will probably need us to compile without strict ++ * aliasing enforcement ++ */ ++ lTableAccess.sbfAccess = ((ATOM_COMMON_ROM_COMMAND_TABLE_HEADER *)pTableHeader)->TableAttribute; ++ lTableAccess.susAccess = UINT16LE_TO_CPU(lTableAccess.susAccess); ++ ++ return lTableAccess.sbfAccess; ++} ++ + CD_STATUS ParseTable(DEVICE_DATA STACK_BASED* pDeviceData, UINT8 IndexInMasterTable) + { + PARSER_TEMP_DATA ParserTempData; + WORKING_TABLE_DATA STACK_BASED* prevWorkingTableData; + ++ memset(&ParserTempData, 0, sizeof(PARSER_TEMP_DATA)); + ParserTempData.pDeviceData=(DEVICE_DATA*)pDeviceData; + #ifndef DISABLE_EASF + if (pDeviceData->format == TABLE_FORMAT_EASF) +@@ -143,7 +158,7 @@ CD_STATUS ParseTable(DEVICE_DATA STACK_BASED* pDeviceData, UINT8 IndexInMasterTa + #endif + { + ParserTempData.pCmd=(GENERIC_ATTRIBUTE_COMMAND*)GetDataMasterTablePointer(pDeviceData); +- ParserTempData.IndirectIOTablePointer=(UINT8*)((ULONG)(((PTABLE_UNIT_TYPE)ParserTempData.pCmd)[INDIRECT_IO_TABLE]) + pDeviceData->pBIOS_Image); ++ ParserTempData.IndirectIOTablePointer=(UINT8*)((ULONG)(UINT16LE_TO_CPU(((PTABLE_UNIT_TYPE)ParserTempData.pCmd)[INDIRECT_IO_TABLE])) + pDeviceData->pBIOS_Image); + ParserTempData.IndirectIOTablePointer+=sizeof(ATOM_COMMON_TABLE_HEADER); + } + +@@ -160,65 +175,66 @@ CD_STATUS ParseTable(DEVICE_DATA STACK_BASED* pDeviceData, UINT8 IndexInMasterTa + ParserTempData.Status=CD_CALL_TABLE; + + do{ +- ++ + if (ParserTempData.Status==CD_CALL_TABLE) +- { ++ { + IndexInMasterTable=ParserTempData.CommandSpecific.IndexInMasterTable; + if(((PTABLE_UNIT_TYPE)ParserTempData.pCmd)[IndexInMasterTable]!=0) // if the offset is not ZERO +- { ++ { ++ ATOM_TABLE_ATTRIBUTE lTableAttr; ++ lTableAttr = GetCommandTableAttribute(UINT16LE_TO_CPU(((PTABLE_UNIT_TYPE)ParserTempData.pCmd)[IndexInMasterTable])+pDeviceData->pBIOS_Image); + #ifndef UEFI_BUILD + ParserTempData.pWorkingTableData =(WORKING_TABLE_DATA STACK_BASED*) AllocateWorkSpace(pDeviceData, +- ((ATOM_COMMON_ROM_COMMAND_TABLE_HEADER*)(((PTABLE_UNIT_TYPE)ParserTempData.pCmd)[IndexInMasterTable]+pDeviceData->pBIOS_Image))->TableAttribute.WS_SizeInBytes+sizeof(WORKING_TABLE_DATA)); ++ lTableAttr.WS_SizeInBytes+sizeof(WORKING_TABLE_DATA)); + #else +- ParserTempData.pWorkingTableData =(WORKING_TABLE_DATA STACK_BASED*) AllocateWorkSpace(pDeviceData, +- ((ATOM_COMMON_ROM_COMMAND_TABLE_HEADER*)(((PTABLE_UNIT_TYPE)ParserTempData.pCmd)[IndexInMasterTable]))->TableAttribute.WS_SizeInBytes+sizeof(WORKING_TABLE_DATA)); ++ ParserTempData.pWorkingTableData =(WORKING_TABLE_DATA STACK_BASED*) AllocateWorkSpace(pDeviceData, ++ lTableAttr.WS_SizeInBytes+sizeof(WORKING_TABLE_DATA)); + #endif +- if (ParserTempData.pWorkingTableData!=NULL) +- { +- ParserTempData.pWorkingTableData->pWorkSpace=(WORKSPACE_POINTER STACK_BASED*)((UINT8*)ParserTempData.pWorkingTableData+sizeof(WORKING_TABLE_DATA)); ++ if (ParserTempData.pWorkingTableData!=NULL) ++ { ++ ParserTempData.pWorkingTableData->pWorkSpace=(WORKSPACE_POINTER STACK_BASED*)((UINT8*)ParserTempData.pWorkingTableData+sizeof(WORKING_TABLE_DATA)); + #ifndef UEFI_BUILD +- ParserTempData.pWorkingTableData->pTableHead = (UINT8 *)(((PTABLE_UNIT_TYPE)ParserTempData.pCmd)[IndexInMasterTable]+pDeviceData->pBIOS_Image); ++ ParserTempData.pWorkingTableData->pTableHead = (UINT8 *)(UINT16LE_TO_CPU(((PTABLE_UNIT_TYPE)ParserTempData.pCmd)[IndexInMasterTable])+pDeviceData->pBIOS_Image); + #else +- ParserTempData.pWorkingTableData->pTableHead = (UINT8 *)(((PTABLE_UNIT_TYPE)ParserTempData.pCmd)[IndexInMasterTable]); ++ ParserTempData.pWorkingTableData->pTableHead = (UINT8 *)(UINT16LE_TO_CPU(((PTABLE_UNIT_TYPE)ParserTempData.pCmd)[IndexInMasterTable])); + #endif +- ParserTempData.pWorkingTableData->IP=((UINT8*)ParserTempData.pWorkingTableData->pTableHead)+sizeof(ATOM_COMMON_ROM_COMMAND_TABLE_HEADER); +- ParserTempData.pWorkingTableData->prevWorkingTableData=prevWorkingTableData; +- prevWorkingTableData=ParserTempData.pWorkingTableData; +- ParserTempData.Status = CD_SUCCESS; +- } else ParserTempData.Status = CD_UNEXPECTED_BEHAVIOR; +- } else ParserTempData.Status = CD_EXEC_TABLE_NOT_FOUND; ++ ParserTempData.pWorkingTableData->IP=((UINT8*)ParserTempData.pWorkingTableData->pTableHead)+sizeof(ATOM_COMMON_ROM_COMMAND_TABLE_HEADER); ++ ParserTempData.pWorkingTableData->prevWorkingTableData=prevWorkingTableData; ++ prevWorkingTableData=ParserTempData.pWorkingTableData; ++ ParserTempData.Status = CD_SUCCESS; ++ } else ParserTempData.Status = CD_UNEXPECTED_BEHAVIOR; ++ } else ParserTempData.Status = CD_EXEC_TABLE_NOT_FOUND; + } + if (!CD_ERROR(ParserTempData.Status)) + { +- ParserTempData.Status = CD_SUCCESS; ++ ParserTempData.Status = CD_SUCCESS; + while (!CD_ERROR_OR_COMPLETED(ParserTempData.Status)) +- { +- ++ { + if (IS_COMMAND_VALID(((COMMAND_HEADER*)ParserTempData.pWorkingTableData->IP)->Opcode)) +- { ++ { + ParserTempData.pCmd = (GENERIC_ATTRIBUTE_COMMAND*)ParserTempData.pWorkingTableData->IP; +- ++ + if (IS_END_OF_TABLE(((COMMAND_HEADER*)ParserTempData.pWorkingTableData->IP)->Opcode)) + { + ParserTempData.Status=CD_COMPLETED; +- prevWorkingTableData=ParserTempData.pWorkingTableData->prevWorkingTableData; +- ++ prevWorkingTableData=ParserTempData.pWorkingTableData->prevWorkingTableData; ++ + FreeWorkSpace(pDeviceData, ParserTempData.pWorkingTableData); +- ParserTempData.pWorkingTableData=prevWorkingTableData; +- if (prevWorkingTableData!=NULL) +- { +- ParserTempData.pDeviceData->pParameterSpace-= +- (((ATOM_COMMON_ROM_COMMAND_TABLE_HEADER*)ParserTempData.pWorkingTableData-> +- pTableHead)->TableAttribute.PS_SizeInBytes>>2); +- } +- // if there is a parent table where to return, then restore PS_pointer to the original state ++ ParserTempData.pWorkingTableData=prevWorkingTableData; ++ if (prevWorkingTableData!=NULL) ++ { ++ ATOM_TABLE_ATTRIBUTE lTableAttr; ++ lTableAttr = GetCommandTableAttribute(ParserTempData.pWorkingTableData->pTableHead); ++ ParserTempData.pDeviceData->pParameterSpace-=(lTableAttr.PS_SizeInBytes>>2); ++ } ++ // if there is a parent table where to return, then restore PS_pointer to the original state + } + else + { +- IndexInMasterTable=ProcessCommandProperties((PARSER_TEMP_DATA STACK_BASED *)&ParserTempData); ++ IndexInMasterTable=ProcessCommandProperties((PARSER_TEMP_DATA STACK_BASED *)&ParserTempData); + (*CallTable[IndexInMasterTable].function)((PARSER_TEMP_DATA STACK_BASED *)&ParserTempData); + #if (PARSER_TYPE!=DRIVER_TYPE_PARSER) +- BIOS_STACK_MODIFIER(); ++ BIOS_STACK_MODIFIER(); + #endif + } + } +@@ -227,13 +243,13 @@ CD_STATUS ParseTable(DEVICE_DATA STACK_BASED* pDeviceData, UINT8 IndexInMasterTa + ParserTempData.Status=CD_INVALID_OPCODE; + break; + } +- ++ + } // while + } // if + else + break; + } while (prevWorkingTableData!=NULL); +- if (ParserTempData.Status == CD_COMPLETED) return CD_SUCCESS; ++ if (ParserTempData.Status == CD_COMPLETED) return CD_SUCCESS; + return ParserTempData.Status; + } else return CD_SUCCESS; + } +diff --git a/src/AtomBios/hwserv_drv.c b/src/AtomBios/hwserv_drv.c +index a5f5a5b..9f2b6b9 100644 +--- a/src/AtomBios/hwserv_drv.c ++++ b/src/AtomBios/hwserv_drv.c +@@ -34,8 +34,14 @@ Revision History: + + NEG:27.09.2002 Initiated. + --*/ +-#include "CD_binding.h" +-#include "CD_hw_services.h" ++#ifdef HAVE_CONFIG_H ++#include "config.h" ++#endif ++ ++#include <X11/Xos.h> ++#include "xorg-server.h" ++ ++#include "Decoder.h" + + //trace settings + #if DEBUG_OUTPUT_DEVICE & 1 +@@ -249,12 +255,12 @@ VOID WriteReg32(PARSER_TEMP_DATA STACK_BASED * pWorkingTableData) + + VOID ReadIndReg32 (PARSER_TEMP_DATA STACK_BASED * pWorkingTableData) + { +- pWorkingTableData->IndirectData = CailReadATIRegister(pWorkingTableData->pDeviceData->CAIL,*(UINT16*)(pWorkingTableData->IndirectIOTablePointer+1)); ++ pWorkingTableData->IndirectData = CailReadATIRegister(pWorkingTableData->pDeviceData->CAIL,UINT16LE_TO_CPU(*(UINT16*)(pWorkingTableData->IndirectIOTablePointer+1))); + } + + VOID WriteIndReg32(PARSER_TEMP_DATA STACK_BASED * pWorkingTableData) + { +- CailWriteATIRegister(pWorkingTableData->pDeviceData->CAIL,*(UINT16*)(pWorkingTableData->IndirectIOTablePointer+1),pWorkingTableData->IndirectData ); ++ CailWriteATIRegister(pWorkingTableData->pDeviceData->CAIL,UINT16LE_TO_CPU(*(UINT16*)(pWorkingTableData->IndirectIOTablePointer+1)),pWorkingTableData->IndirectData); + } + + #endif +diff --git a/src/AtomBios/includes/CD_Common_Types.h b/src/AtomBios/includes/CD_Common_Types.h +index c60b652..071b8fd 100644 +--- a/src/AtomBios/includes/CD_Common_Types.h ++++ b/src/AtomBios/includes/CD_Common_Types.h +@@ -155,6 +155,18 @@ typedef unsigned long ULONG_PTR; + #ifndef FGL_LINUX + #pragma warning ( default : 4142 ) + #endif ++ ++#ifndef ATOM_BIG_ENDIAN ++#ifdef X_BYTE_ORDER ++#if X_BYTE_ORDER == X_BIG_ENDIAN ++#define ATOM_BIG_ENDIAN 1 ++#endif ++#endif ++#endif ++#ifndef ATOM_BIG_ENDIAN ++#define ATOM_BIG_ENDIAN 0 ++#endif ++ + #endif // _COMMON_TYPES_H_ + + // EOF +diff --git a/src/AtomBios/includes/CD_Definitions.h b/src/AtomBios/includes/CD_Definitions.h +index 98fd495..c00e93e 100644 +--- a/src/AtomBios/includes/CD_Definitions.h ++++ b/src/AtomBios/includes/CD_Definitions.h +@@ -39,11 +39,12 @@ NEG:27.08.2002 Initiated. + #ifndef _CD_DEFINITIONS_H + #define _CD_DEFINITIONS_H_ + #ifdef DRIVER_PARSER +-VOID *AllocateMemory(VOID *, UINT16); ++VOID *AllocateMemory(DEVICE_DATA *, UINT16); + VOID ReleaseMemory(DEVICE_DATA * , WORKING_TABLE_DATA* ); + #endif + CD_STATUS ParseTable(DEVICE_DATA* pDeviceData, UINT8 IndexInMasterTable); + //CD_STATUS CD_MainLoop(PARSER_TEMP_DATA_POINTER pParserTempData); + CD_STATUS Main_Loop(DEVICE_DATA* pDeviceData,UINT16 *MasterTableOffset,UINT8 IndexInMasterTable); + UINT16* GetCommandMasterTablePointer(DEVICE_DATA* pDeviceData); ++ATOM_TABLE_ATTRIBUTE GetCommandTableAttribute(UINT8 *pTableHeader); + #endif //CD_DEFINITIONS +diff --git a/src/AtomBios/includes/CD_Structs.h b/src/AtomBios/includes/CD_Structs.h +index c43f81d..01fb80e 100644 +--- a/src/AtomBios/includes/CD_Structs.h ++++ b/src/AtomBios/includes/CD_Structs.h +@@ -35,10 +35,18 @@ Revision History: + NEG:26.08.2002 Initiated. + --*/ + +-#include "CD_binding.h" + #ifndef _CD_STRUCTS_H_ + #define _CD_STRUCTS_H_ + ++#include "CD_binding.h" ++ ++/* Endaianness should be specified before inclusion, ++ * default to little endian ++ */ ++#ifndef ATOM_BIG_ENDIAN ++#error Endian not specified ++#endif ++ + #ifdef UEFI_BUILD + typedef UINT16** PTABLE_UNIT_TYPE; + typedef UINTN TABLE_UNIT_TYPE; +@@ -304,9 +312,15 @@ typedef union _PARAMETER_ACCESS { + }PARAMETER_ACCESS; + + typedef struct _COMMAND_ATTRIBUTE { ++#if ATOM_BIG_ENDIAN ++ UINT8 DestinationAlignment:2; ++ UINT8 SourceAlignment:3; ++ UINT8 Source:3; ++#else + UINT8 Source:3; + UINT8 SourceAlignment:3; + UINT8 DestinationAlignment:2; ++#endif + }COMMAND_ATTRIBUTE; + + typedef struct _SOURCE_DESTINATION_ALIGNMENT{ +@@ -363,11 +377,19 @@ typedef union _COMMAND_SPECIFIC_UNION{ + + + typedef struct _CD_GENERIC_BYTE{ ++#if ATOM_BIG_ENDIAN ++ UINT16 PS_SizeInDwordsUsedByCallingTable:5; ++ UINT16 CurrentPort:2; ++ UINT16 CommandAccessType:3; ++ UINT16 CurrentParameterSize:3; ++ UINT16 CommandType:3; ++#else + UINT16 CommandType:3; + UINT16 CurrentParameterSize:3; + UINT16 CommandAccessType:3; + UINT16 CurrentPort:2; + UINT16 PS_SizeInDwordsUsedByCallingTable:5; ++#endif + }CD_GENERIC_BYTE; + + typedef UINT8 COMMAND_TYPE_OPCODE_ONLY; +diff --git a/src/AtomBios/includes/Decoder.h b/src/AtomBios/includes/Decoder.h +index 24c25fc..1e143f0 100644 +--- a/src/AtomBios/includes/Decoder.h ++++ b/src/AtomBios/includes/Decoder.h +@@ -47,12 +47,32 @@ NEG:27.08.2002 Initiated. + #define PARSER_VERSION_MAJOR 0x00000000 + #define PARSER_VERSION_MINOR 0x0000000E + #define PARSER_VERSION (PARSER_VERSION_MAJOR | PARSER_VERSION_MINOR) +-#include "CD_binding.h" ++ + #include "CD_Common_Types.h" ++ ++#include "atombios.h" ++ ++/* these depends on some struct defined in atombios.h */ ++#include "CD_binding.h" + #include "CD_hw_services.h" + #include "CD_Structs.h" +-#include "CD_Definitions.h" + #include "CD_Opcodes.h" ++#include "CD_Definitions.h" ++ ++#if ATOM_BIG_ENDIAN ++extern UINT16 ATOM_BSWAP16(UINT16 x); ++extern UINT32 ATOM_BSWAP32(UINT32 x); ++ ++#define CPU_TO_UINT16LE(x) ATOM_BSWAP16(x) ++#define CPU_TO_UINT32LE(x) ATOM_BSWAP32(x) ++#define UINT16LE_TO_CPU(x) ATOM_BSWAP16(x) ++#define UINT32LE_TO_CPU(x) ATOM_BSWAP32(x) ++#else ++#define CPU_TO_UINT16LE(x) (x) ++#define CPU_TO_UINT32LE(x) (x) ++#define UINT16LE_TO_CPU(x) (x) ++#define UINT32LE_TO_CPU(x) (x) ++#endif + + #define SOURCE_ONLY_CMD_TYPE 0//0xFE + #define SOURCE_DESTINATION_CMD_TYPE 1//0xFD +diff --git a/src/AtomBios/includes/ObjectID.h b/src/AtomBios/includes/ObjectID.h +index 4b106cf..f1f18a4 100644 +--- a/src/AtomBios/includes/ObjectID.h ++++ b/src/AtomBios/includes/ObjectID.h +@@ -78,6 +78,10 @@ + #define ENCODER_OBJECT_ID_DP_DP501 0x1D + #define ENCODER_OBJECT_ID_INTERNAL_UNIPHY 0x1E + #define ENCODER_OBJECT_ID_INTERNAL_KLDSCP_LVTMA 0x1F ++#define ENCODER_OBJECT_ID_INTERNAL_UNIPHY1 0x20 ++#define ENCODER_OBJECT_ID_INTERNAL_UNIPHY2 0x21 ++ ++#define ENCODER_OBJECT_ID_GENERAL_EXTERNAL_DVO 0xFF + + /****************************************************/ + /* Connector Object ID Definition */ +@@ -118,6 +122,8 @@ + #define GRAPH_OBJECT_ENUM_ID2 0x02 + #define GRAPH_OBJECT_ENUM_ID3 0x03 + #define GRAPH_OBJECT_ENUM_ID4 0x04 ++#define GRAPH_OBJECT_ENUM_ID5 0x05 ++#define GRAPH_OBJECT_ENUM_ID6 0x06 + + /****************************************************/ + /* Graphics Object ID Bit definition */ +@@ -173,7 +179,7 @@ + #define ENCODER_SI178_ENUM_ID1 0x2117 + #define ENCODER_MVPU_FPGA_ENUM_ID1 0x2118 + #define ENCODER_INTERNAL_DDI_ENUM_ID1 0x2119 +-#define ENCODER_VT1625_ENUM_ID1 0x211A ++#define ENCODER_VT1625_ENUM_ID1 0x211A + #define ENCODER_HDMI_SI1932_ENUM_ID1 0x211B + #define ENCODER_ENCODER_DP_AN9801_ENUM_ID1 0x211C + #define ENCODER_DP_DP501_ENUM_ID1 0x211D +@@ -323,6 +329,26 @@ + GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\ + ENCODER_OBJECT_ID_INTERNAL_KLDSCP_LVTMA << OBJECT_ID_SHIFT) + ++#define ENCODER_INTERNAL_UNIPHY1_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\ ++ GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\ ++ ENCODER_OBJECT_ID_INTERNAL_UNIPHY1 << OBJECT_ID_SHIFT) ++ ++#define ENCODER_INTERNAL_UNIPHY1_ENUM_ID2 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\ ++ GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\ ++ ENCODER_OBJECT_ID_INTERNAL_UNIPHY1 << OBJECT_ID_SHIFT) ++ ++#define ENCODER_INTERNAL_UNIPHY2_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\ ++ GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\ ++ ENCODER_OBJECT_ID_INTERNAL_UNIPHY2 << OBJECT_ID_SHIFT) ++ ++#define ENCODER_INTERNAL_UNIPHY2_ENUM_ID2 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\ ++ GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\ ++ ENCODER_OBJECT_ID_INTERNAL_UNIPHY2 << OBJECT_ID_SHIFT) ++ ++#define ENCODER_GENERAL_EXTERNAL_DVO_ENUM_ID1 ( GRAPH_OBJECT_TYPE_ENCODER << OBJECT_TYPE_SHIFT |\ ++ GRAPH_OBJECT_ENUM_ID1 << ENUM_ID_SHIFT |\ ++ ENCODER_OBJECT_ID_GENERAL_EXTERNAL_DVO << OBJECT_ID_SHIFT) ++ + /****************************************************/ + /* Connector Object ID definition - Shared with BIOS */ + /****************************************************/ +@@ -453,6 +479,14 @@ + GRAPH_OBJECT_ENUM_ID2 << ENUM_ID_SHIFT |\ + CONNECTOR_OBJECT_ID_DISPLAYPORT << OBJECT_ID_SHIFT) + ++#define CONNECTOR_DISPLAYPORT_ENUM_ID3 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\ ++ GRAPH_OBJECT_ENUM_ID3 << ENUM_ID_SHIFT |\ ++ CONNECTOR_OBJECT_ID_DISPLAYPORT << OBJECT_ID_SHIFT) ++ ++#define CONNECTOR_DISPLAYPORT_ENUM_ID4 ( GRAPH_OBJECT_TYPE_CONNECTOR << OBJECT_TYPE_SHIFT |\ ++ GRAPH_OBJECT_ENUM_ID4 << ENUM_ID_SHIFT |\ ++ CONNECTOR_OBJECT_ID_DISPLAYPORT << OBJECT_ID_SHIFT) ++ + /****************************************************/ + /* Router Object ID definition - Shared with BIOS */ + /****************************************************/ +diff --git a/src/AtomBios/includes/atombios.h b/src/AtomBios/includes/atombios.h +index 17483a6..9932b09 100644 +--- a/src/AtomBios/includes/atombios.h ++++ b/src/AtomBios/includes/atombios.h +@@ -34,6 +34,12 @@ + + #define ATOM_HEADER_VERSION (ATOM_VERSION_MAJOR | ATOM_VERSION_MINOR) + ++/* Endianness should be specified before inclusion, ++ * default to little endian ++ */ ++#ifndef ATOM_BIG_ENDIAN ++#error Endian not specified ++#endif + + #ifdef _H2INC + #ifndef ULONG +@@ -260,7 +266,7 @@ typedef struct _ATOM_MASTER_LIST_OF_COMMAND_TABLES{ + USHORT SetCRTC_UsingDTDTiming; //Atomic Table, directly used by various SW components,latest version 1.1 + USHORT ExternalEncoderControl; //Atomic Table, directly used by various SW components,latest version 2.1 + USHORT LVTMAOutputControl; //Atomic Table, directly used by various SW components,latest version 1.1 +- USHORT VRAM_BlockDetectionByStrap; ++ USHORT VRAM_BlockDetectionByStrap; //Atomic Table, used only by Bios + USHORT MemoryCleanUp; //Atomic Table, only used by Bios + USHORT ProcessI2cChannelTransaction; //Function Table,only used by Bios + USHORT WriteOneByteToHWAssistedI2C; //Function Table,indirectly used by various SW components +@@ -270,9 +276,9 @@ typedef struct _ATOM_MASTER_LIST_OF_COMMAND_TABLES{ + USHORT MC_Synchronization; //Atomic Table, indirectly used by various SW components,called from SetMemoryClock + USHORT ComputeMemoryEnginePLL; //Atomic Table, indirectly used by various SW components,called from SetMemory/EngineClock + USHORT MemoryRefreshConversion; //Atomic Table, indirectly used by various SW components,called from SetMemory or SetEngineClock +- USHORT VRAM_GetCurrentInfoBlock; ++ USHORT VRAM_GetCurrentInfoBlock; //Atomic Table, used only by Bios + USHORT DynamicMemorySettings; //Atomic Table, indirectly used by various SW components,called from SetMemoryClock +- USHORT MemoryTraining; ++ USHORT MemoryTraining; //Atomic Table, used only by Bios + USHORT EnableSpreadSpectrumOnPPLL; //Atomic Table, directly used by various SW components,latest version 1.2 + USHORT TMDSAOutputControl; //Atomic Table, directly used by various SW components,latest version 1.1 + USHORT SetVoltage; //Function Table,directly and/or indirectly used by various SW components,latest version 1.1 +@@ -290,11 +296,12 @@ typedef struct _ATOM_MASTER_LIST_OF_COMMAND_TABLES{ + USHORT DPEncoderService; //Function Table,only used by Bios + }ATOM_MASTER_LIST_OF_COMMAND_TABLES; + ++// For backward compatible + #define ReadEDIDFromHWAssistedI2C ProcessI2cChannelTransaction +- + #define UNIPHYTransmitterControl DIG1TransmitterControl + #define LVTMATransmitterControl DIG2TransmitterControl +-#define SetCRTC_DPM_State GetConditionalGoldenSetting ++#define SetCRTC_DPM_State GetConditionalGoldenSetting ++#define SetUniphyInstance ASIC_StaticPwrMgtStatusChange + + typedef struct _ATOM_MASTER_COMMAND_TABLE + { +@@ -302,9 +309,12 @@ typedef struct _ATOM_MASTER_COMMAND_TABLE + ATOM_MASTER_LIST_OF_COMMAND_TABLES ListOfCommandTables; + }ATOM_MASTER_COMMAND_TABLE; + ++/****************************************************************************/ ++// Structures used in every command table ++/****************************************************************************/ + typedef struct _ATOM_TABLE_ATTRIBUTE + { +-#if X_BYTE_ORDER == X_BIG_ENDIAN ++#if ATOM_BIG_ENDIAN + USHORT UpdatedByUtility:1; //[15]=Table updated by utility flag + USHORT PS_SizeInBytes:7; //[14:8]=Size of parameter space in Bytes (multiple of a dword), + USHORT WS_SizeInBytes:8; //[7:0]=Size of workspace in Bytes (in multiple of a dword), +@@ -315,23 +325,26 @@ typedef struct _ATOM_TABLE_ATTRIBUTE + #endif + }ATOM_TABLE_ATTRIBUTE; + +-// Common header for all command tables. +-//Every table pointed by _ATOM_MASTER_COMMAND_TABLE has this common header. +-//And the pointer actually points to this header. ++typedef union _ATOM_TABLE_ATTRIBUTE_ACCESS ++{ ++ ATOM_TABLE_ATTRIBUTE sbfAccess; ++ USHORT susAccess; ++}ATOM_TABLE_ATTRIBUTE_ACCESS; + ++/****************************************************************************/ ++// Common header for all command tables. ++// Every table pointed by _ATOM_MASTER_COMMAND_TABLE has this common header. ++// And the pointer actually points to this header. ++/****************************************************************************/ + typedef struct _ATOM_COMMON_ROM_COMMAND_TABLE_HEADER + { + ATOM_COMMON_TABLE_HEADER CommonHeader; + ATOM_TABLE_ATTRIBUTE TableAttribute; + }ATOM_COMMON_ROM_COMMAND_TABLE_HEADER; + +- +-typedef struct _ASIC_INIT_PARAMETERS +-{ +- ULONG ulDefaultEngineClock; //In 10Khz unit +- ULONG ulDefaultMemoryClock; //In 10Khz unit +-}ASIC_INIT_PARAMETERS; +- ++/****************************************************************************/ ++// Structures used by ComputeMemoryEnginePLLTable ++/****************************************************************************/ + #define COMPUTE_MEMORY_PLL_PARAM 1 + #define COMPUTE_ENGINE_PLL_PARAM 2 + +@@ -368,6 +381,57 @@ typedef struct _COMPUTE_MEMORY_ENGINE_PLL_PARAMETERS_V2 + #define b3FIRST_TIME_CHANGE_CLOCK 0x08 //Applicable to both memory and engine clock change,when set, it means this is 1st time to change clock after ASIC bootup + #define b3SKIP_SW_PROGRAM_PLL 0x10 //Applicable to both memory and engine clock change, when set, it means the table will not program SPLL/MPLL + ++typedef struct _ATOM_COMPUTE_CLOCK_FREQ ++{ ++#if ATOM_BIG_ENDIAN ++ ULONG ulComputeClockFlag:8; // =1: COMPUTE_MEMORY_PLL_PARAM, =2: COMPUTE_ENGINE_PLL_PARAM ++ ULONG ulClockFreq:24; // in unit of 10kHz ++#else ++ ULONG ulClockFreq:24; // in unit of 10kHz ++ ULONG ulComputeClockFlag:8; // =1: COMPUTE_MEMORY_PLL_PARAM, =2: COMPUTE_ENGINE_PLL_PARAM ++#endif ++}ATOM_COMPUTE_CLOCK_FREQ; ++ ++typedef struct _ATOM_S_MPLL_FB_DIVIDER ++{ ++ USHORT usFbDivFrac; ++ USHORT usFbDiv; ++}ATOM_S_MPLL_FB_DIVIDER; ++ ++typedef struct _COMPUTE_MEMORY_ENGINE_PLL_PARAMETERS_V3 ++{ ++ union ++ { ++ ATOM_COMPUTE_CLOCK_FREQ ulClock; //Input Parameter ++ ATOM_S_MPLL_FB_DIVIDER ulFbDiv; //Output Parameter ++ }; ++ UCHAR ucRefDiv; //Output Parameter ++ UCHAR ucPostDiv; //Output Parameter ++ UCHAR ucCntlFlag; //Output Parameter ++ UCHAR ucReserved; ++}COMPUTE_MEMORY_ENGINE_PLL_PARAMETERS_V3; ++ ++// ucCntlFlag ++#define ATOM_PLL_CNTL_FLAG_PLL_POST_DIV_EN 1 ++#define ATOM_PLL_CNTL_FLAG_MPLL_VCO_MODE 2 ++#define ATOM_PLL_CNTL_FLAG_FRACTION_DISABLE 4 ++ ++typedef struct _DYNAMICE_MEMORY_SETTINGS_PARAMETER ++{ ++ ATOM_COMPUTE_CLOCK_FREQ ulClock; ++ ULONG ulReserved[2]; ++}DYNAMICE_MEMORY_SETTINGS_PARAMETER; ++ ++typedef struct _DYNAMICE_ENGINE_SETTINGS_PARAMETER ++{ ++ ATOM_COMPUTE_CLOCK_FREQ ulClock; ++ ULONG ulMemoryClock; ++ ULONG ulReserved; ++}DYNAMICE_ENGINE_SETTINGS_PARAMETER; ++ ++/****************************************************************************/ ++// Structures used by SetEngineClockTable ++/****************************************************************************/ + typedef struct _SET_ENGINE_CLOCK_PARAMETERS + { + ULONG ulTargetEngineClock; //In 10Khz unit +@@ -379,7 +443,9 @@ typedef struct _SET_ENGINE_CLOCK_PS_ALLOCATION + COMPUTE_MEMORY_ENGINE_PLL_PARAMETERS_PS_ALLOCATION sReserved; + }SET_ENGINE_CLOCK_PS_ALLOCATION; + +- ++/****************************************************************************/ ++// Structures used by SetMemoryClockTable ++/****************************************************************************/ + typedef struct _SET_MEMORY_CLOCK_PARAMETERS + { + ULONG ulTargetMemoryClock; //In 10Khz unit +@@ -391,13 +457,24 @@ typedef struct _SET_MEMORY_CLOCK_PS_ALLOCATION + COMPUTE_MEMORY_ENGINE_PLL_PARAMETERS_PS_ALLOCATION sReserved; + }SET_MEMORY_CLOCK_PS_ALLOCATION; + ++/****************************************************************************/ ++// Structures used by ASIC_Init.ctb ++/****************************************************************************/ ++typedef struct _ASIC_INIT_PARAMETERS ++{ ++ ULONG ulDefaultEngineClock; //In 10Khz unit ++ ULONG ulDefaultMemoryClock; //In 10Khz unit ++}ASIC_INIT_PARAMETERS; ++ + typedef struct _ASIC_INIT_PS_ALLOCATION + { + ASIC_INIT_PARAMETERS sASICInitClocks; + SET_ENGINE_CLOCK_PS_ALLOCATION sReserved; //Caller doesn't need to init this structure + }ASIC_INIT_PS_ALLOCATION; + +- ++/****************************************************************************/ ++// Structure used by DynamicClockGatingTable.ctb ++/****************************************************************************/ + typedef struct _DYNAMIC_CLOCK_GATING_PARAMETERS + { + UCHAR ucEnable; // ATOM_ENABLE or ATOM_DISABLE +@@ -405,7 +482,9 @@ typedef struct _DYNAMIC_CLOCK_GATING_PARAMETERS + }DYNAMIC_CLOCK_GATING_PARAMETERS; + #define DYNAMIC_CLOCK_GATING_PS_ALLOCATION DYNAMIC_CLOCK_GATING_PARAMETERS + +- ++/****************************************************************************/ ++// Structure used by EnableASIC_StaticPwrMgtTable.ctb ++/****************************************************************************/ + typedef struct _ENABLE_ASIC_STATIC_PWR_MGT_PARAMETERS + { + UCHAR ucEnable; // ATOM_ENABLE or ATOM_DISABLE +@@ -413,7 +492,9 @@ typedef struct _ENABLE_ASIC_STATIC_PWR_MGT_PARAMETERS + }ENABLE_ASIC_STATIC_PWR_MGT_PARAMETERS; + #define ENABLE_ASIC_STATIC_PWR_MGT_PS_ALLOCATION ENABLE_ASIC_STATIC_PWR_MGT_PARAMETERS + +- ++/****************************************************************************/ ++// Structures used by DAC_LoadDetectionTable.ctb ++/****************************************************************************/ + typedef struct _DAC_LOAD_DETECTION_PARAMETERS + { + USHORT usDeviceID; //{ATOM_DEVICE_CRTx_SUPPORT,ATOM_DEVICE_TVx_SUPPORT,ATOM_DEVICE_CVx_SUPPORT} +@@ -424,14 +505,15 @@ typedef struct _DAC_LOAD_DETECTION_PARAMETERS + // DAC_LOAD_DETECTION_PARAMETERS.ucMisc + #define DAC_LOAD_MISC_YPrPb 0x01 + +- + typedef struct _DAC_LOAD_DETECTION_PS_ALLOCATION + { + DAC_LOAD_DETECTION_PARAMETERS sDacload; + ULONG Reserved[2];// Don't set this one, allocation for EXT DAC + }DAC_LOAD_DETECTION_PS_ALLOCATION; + +- ++/****************************************************************************/ ++// Structures used by DAC1EncoderControlTable.ctb and DAC2EncoderControlTable.ctb ++/****************************************************************************/ + typedef struct _DAC_ENCODER_CONTROL_PARAMETERS + { + USHORT usPixelClock; // in 10KHz; for bios convenient +@@ -443,14 +525,11 @@ typedef struct _DAC_ENCODER_CONTROL_PARAMETERS + + #define DAC_ENCODER_CONTROL_PS_ALLOCATION DAC_ENCODER_CONTROL_PARAMETERS + +-typedef struct _TV_ENCODER_CONTROL_PARAMETERS +-{ +- USHORT usPixelClock; // in 10KHz; for bios convenient +- UCHAR ucTvStandard; // See definition "ATOM_TV_NTSC ..." +- UCHAR ucAction; // 0: turn off encoder +- // 1: setup and turn on encoder +-}TV_ENCODER_CONTROL_PARAMETERS; +- ++/****************************************************************************/ ++// Structures used by DIG1EncoderControlTable ++// DIG2EncoderControlTable ++// ExternalEncoderControlTable ++/****************************************************************************/ + typedef struct _DIG_ENCODER_CONTROL_PARAMETERS + { + USHORT usPixelClock; // in 10KHz; for bios convenient +@@ -475,7 +554,6 @@ typedef struct _DIG_ENCODER_CONTROL_PARAMETERS + }DIG_ENCODER_CONTROL_PARAMETERS; + #define DIG_ENCODER_CONTROL_PS_ALLOCATION DIG_ENCODER_CONTROL_PARAMETERS + #define EXTERNAL_ENCODER_CONTROL_PARAMETER DIG_ENCODER_CONTROL_PARAMETERS +-#define EXTERNAL_ENCODER_CONTROL_PS_ALLOCATION DIG_ENCODER_CONTROL_PS_ALLOCATION + + //ucConfig + #define ATOM_ENCODER_CONFIG_DPLINKRATE_MASK 0x01 +@@ -506,6 +584,56 @@ typedef struct _DIG_ENCODER_CONTROL_PARAMETERS + #define ATOM_ENCODER_MODE_CV 14 + #define ATOM_ENCODER_MODE_CRT 15 + ++typedef struct _ATOM_DIG_ENCODER_CONFIG_V2 ++{ ++#if ATOM_BIG_ENDIAN ++ UCHAR ucReserved1:2; ++ UCHAR ucTransmitterSel:2; // =0: UniphyAB, =1: UniphyCD =2: UniphyEF ++ UCHAR ucLinkSel:1; // =0: linkA/C/E =1: linkB/D/F ++ UCHAR ucReserved:1; ++ UCHAR ucDPLinkRate:1; // =0: 1.62Ghz, =1: 2.7Ghz ++#else ++ UCHAR ucDPLinkRate:1; // =0: 1.62Ghz, =1: 2.7Ghz ++ UCHAR ucReserved:1; ++ UCHAR ucLinkSel:1; // =0: linkA/C/E =1: linkB/D/F ++ UCHAR ucTransmitterSel:2; // =0: UniphyAB, =1: UniphyCD =2: UniphyEF ++ UCHAR ucReserved1:2; ++#endif ++}ATOM_DIG_ENCODER_CONFIG_V2; ++ ++ ++typedef struct _DIG_ENCODER_CONTROL_PARAMETERS_V2 ++{ ++ USHORT usPixelClock; // in 10KHz; for bios convenient ++ ATOM_DIG_ENCODER_CONFIG_V2 acConfig; ++ UCHAR ucAction; ++ UCHAR ucEncoderMode; ++ // =0: DP encoder ++ // =1: LVDS encoder ++ // =2: DVI encoder ++ // =3: HDMI encoder ++ // =4: SDVO encoder ++ UCHAR ucLaneNum; // how many lanes to enable ++ UCHAR ucReserved[2]; ++}DIG_ENCODER_CONTROL_PARAMETERS_V2; ++ ++//ucConfig ++#define ATOM_ENCODER_CONFIG_V2_DPLINKRATE_MASK 0x01 ++#define ATOM_ENCODER_CONFIG_V2_DPLINKRATE_1_62GHZ 0x00 ++#define ATOM_ENCODER_CONFIG_V2_DPLINKRATE_2_70GHZ 0x01 ++#define ATOM_ENCODER_CONFIG_V2_LINK_SEL_MASK 0x04 ++#define ATOM_ENCODER_CONFIG_V2_LINKA 0x00 ++#define ATOM_ENCODER_CONFIG_V2_LINKB 0x04 ++#define ATOM_ENCODER_CONFIG_V2_TRANSMITTER_SEL_MASK 0x18 ++#define ATOM_ENCODER_CONFIG_V2_TRANSMITTER1 0x00 ++#define ATOM_ENCODER_CONFIG_V2_TRANSMITTER2 0x08 ++#define ATOM_ENCODER_CONFIG_V2_TRANSMITTER3 0x10 ++ ++/****************************************************************************/ ++// Structures used by UNIPHYTransmitterControlTable ++// LVTMATransmitterControlTable ++// DVOOutputControlTable ++/****************************************************************************/ + typedef struct _ATOM_DP_VS_MODE + { + UCHAR ucLaneSel; +@@ -583,7 +711,82 @@ typedef struct _DIG_TRANSMITTER_CONTROL_PARAMETERS + #define ATOM_TRANSMITTER_ACTION_SETUP 10 + #define ATOM_TRANSMITTER_ACTION_SETUP_VSEMPH 11 + +-/****************************Device Output Control Command Table Definitions**********************/ ++ ++// Following are used for DigTransmitterControlTable ver1.2 ++typedef struct _ATOM_DIG_TRANSMITTER_CONFIG_V2 ++{ ++#if ATOM_BIG_ENDIAN ++ UCHAR ucTransmitterSel:2; //bit7:6: =0 Dig Transmitter 1 ( Uniphy AB ) ++ // =1 Dig Transmitter 2 ( Uniphy CD ) ++ // =2 Dig Transmitter 3 ( Uniphy EF ) ++ UCHAR ucReserved:1; ++ UCHAR fDPConnector:1; //bit4=0: DP connector =1: None DP connector ++ UCHAR ucEncoderSel:1; //bit3=0: Data/Clk path source from DIGA( DIG inst0 ). =1: Data/clk path source from DIGB ( DIG inst1 ) ++ UCHAR ucLinkSel:1; //bit2=0: Uniphy LINKA or C or E when fDualLinkConnector=0. when fDualLinkConnector=1, it means master link of dual link is A or C or E ++ // =1: Uniphy LINKB or D or F when fDualLinkConnector=0. when fDualLinkConnector=1, it means master link of dual link is B or D or F ++ ++ UCHAR fCoherentMode:1; //bit1=1: Coherent Mode ( for DVI/HDMI mode ) ++ UCHAR fDualLinkConnector:1; //bit0=1: Dual Link DVI connector ++#else ++ UCHAR fDualLinkConnector:1; //bit0=1: Dual Link DVI connector ++ UCHAR fCoherentMode:1; //bit1=1: Coherent Mode ( for DVI/HDMI mode ) ++ UCHAR ucLinkSel:1; //bit2=0: Uniphy LINKA or C or E when fDualLinkConnector=0. when fDualLinkConnector=1, it means master link of dual link is A or C or E ++ // =1: Uniphy LINKB or D or F when fDualLinkConnector=0. when fDualLinkConnector=1, it means master link of dual link is B or D or F ++ UCHAR ucEncoderSel:1; //bit3=0: Data/Clk path source from DIGA( DIG inst0 ). =1: Data/clk path source from DIGB ( DIG inst1 ) ++ UCHAR fDPConnector:1; //bit4=0: DP connector =1: None DP connector ++ UCHAR ucReserved:1; ++ UCHAR ucTransmitterSel:2; //bit7:6: =0 Dig Transmitter 1 ( Uniphy AB ) ++ // =1 Dig Transmitter 2 ( Uniphy CD ) ++ // =2 Dig Transmitter 3 ( Uniphy EF ) ++#endif ++}ATOM_DIG_TRANSMITTER_CONFIG_V2; ++ ++//ucConfig ++//Bit0 ++#define ATOM_TRANSMITTER_CONFIG_V2_DUAL_LINK_CONNECTOR 0x01 ++ ++//Bit1 ++#define ATOM_TRANSMITTER_CONFIG_V2_COHERENT 0x02 ++ ++//Bit2 ++#define ATOM_TRANSMITTER_CONFIG_V2_LINK_SEL_MASK 0x04 ++#define ATOM_TRANSMITTER_CONFIG_V2_LINKA 0x00 ++#define ATOM_TRANSMITTER_CONFIG_V2_LINKB 0x04 ++ ++// Bit3 ++#define ATOM_TRANSMITTER_CONFIG_V2_ENCODER_SEL_MASK 0x08 ++#define ATOM_TRANSMITTER_CONFIG_V2_DIG1_ENCODER 0x00 // only used when ucAction == ATOM_TRANSMITTER_ACTION_ENABLE or ATOM_TRANSMITTER_ACTION_SETUP ++#define ATOM_TRANSMITTER_CONFIG_V2_DIG2_ENCODER 0x08 // only used when ucAction == ATOM_TRANSMITTER_ACTION_ENABLE or ATOM_TRANSMITTER_ACTION_SETUP ++ ++// Bit4 ++#define ATOM_TRASMITTER_CONFIG_V2_DP_CONNECTOR 0x10 ++ ++// Bit7:6 ++#define ATOM_TRANSMITTER_CONFIG_V2_TRANSMITTER_SEL_MASK 0xC0 ++#define ATOM_TRANSMITTER_CONFIG_V2_TRANSMITTER1 0x00 //AB ++#define ATOM_TRANSMITTER_CONFIG_V2_TRANSMITTER2 0x40 //CD ++#define ATOM_TRANSMITTER_CONFIG_V2_TRANSMITTER3 0x80 //EF ++ ++typedef struct _DIG_TRANSMITTER_CONTROL_PARAMETERS_V2 ++{ ++ union ++ { ++ USHORT usPixelClock; // in 10KHz; for bios convenient ++ USHORT usInitInfo; // when init uniphy,lower 8bit is used for connector type defined in objectid.h ++ ATOM_DP_VS_MODE asMode; // DP Voltage swing mode ++ }; ++ ATOM_DIG_TRANSMITTER_CONFIG_V2 acConfig; ++ UCHAR ucAction; // define as ATOM_TRANSMITER_ACTION_XXX ++ UCHAR ucReserved[4]; ++}DIG_TRANSMITTER_CONTROL_PARAMETERS_V2; ++ ++ ++/****************************************************************************/ ++// Structures used by DAC1OuputControlTable ++// DAC2OuputControlTable ++// LVTMAOutputControlTable (Before DEC30) ++// TMDSAOutputControlTable (Before DEC30) ++/****************************************************************************/ + typedef struct _DISPLAY_DEVICE_OUTPUT_CONTROL_PARAMETERS + { + UCHAR ucAction; // Possible input:ATOM_ENABLE||ATOMDISABLE +@@ -622,7 +825,9 @@ typedef struct _DISPLAY_DEVICE_OUTPUT_CONTROL_PARAMETERS + #define DVO_OUTPUT_CONTROL_PS_ALLOCATION DIG_TRANSMITTER_CONTROL_PS_ALLOCATION + #define DVO_OUTPUT_CONTROL_PARAMETERS_V3 DIG_TRANSMITTER_CONTROL_PARAMETERS + +-/**************************************************************************/ ++/****************************************************************************/ ++// Structures used by BlankCRTCTable ++/****************************************************************************/ + typedef struct _BLANK_CRTC_PARAMETERS + { + UCHAR ucCRTC; // ATOM_CRTC1 or ATOM_CRTC2 +@@ -633,7 +838,11 @@ typedef struct _BLANK_CRTC_PARAMETERS + }BLANK_CRTC_PARAMETERS; + #define BLANK_CRTC_PS_ALLOCATION BLANK_CRTC_PARAMETERS + +- ++/****************************************************************************/ ++// Structures used by EnableCRTCTable ++// EnableCRTCMemReqTable ++// UpdateCRTC_DoubleBufferRegistersTable ++/****************************************************************************/ + typedef struct _ENABLE_CRTC_PARAMETERS + { + UCHAR ucCRTC; // ATOM_CRTC1 or ATOM_CRTC2 +@@ -642,7 +851,9 @@ typedef struct _ENABLE_CRTC_PARAMETERS + }ENABLE_CRTC_PARAMETERS; + #define ENABLE_CRTC_PS_ALLOCATION ENABLE_CRTC_PARAMETERS + +- ++/****************************************************************************/ ++// Structures used by SetCRTC_OverScanTable ++/****************************************************************************/ + typedef struct _SET_CRTC_OVERSCAN_PARAMETERS + { + USHORT usOverscanRight; // right +@@ -654,7 +865,9 @@ typedef struct _SET_CRTC_OVERSCAN_PARAMETERS + }SET_CRTC_OVERSCAN_PARAMETERS; + #define SET_CRTC_OVERSCAN_PS_ALLOCATION SET_CRTC_OVERSCAN_PARAMETERS + +- ++/****************************************************************************/ ++// Structures used by SetCRTC_ReplicationTable ++/****************************************************************************/ + typedef struct _SET_CRTC_REPLICATION_PARAMETERS + { + UCHAR ucH_Replication; // horizontal replication +@@ -664,7 +877,9 @@ typedef struct _SET_CRTC_REPLICATION_PARAMETERS + }SET_CRTC_REPLICATION_PARAMETERS; + #define SET_CRTC_REPLICATION_PS_ALLOCATION SET_CRTC_REPLICATION_PARAMETERS + +- ++/****************************************************************************/ ++// Structures used by SelectCRTC_SourceTable ++/****************************************************************************/ + typedef struct _SELECT_CRTC_SOURCE_PARAMETERS + { + UCHAR ucCRTC; // ATOM_CRTC1 or ATOM_CRTC2 +@@ -701,6 +916,10 @@ typedef struct _SELECT_CRTC_SOURCE_PARAMETERS_V2 + //#define ATOM_ENCODER_MODE_CV 14 + //#define ATOM_ENCODER_MODE_CRT 15 + ++/****************************************************************************/ ++// Structures used by SetPixelClockTable ++// GetPixelClockTable ++/****************************************************************************/ + //Major revision=1., Minor revision=1 + typedef struct _PIXEL_CLOCK_PARAMETERS + { +@@ -716,7 +935,6 @@ typedef struct _PIXEL_CLOCK_PARAMETERS + UCHAR ucPadding; + }PIXEL_CLOCK_PARAMETERS; + +- + //Major revision=1., Minor revision=2, add ucMiscIfno + //ucMiscInfo: + #define MISC_FORCE_REPROG_PIXEL_CLOCK 0x1 +@@ -787,6 +1005,9 @@ typedef struct _PIXEL_CLOCK_PARAMETERS_V3 + #define PIXEL_CLOCK_PARAMETERS_LAST PIXEL_CLOCK_PARAMETERS_V2 + #define GET_PIXEL_CLOCK_PS_ALLOCATION PIXEL_CLOCK_PARAMETERS_LAST + ++/****************************************************************************/ ++// Structures used by AdjustDisplayPllTable ++/****************************************************************************/ + typedef struct _ADJUST_DISPLAY_PLL_PARAMETERS + { + USHORT usPixelClock; +@@ -804,6 +1025,9 @@ typedef struct _ADJUST_DISPLAY_PLL_PARAMETERS + + #define ADJUST_DISPLAY_PLL_PS_ALLOCATION ADJUST_DISPLAY_PLL_PARAMETERS + ++/****************************************************************************/ ++// Structures used by EnableYUVTable ++/****************************************************************************/ + typedef struct _ENABLE_YUV_PARAMETERS + { + UCHAR ucEnable; // ATOM_ENABLE:Enable YUV or ATOM_DISABLE:Disable YUV (RGB) +@@ -812,20 +1036,27 @@ typedef struct _ENABLE_YUV_PARAMETERS + }ENABLE_YUV_PARAMETERS; + #define ENABLE_YUV_PS_ALLOCATION ENABLE_YUV_PARAMETERS + ++/****************************************************************************/ ++// Structures used by GetMemoryClockTable ++/****************************************************************************/ + typedef struct _GET_MEMORY_CLOCK_PARAMETERS + { + ULONG ulReturnMemoryClock; // current memory speed in 10KHz unit + } GET_MEMORY_CLOCK_PARAMETERS; + #define GET_MEMORY_CLOCK_PS_ALLOCATION GET_MEMORY_CLOCK_PARAMETERS + +- ++/****************************************************************************/ ++// Structures used by GetEngineClockTable ++/****************************************************************************/ + typedef struct _GET_ENGINE_CLOCK_PARAMETERS + { + ULONG ulReturnEngineClock; // current engine speed in 10KHz unit + } GET_ENGINE_CLOCK_PARAMETERS; + #define GET_ENGINE_CLOCK_PS_ALLOCATION GET_ENGINE_CLOCK_PARAMETERS + +- ++/****************************************************************************/ ++// Following Structures and constant may be obsolete ++/****************************************************************************/ + //Maxium 8 bytes,the data read in will be placed in the parameter space. + //Read operaion successeful when the paramter space is non-zero, otherwise read operation failed + typedef struct _READ_EDID_FROM_HW_I2C_DATA_PARAMETERS +@@ -875,6 +1106,9 @@ typedef struct _SET_UP_HW_I2C_DATA_PARAMETERS + /**************************************************************************/ + #define SPEED_FAN_CONTROL_PS_ALLOCATION WRITE_ONE_BYTE_HW_I2C_DATA_PARAMETERS + ++/****************************************************************************/ ++// Structures used by PowerConnectorDetectionTable ++/****************************************************************************/ + typedef struct _POWER_CONNECTOR_DETECTION_PARAMETERS + { + UCHAR ucPowerConnectorStatus; //Used for return value 0: detected, 1:not detected +@@ -891,6 +1125,10 @@ typedef struct POWER_CONNECTOR_DETECTION_PS_ALLOCATION + }POWER_CONNECTOR_DETECTION_PS_ALLOCATION; + + /****************************LVDS SS Command Table Definitions**********************/ ++ ++/****************************************************************************/ ++// Structures used by EnableSpreadSpectrumOnPPLLTable ++/****************************************************************************/ + typedef struct _ENABLE_LVDS_SS_PARAMETERS + { + USHORT usSpreadSpectrumPercentage; +@@ -936,6 +1174,9 @@ typedef struct _SET_PIXEL_CLOCK_PS_ALLOCATION + + #define ENABLE_VGA_RENDER_PS_ALLOCATION SET_PIXEL_CLOCK_PS_ALLOCATION + ++/****************************************************************************/ ++// Structures used by ### ++/****************************************************************************/ + typedef struct _MEMORY_TRAINING_PARAMETERS + { + ULONG ulTargetMemoryClock; //In 10Khz unit +@@ -943,8 +1184,14 @@ typedef struct _MEMORY_TRAINING_PARAMETERS + #define MEMORY_TRAINING_PS_ALLOCATION MEMORY_TRAINING_PARAMETERS + + +- + /****************************LVDS and other encoder command table definitions **********************/ ++ ++ ++/****************************************************************************/ ++// Structures used by LVDSEncoderControlTable (Before DCE30) ++// LVTMAEncoderControlTable (Before DCE30) ++// TMDSAEncoderControlTable (Before DCE30) ++/****************************************************************************/ + typedef struct _LVDS_ENCODER_CONTROL_PARAMETERS + { + USHORT usPixelClock; // in 10KHz; for bios convenient +@@ -964,19 +1211,6 @@ typedef struct _LVDS_ENCODER_CONTROL_PARAMETERS + #define TMDS2_ENCODER_CONTROL_PARAMETERS TMDS1_ENCODER_CONTROL_PARAMETERS + #define TMDS2_ENCODER_CONTROL_PS_ALLOCATION TMDS2_ENCODER_CONTROL_PARAMETERS + +-typedef struct _ENABLE_EXTERNAL_TMDS_ENCODER_PARAMETERS +-{ +- UCHAR ucEnable; // Enable or Disable External TMDS encoder +- UCHAR ucMisc; // Bit0=0:Enable Single link;=1:Enable Dual link;Bit1 {=0:666RGB, =1:888RGB} +- UCHAR ucPadding[2]; +-}ENABLE_EXTERNAL_TMDS_ENCODER_PARAMETERS; +- +-typedef struct _ENABLE_EXTERNAL_TMDS_ENCODER_PS_ALLOCATION +-{ +- ENABLE_EXTERNAL_TMDS_ENCODER_PARAMETERS sXTmdsEncoder; +- WRITE_ONE_BYTE_HW_I2C_DATA_PS_ALLOCATION sReserved; //Caller doesn't need to init this portion +-}ENABLE_EXTERNAL_TMDS_ENCODER_PS_ALLOCATION; +- + + //ucTableFormatRevision=1,ucTableContentRevision=2 + typedef struct _LVDS_ENCODER_CONTROL_PARAMETERS_V2 +@@ -1016,6 +1250,32 @@ typedef struct _LVDS_ENCODER_CONTROL_PARAMETERS_V2 + + #define TMDS2_ENCODER_CONTROL_PARAMETERS_V2 TMDS1_ENCODER_CONTROL_PARAMETERS_V2 + #define TMDS2_ENCODER_CONTROL_PS_ALLOCATION_V2 TMDS2_ENCODER_CONTROL_PARAMETERS_V2 ++ ++#define LVDS_ENCODER_CONTROL_PARAMETERS_V3 LVDS_ENCODER_CONTROL_PARAMETERS_V2 ++#define LVDS_ENCODER_CONTROL_PS_ALLOCATION_V3 LVDS_ENCODER_CONTROL_PARAMETERS_V3 ++ ++#define TMDS1_ENCODER_CONTROL_PARAMETERS_V3 LVDS_ENCODER_CONTROL_PARAMETERS_V3 ++#define TMDS1_ENCODER_CONTROL_PS_ALLOCATION_V3 TMDS1_ENCODER_CONTROL_PARAMETERS_V3 ++ ++#define TMDS2_ENCODER_CONTROL_PARAMETERS_V3 LVDS_ENCODER_CONTROL_PARAMETERS_V3 ++#define TMDS2_ENCODER_CONTROL_PS_ALLOCATION_V3 TMDS2_ENCODER_CONTROL_PARAMETERS_V3 ++ ++/****************************************************************************/ ++// Structures used by ### ++/****************************************************************************/ ++typedef struct _ENABLE_EXTERNAL_TMDS_ENCODER_PARAMETERS ++{ ++ UCHAR ucEnable; // Enable or Disable External TMDS encoder ++ UCHAR ucMisc; // Bit0=0:Enable Single link;=1:Enable Dual link;Bit1 {=0:666RGB, =1:888RGB} ++ UCHAR ucPadding[2]; ++}ENABLE_EXTERNAL_TMDS_ENCODER_PARAMETERS; ++ ++typedef struct _ENABLE_EXTERNAL_TMDS_ENCODER_PS_ALLOCATION ++{ ++ ENABLE_EXTERNAL_TMDS_ENCODER_PARAMETERS sXTmdsEncoder; ++ WRITE_ONE_BYTE_HW_I2C_DATA_PS_ALLOCATION sReserved; //Caller doesn't need to init this portion ++}ENABLE_EXTERNAL_TMDS_ENCODER_PS_ALLOCATION; ++ + #define ENABLE_EXTERNAL_TMDS_ENCODER_PARAMETERS_V2 LVDS_ENCODER_CONTROL_PARAMETERS_V2 + + typedef struct _ENABLE_EXTERNAL_TMDS_ENCODER_PS_ALLOCATION_V2 +@@ -1024,7 +1284,15 @@ typedef struct _ENABLE_EXTERNAL_TMDS_ENCODER_PS_ALLOCATION_V2 + WRITE_ONE_BYTE_HW_I2C_DATA_PS_ALLOCATION sReserved; //Caller doesn't need to init this portion + }ENABLE_EXTERNAL_TMDS_ENCODER_PS_ALLOCATION_V2; + ++typedef struct _EXTERNAL_ENCODER_CONTROL_PS_ALLOCATION ++{ ++ DIG_ENCODER_CONTROL_PARAMETERS sDigEncoder; ++ WRITE_ONE_BYTE_HW_I2C_DATA_PS_ALLOCATION sReserved; ++}EXTERNAL_ENCODER_CONTROL_PS_ALLOCATION; + ++/****************************************************************************/ ++// Structures used by DVOEncoderControlTable ++/****************************************************************************/ + //ucTableFormatRevision=1,ucTableContentRevision=3 + + //ucDVOConfig: +@@ -1050,15 +1318,6 @@ typedef struct _DVO_ENCODER_CONTROL_PARAMETERS_V3 + // bit1=0: non-coherent mode + // =1: coherent mode + +-#define LVDS_ENCODER_CONTROL_PARAMETERS_V3 LVDS_ENCODER_CONTROL_PARAMETERS_V2 +-#define LVDS_ENCODER_CONTROL_PS_ALLOCATION_V3 LVDS_ENCODER_CONTROL_PARAMETERS_V3 +- +-#define TMDS1_ENCODER_CONTROL_PARAMETERS_V3 LVDS_ENCODER_CONTROL_PARAMETERS_V3 +-#define TMDS1_ENCODER_CONTROL_PS_ALLOCATION_V3 TMDS1_ENCODER_CONTROL_PARAMETERS_V3 +- +-#define TMDS2_ENCODER_CONTROL_PARAMETERS_V3 LVDS_ENCODER_CONTROL_PARAMETERS_V3 +-#define TMDS2_ENCODER_CONTROL_PS_ALLOCATION_V3 TMDS2_ENCODER_CONTROL_PARAMETERS_V3 +- + //========================================================================================== + //Only change is here next time when changing encoder parameter definitions again! + #define LVDS_ENCODER_CONTROL_PARAMETERS_LAST LVDS_ENCODER_CONTROL_PARAMETERS_V3 +@@ -1102,20 +1361,23 @@ typedef struct _DVO_ENCODER_CONTROL_PARAMETERS_V3 + #define PANEL_ENCODER_75FRC_E 0x00 + #define PANEL_ENCODER_75FRC_F 0x80 + +-/**************************************************************************/ +- ++/****************************************************************************/ ++// Structures used by SetVoltageTable ++/****************************************************************************/ + #define SET_VOLTAGE_TYPE_ASIC_VDDC 1 + #define SET_VOLTAGE_TYPE_ASIC_MVDDC 2 + #define SET_VOLTAGE_TYPE_ASIC_MVDDQ 3 + #define SET_VOLTAGE_TYPE_ASIC_VDDCI 4 ++#define SET_VOLTAGE_INIT_MODE 5 ++#define SET_VOLTAGE_GET_MAX_VOLTAGE 6 //Gets the Max. voltage for the soldered Asic + + #define SET_ASIC_VOLTAGE_MODE_ALL_SOURCE 0x1 + #define SET_ASIC_VOLTAGE_MODE_SOURCE_A 0x2 + #define SET_ASIC_VOLTAGE_MODE_SOURCE_B 0x4 + +-#define SET_ASIC_VOLTAGE_MODE_SET_VOLTAGE 0x0 +-#define SET_ASIC_VOLTAGE_MODE_GET_GPIOVAL 0x1 +-#define SET_ASIC_VOLTAGE_MODE_GET_GPIOMASK 0x2 ++#define SET_ASIC_VOLTAGE_MODE_SET_VOLTAGE 0x0 ++#define SET_ASIC_VOLTAGE_MODE_GET_GPIOVAL 0x1 ++#define SET_ASIC_VOLTAGE_MODE_GET_GPIOMASK 0x2 + + typedef struct _SET_VOLTAGE_PARAMETERS + { +@@ -1125,7 +1387,6 @@ typedef struct _SET_VOLTAGE_PARAMETERS + UCHAR ucReserved; + }SET_VOLTAGE_PARAMETERS; + +- + typedef struct _SET_VOLTAGE_PARAMETERS_V2 + { + UCHAR ucVoltageType; // To tell which voltage to set up, VDDC/MVDDC/MVDDQ +@@ -1133,13 +1394,23 @@ typedef struct _SET_VOLTAGE_PARAMETERS_V2 + USHORT usVoltageLevel; // real voltage level + }SET_VOLTAGE_PARAMETERS_V2; + +- + typedef struct _SET_VOLTAGE_PS_ALLOCATION + { + SET_VOLTAGE_PARAMETERS sASICSetVoltage; + WRITE_ONE_BYTE_HW_I2C_DATA_PS_ALLOCATION sReserved; + }SET_VOLTAGE_PS_ALLOCATION; + ++/****************************************************************************/ ++// Structures used by TVEncoderControlTable ++/****************************************************************************/ ++typedef struct _TV_ENCODER_CONTROL_PARAMETERS ++{ ++ USHORT usPixelClock; // in 10KHz; for bios convenient ++ UCHAR ucTvStandard; // See definition "ATOM_TV_NTSC ..." ++ UCHAR ucAction; // 0: turn off encoder ++ // 1: setup and turn on encoder ++}TV_ENCODER_CONTROL_PARAMETERS; ++ + typedef struct _TV_ENCODER_CONTROL_PS_ALLOCATION + { + TV_ENCODER_CONTROL_PARAMETERS sTVEncoder; +@@ -1153,6 +1424,9 @@ typedef struct _TV_ENCODER_CONTROL_PS_ALLOCATION + #define USHORT void* + #endif + ++/****************************************************************************/ ++// Structure used in Data.mtb ++/****************************************************************************/ + typedef struct _ATOM_MASTER_LIST_OF_DATA_TABLES + { + USHORT UtilityPipeLine; // Offest for the utility to get parser info,Don't change this position! +@@ -1195,14 +1469,15 @@ typedef struct _ATOM_MASTER_LIST_OF_DATA_TABLES + #define USHORT UTEMP + #endif + +- + typedef struct _ATOM_MASTER_DATA_TABLE + { + ATOM_COMMON_TABLE_HEADER sHeader; + ATOM_MASTER_LIST_OF_DATA_TABLES ListOfDataTables; + }ATOM_MASTER_DATA_TABLE; + +- ++/****************************************************************************/ ++// Structure used in MultimediaCapabilityInfoTable ++/****************************************************************************/ + typedef struct _ATOM_MULTIMEDIA_CAPABILITY_INFO + { + ATOM_COMMON_TABLE_HEADER sHeader; +@@ -1213,7 +1488,9 @@ typedef struct _ATOM_MULTIMEDIA_CAPABILITY_INFO + UCHAR ucHostPortInfo; // Provides host port configuration information + }ATOM_MULTIMEDIA_CAPABILITY_INFO; + +- ++/****************************************************************************/ ++// Structure used in MultimediaConfigInfoTable ++/****************************************************************************/ + typedef struct _ATOM_MULTIMEDIA_CONFIG_INFO + { + ATOM_COMMON_TABLE_HEADER sHeader; +@@ -1232,7 +1509,9 @@ typedef struct _ATOM_MULTIMEDIA_CONFIG_INFO + UCHAR ucVideoInput4Info;// Video Input 4 Type (1:0) F/B setting (2) physical connector ID (5:3) reserved (7:6) + }ATOM_MULTIMEDIA_CONFIG_INFO; + +-/****************************Firmware Info Table Definitions**********************/ ++/****************************************************************************/ ++// Structures used in FirmwareInfoTable ++/****************************************************************************/ + + // usBIOSCapability Defintion: + // Bit 0 = 0: Bios image is not Posted, =1:Bios image is Posted; +@@ -1258,7 +1537,7 @@ typedef struct _ATOM_MULTIMEDIA_CONFIG_INFO + //Please don't add or expand this bitfield structure below, this one will retire soon.! + typedef struct _ATOM_FIRMWARE_CAPABILITY + { +-#if X_BYTE_ORDER == X_BIG_ENDIAN ++#if ATOM_BIG_ENDIAN + USHORT Reserved:3; + USHORT HyperMemory_Size:4; + USHORT HyperMemory_Support:1; +@@ -1447,6 +1726,9 @@ typedef struct _ATOM_FIRMWARE_INFO_V1_4 + + #define ATOM_FIRMWARE_INFO_LAST ATOM_FIRMWARE_INFO_V1_4 + ++/****************************************************************************/ ++// Structures used in IntegratedSystemInfoTable ++/****************************************************************************/ + #define IGP_CAP_FLAG_DYNAMIC_CLOCK_EN 0x2 + #define IGP_CAP_FLAG_AC_CARD 0x4 + #define IGP_CAP_FLAG_SDVO_CARD 0x8 +@@ -1528,11 +1810,11 @@ typedef struct _ATOM_INTEGRATED_SYSTEM_INFO_V2 + { + ATOM_COMMON_TABLE_HEADER sHeader; + ULONG ulBootUpEngineClock; //in 10kHz unit +- ULONG ulReserved1[2]; //must be 0x0 for the reserved ++ ULONG ulReserved1[2]; //must be 0x0 for the reserved + ULONG ulBootUpUMAClock; //in 10kHz unit + ULONG ulBootUpSidePortClock; //in 10kHz unit + ULONG ulMinSidePortClock; //in 10kHz unit +- ULONG ulReserved2[6]; //must be 0x0 for the reserved ++ ULONG ulReserved2[6]; //must be 0x0 for the reserved + ULONG ulSystemConfig; //see explanation below + ULONG ulBootUpReqDisplayVector; + ULONG ulOtherDisplayMisc; +@@ -1555,7 +1837,13 @@ typedef struct _ATOM_INTEGRATED_SYSTEM_INFO_V2 + USHORT usUMADataReturnTime; + USHORT usLinkStatusZeroTime; + USHORT usReserved; +- ULONG ulReserved3[101]; //must be 0x0 ++ ULONG ulHighVoltageHTLinkFreq; // in 10Khz ++ ULONG ulLowVoltageHTLinkFreq; // in 10Khz ++ USHORT usMaxUpStreamHTLinkWidth; ++ USHORT usMaxDownStreamHTLinkWidth; ++ USHORT usMinUpStreamHTLinkWidth; ++ USHORT usMinDownStreamHTLinkWidth; ++ ULONG ulReserved3[97]; //must be 0x0 + }ATOM_INTEGRATED_SYSTEM_INFO_V2; + + /* +@@ -1564,8 +1852,20 @@ ulBootUpUMAClock: Boot-up UMA Clock in 10Khz; it must be 0x0 when UMA is no + ulBootUpSidePortClock: Boot-up SidePort Clock in 10Khz; it must be 0x0 when SidePort Memory is not present,this could be equal to or less than maximum supported Sideport memory clock + + ulSystemConfig: +-Bit[0]: =1 PowerExpress mode =0 Non-PowerExpress mode; +-Bit[1]=1: system is running at overdrived engine clock =0:system is not running at overdrived engine clock ++Bit[0]=1: PowerExpress mode =0 Non-PowerExpress mode; ++Bit[1]=1: system boots up at AMD overdrived state or user customized mode. In this case, driver will just stick to this boot-up mode. No other PowerPlay state ++ =0: system boots up at driver control state. Power state depends on PowerPlay table. ++Bit[2]=1: PWM method is used on NB voltage control. =0: GPIO method is used. ++Bit[3]=1: Only one power state(Performance) will be supported. ++ =0: Multiple power states supported from PowerPlay table. ++Bit[4]=1: CLMC is supported and enabled on current system. ++ =0: CLMC is not supported or enabled on current system. SBIOS need to support HT link/freq change through ATIF interface. ++Bit[5]=1: Enable CDLW for all driver control power states. Max HT width is from SBIOS, while Min HT width is determined by display requirement. ++ =0: CDLW is disabled. If CLMC is enabled case, Min HT width will be set equal to Max HT width. If CLMC disabled case, Max HT width will be applied. ++Bit[6]=1: High Voltage requested for all power states. In this case, voltage will be forced at 1.1v and powerplay table voltage drop/throttling request will be ignored. ++ =0: Voltage settings is determined by powerplay table. ++Bit[7]=1: Enable CLMC as hybrid Mode. CDLD and CILR will be disabled in this case and we're using legacy C1E. This is workaround for CPU(Griffin) performance issue. ++ =0: Enable CLMC as regular mode, CDLD and CILR will be enabled. + + ulBootUpReqDisplayVector: This dword is a bit vector indicates what display devices are requested during boot-up. Refer to ATOM_DEVICE_xxx_SUPPORT for the bit vector definitions. + +@@ -1594,16 +1894,21 @@ ucDockingPinBit: which bit in this register to read the pin status; + ucDockingPinPolarity:Polarity of the pin when docked; + + ulCPUCapInfo: [7:0]=1:Griffin;[7:0]=2:Greyhound;[7:0]=3:K8, other bits reserved for now and must be 0x0 +- ++ + usNumberOfCyclesInPeriod:Indicate how many cycles when PWM duty is 100%. +-usMaxNBVoltage:Voltage regulator dependent PWM value.Set this one to 0xFF if VC without PWM. Set this to 0x0 if no VC at all. +-usMinNBVoltage:Voltage regulator dependent PWM value.Set this one to 0x00 if VC without PWM or no VC at all. ++usMaxNBVoltage:Max. voltage control value in either PWM or GPIO mode. ++usMinNBVoltage:Min. voltage control value in either PWM or GPIO mode. ++ GPIO mode: both usMaxNBVoltage & usMinNBVoltage have a valid value ulSystemConfig.SYSTEM_CONFIG_USE_PWM_ON_VOLTAGE=0 ++ PWM mode: both usMaxNBVoltage & usMinNBVoltage have a valid value ulSystemConfig.SYSTEM_CONFIG_USE_PWM_ON_VOLTAGE=1 ++ GPU SW don't control mode: usMaxNBVoltage & usMinNBVoltage=0 and no care about ulSystemConfig.SYSTEM_CONFIG_USE_PWM_ON_VOLTAGE + usBootUpNBVoltage:Boot-up voltage regulator dependent PWM value. + ++ulHTLinkFreq: Bootup HT link Frequency in 10Khz. ++usMinHTLinkWidth: Bootup minimum HT link width. If CDLW disabled, this is equal to usMaxHTLinkWidth. ++ If CDLW enabled, both upstream and downstream width should be the same during bootup. ++usMaxHTLinkWidth: Bootup maximum HT link width. If CDLW disabled, this is equal to usMinHTLinkWidth. ++ If CDLW enabled, both upstream and downstream width should be the same during bootup. + +-ulHTLinkFreq: Current HT link Frequency in 10Khz. +-usMinHTLinkWidth: +-usMaxHTLinkWidth: + usUMASyncStartDelay: Memory access latency, required for watermark calculation + usUMADataReturnTime: Memory access latency, required for watermark calculation + usLinkStatusZeroTime:Memory access latency required for watermark calculation, set this to 0x0 for K8 CPU, set a proper value in 0.01 the unit of us +@@ -1612,10 +1917,27 @@ for Griffin or Greyhound. SBIOS needs to convert to actual time by: + if T0Ttime [5:4]=01b, then usLinkStatusZeroTime=T0Ttime [3:0]*0.5us (0.0 to 7.5us) + if T0Ttime [5:4]=10b, then usLinkStatusZeroTime=T0Ttime [3:0]*2.0us (0.0 to 30us) + if T0Ttime [5:4]=11b, and T0Ttime [3:0]=0x0 to 0xa, then usLinkStatusZeroTime=T0Ttime [3:0]*20us (0.0 to 200us) ++ ++ulHighVoltageHTLinkFreq: HT link frequency for power state with low voltage. If boot up runs in HT1, this must be 0. ++ This must be less than or equal to ulHTLinkFreq(bootup frequency). ++ulLowVoltageHTLinkFreq: HT link frequency for power state with low voltage or voltage scaling 1.0v~1.1v. If boot up runs in HT1, this must be 0. ++ This must be less than or equal to ulHighVoltageHTLinkFreq. ++ ++usMaxUpStreamHTLinkWidth: Asymmetric link width support in the future, to replace usMaxHTLinkWidth. Not used for now. ++usMaxDownStreamHTLinkWidth: same as above. ++usMinUpStreamHTLinkWidth: Asymmetric link width support in the future, to replace usMinHTLinkWidth. Not used for now. ++usMinDownStreamHTLinkWidth: same as above. + */ + ++ + #define SYSTEM_CONFIG_POWEREXPRESS_ENABLE 0x00000001 + #define SYSTEM_CONFIG_RUN_AT_OVERDRIVE_ENGINE 0x00000002 ++#define SYSTEM_CONFIG_USE_PWM_ON_VOLTAGE 0x00000004 ++#define SYSTEM_CONFIG_PERFORMANCE_POWERSTATE_ONLY 0x00000008 ++#define SYSTEM_CONFIG_CLMC_ENABLED 0x00000010 ++#define SYSTEM_CONFIG_CDLW_ENABLED 0x00000020 ++#define SYSTEM_CONFIG_HIGH_VOLTAGE_REQUESTED 0x00000040 ++#define SYSTEM_CONFIG_CLMC_HYBRID_MODE_ENABLED 0x00000080 + + #define IGP_DDI_SLOT_LANE_CONFIG_MASK 0x000000FF + +@@ -1671,14 +1993,16 @@ for Griffin or Greyhound. SBIOS needs to convert to actual time by: + #define ATOM_DEVICE_DFP2_INDEX 0x00000007 + #define ATOM_DEVICE_CV_INDEX 0x00000008 + #define ATOM_DEVICE_DFP3_INDEX 0x00000009 +-#define ATOM_DEVICE_RESERVEDA_INDEX 0x0000000A +-#define ATOM_DEVICE_RESERVEDB_INDEX 0x0000000B ++#define ATOM_DEVICE_DFP4_INDEX 0x0000000A ++#define ATOM_DEVICE_DFP5_INDEX 0x0000000B + #define ATOM_DEVICE_RESERVEDC_INDEX 0x0000000C + #define ATOM_DEVICE_RESERVEDD_INDEX 0x0000000D + #define ATOM_DEVICE_RESERVEDE_INDEX 0x0000000E + #define ATOM_DEVICE_RESERVEDF_INDEX 0x0000000F +-#define ATOM_MAX_SUPPORTED_DEVICE_INFO (ATOM_DEVICE_CV_INDEX+2) ++#define ATOM_MAX_SUPPORTED_DEVICE_INFO (ATOM_DEVICE_DFP3_INDEX+1) + #define ATOM_MAX_SUPPORTED_DEVICE_INFO_2 ATOM_MAX_SUPPORTED_DEVICE_INFO ++#define ATOM_MAX_SUPPORTED_DEVICE_INFO_3 (ATOM_DEVICE_DFP5_INDEX + 1 ) ++ + #define ATOM_MAX_SUPPORTED_DEVICE (ATOM_DEVICE_RESERVEDF_INDEX+1) + + #define ATOM_DEVICE_CRT1_SUPPORT (0x1L << ATOM_DEVICE_CRT1_INDEX ) +@@ -1691,9 +2015,11 @@ for Griffin or Greyhound. SBIOS needs to convert to actual time by: + #define ATOM_DEVICE_DFP2_SUPPORT (0x1L << ATOM_DEVICE_DFP2_INDEX) + #define ATOM_DEVICE_CV_SUPPORT (0x1L << ATOM_DEVICE_CV_INDEX ) + #define ATOM_DEVICE_DFP3_SUPPORT (0x1L << ATOM_DEVICE_DFP3_INDEX ) ++#define ATOM_DEVICE_DFP4_SUPPORT (0x1L << ATOM_DEVICE_DFP4_INDEX ) ++#define ATOM_DEVICE_DFP5_SUPPORT (0x1L << ATOM_DEVICE_DFP5_INDEX ) + + #define ATOM_DEVICE_CRT_SUPPORT ATOM_DEVICE_CRT1_SUPPORT | ATOM_DEVICE_CRT2_SUPPORT +-#define ATOM_DEVICE_DFP_SUPPORT ATOM_DEVICE_DFP1_SUPPORT | ATOM_DEVICE_DFP2_SUPPORT | ATOM_DEVICE_DFP3_SUPPORT ++#define ATOM_DEVICE_DFP_SUPPORT ATOM_DEVICE_DFP1_SUPPORT | ATOM_DEVICE_DFP2_SUPPORT | ATOM_DEVICE_DFP3_SUPPORT | ATOM_DEVICE_DFP4_SUPPORT | ATOM_DEVICE_DFP5_SUPPORT + #define ATOM_DEVICE_TV_SUPPORT ATOM_DEVICE_TV1_SUPPORT | ATOM_DEVICE_TV2_SUPPORT + #define ATOM_DEVICE_LCD_SUPPORT ATOM_DEVICE_LCD1_SUPPORT | ATOM_DEVICE_LCD2_SUPPORT + +@@ -1764,10 +2090,9 @@ for Griffin or Greyhound. SBIOS needs to convert to actual time by: + // = 3-7 Reserved for future I2C engines + // [3-0] - I2C_LINE_MUX = A Mux number when it's HW assisted I2C or GPIO ID when it's SW I2C + +- + typedef struct _ATOM_I2C_ID_CONFIG + { +-#if X_BYTE_ORDER == X_BIG_ENDIAN ++#if ATOM_BIG_ENDIAN + UCHAR bfHW_Capable:1; + UCHAR bfHW_EngineID:3; + UCHAR bfI2C_LineMux:4; +@@ -1785,6 +2110,9 @@ typedef union _ATOM_I2C_ID_CONFIG_ACCESS + }ATOM_I2C_ID_CONFIG_ACCESS; + + ++/****************************************************************************/ ++// Structure used in GPIO_I2C_InfoTable ++/****************************************************************************/ + typedef struct _ATOM_GPIO_I2C_ASSIGMENT + { + USHORT usClkMaskRegisterIndex; +@@ -1814,13 +2142,16 @@ typedef struct _ATOM_GPIO_I2C_INFO + ATOM_GPIO_I2C_ASSIGMENT asGPIO_Info[ATOM_MAX_SUPPORTED_DEVICE]; + }ATOM_GPIO_I2C_INFO; + ++/****************************************************************************/ ++// Common Structure used in other structures ++/****************************************************************************/ + + #ifndef _H2INC + + //Please don't add or expand this bitfield structure below, this one will retire soon.! + typedef struct _ATOM_MODE_MISC_INFO + { +-#if X_BYTE_ORDER == X_BIG_ENDIAN ++#if ATOM_BIG_ENDIAN + USHORT Reserved:6; + USHORT RGB888:1; + USHORT DoubleClock:1; +@@ -1896,7 +2227,9 @@ typedef union _ATOM_MODE_MISC_INFO_ACCESS + // VESA_HSYNC_WIDTH = VESA_HSYNC_TIME = EDID_HSPW + // VESA_BORDER = EDID_BORDER + +- ++/****************************************************************************/ ++// Structure used in SetCRTC_UsingDTDTimingTable ++/****************************************************************************/ + typedef struct _SET_CRTC_USING_DTD_TIMING_PARAMETERS + { + USHORT usH_Size; +@@ -1914,6 +2247,9 @@ typedef struct _SET_CRTC_USING_DTD_TIMING_PARAMETERS + UCHAR ucPadding[3]; + }SET_CRTC_USING_DTD_TIMING_PARAMETERS; + ++/****************************************************************************/ ++// Structure used in SetCRTC_TimingTable ++/****************************************************************************/ + typedef struct _SET_CRTC_TIMING_PARAMETERS + { + USHORT usH_Total; // horizontal total +@@ -1934,7 +2270,11 @@ typedef struct _SET_CRTC_TIMING_PARAMETERS + }SET_CRTC_TIMING_PARAMETERS; + #define SET_CRTC_TIMING_PARAMETERS_PS_ALLOCATION SET_CRTC_TIMING_PARAMETERS + +- ++/****************************************************************************/ ++// Structure used in StandardVESA_TimingTable ++// AnalogTV_InfoTable ++// ComponentVideoInfoTable ++/****************************************************************************/ + typedef struct _ATOM_MODE_TIMING + { + USHORT usCRTC_H_Total; +@@ -1956,7 +2296,6 @@ typedef struct _ATOM_MODE_TIMING + UCHAR ucRefreshRate; + }ATOM_MODE_TIMING; + +- + typedef struct _ATOM_DTD_FORMAT + { + USHORT usPixClk; +@@ -1977,12 +2316,19 @@ typedef struct _ATOM_DTD_FORMAT + UCHAR ucRefreshRate; + }ATOM_DTD_FORMAT; + ++/****************************************************************************/ ++// Structure used in LVDS_InfoTable ++// * Need a document to describe this table ++/****************************************************************************/ + #define SUPPORTED_LCD_REFRESHRATE_30Hz 0x0004 + #define SUPPORTED_LCD_REFRESHRATE_40Hz 0x0008 + #define SUPPORTED_LCD_REFRESHRATE_50Hz 0x0010 + #define SUPPORTED_LCD_REFRESHRATE_60Hz 0x0020 + +-/****************************LVDS Info Table Definitions **********************/ ++//Once DAL sees this CAP is set, it will read EDID from LCD on its own instead of using sLCDTiming in ATOM_LVDS_INFO_V12. ++//Other entries in ATOM_LVDS_INFO_V12 are still valid/useful to DAL ++#define LCDPANEL_CAP_READ_EDID 0x1 ++ + //ucTableFormatRevision=1 + //ucTableContentRevision=1 + typedef struct _ATOM_LVDS_INFO +@@ -2111,9 +2457,9 @@ typedef struct _ATOM_SPREAD_SPECTRUM_INFO + ATOM_SPREAD_SPECTRUM_ASSIGNMENT asSS_Info[ATOM_MAX_SS_ENTRY]; + }ATOM_SPREAD_SPECTRUM_INFO; + +- +- +- ++/****************************************************************************/ ++// Structure used in AnalogTV_InfoTable (Top level) ++/****************************************************************************/ + //ucTVBootUpDefaultStd definiton: + + //ATOM_TV_NTSC 1 +@@ -2125,7 +2471,6 @@ typedef struct _ATOM_SPREAD_SPECTRUM_INFO + //ATOM_TV_PAL60 7 + //ATOM_TV_SECAM 8 + +- + //ucTVSuppportedStd definition: + #define NTSC_SUPPORT 0x1 + #define NTSCJ_SUPPORT 0x2 +@@ -2215,7 +2560,15 @@ typedef struct _ATOM_ANALOG_TV_INFO + #define ATOM_DFP3_DTD_MODE_TBL_ADDR (ATOM_DFP3_EDID_ADDR + ATOM_EDID_RAW_DATASIZE) + #define ATOM_DFP3_STD_MODE_TBL_ADDR (ATOM_DFP3_DTD_MODE_TBL_ADDR + ATOM_DTD_MODE_SUPPORT_TBL_SIZE) + +-#define ATOM_DP_TRAINING_TBL_ADDR (ATOM_DFP3_STD_MODE_TBL_ADDR+ATOM_STD_MODE_SUPPORT_TBL_SIZE) ++#define ATOM_DFP4_EDID_ADDR (ATOM_DFP3_STD_MODE_TBL_ADDR + ATOM_STD_MODE_SUPPORT_TBL_SIZE) ++#define ATOM_DFP4_DTD_MODE_TBL_ADDR (ATOM_DFP4_EDID_ADDR + ATOM_EDID_RAW_DATASIZE) ++#define ATOM_DFP4_STD_MODE_TBL_ADDR (ATOM_DFP4_DTD_MODE_TBL_ADDR + ATOM_DTD_MODE_SUPPORT_TBL_SIZE) ++ ++#define ATOM_DFP5_EDID_ADDR (ATOM_DFP4_STD_MODE_TBL_ADDR + ATOM_STD_MODE_SUPPORT_TBL_SIZE) ++#define ATOM_DFP5_DTD_MODE_TBL_ADDR (ATOM_DFP5_EDID_ADDR + ATOM_EDID_RAW_DATASIZE) ++#define ATOM_DFP5_STD_MODE_TBL_ADDR (ATOM_DFP5_DTD_MODE_TBL_ADDR + ATOM_DTD_MODE_SUPPORT_TBL_SIZE) ++ ++#define ATOM_DP_TRAINING_TBL_ADDR (ATOM_DFP5_STD_MODE_TBL_ADDR+ATOM_STD_MODE_SUPPORT_TBL_SIZE) + + #define ATOM_STACK_STORAGE_START (ATOM_DP_TRAINING_TBL_ADDR+256) + #define ATOM_STACK_STORAGE_END ATOM_STACK_STORAGE_START+512 +@@ -2228,6 +2581,15 @@ typedef struct _ATOM_ANALOG_TV_INFO + #define ATOM_VRAM_BLOCK_NEEDS_NO_RESERVATION 0x1 + #define ATOM_VRAM_BLOCK_NEEDS_RESERVATION 0x0 + ++/***********************************************************************************/ ++// Structure used in VRAM_UsageByFirmwareTable ++// Note1: This table is filled by SetBiosReservationStartInFB in CoreCommSubs.asm ++// at running time. ++// note2: From RV770, the memory is more than 32bit addressable, so we will change ++// ucTableFormatRevision=1,ucTableContentRevision=4, the strcuture remains ++// exactly same as 1.1 and 1.2 (1.3 is never in use), but ulStartAddrUsedByFirmware ++// (in offset to start of memory address) is KB aligned instead of byte aligend. ++/***********************************************************************************/ + #define ATOM_MAX_FIRMWARE_VRAM_USAGE_INFO 1 + + typedef struct _ATOM_FIRMWARE_VRAM_RESERVE_INFO +@@ -2243,8 +2605,9 @@ typedef struct _ATOM_VRAM_USAGE_BY_FIRMWARE + ATOM_FIRMWARE_VRAM_RESERVE_INFO asFirmwareVramReserveInfo[ATOM_MAX_FIRMWARE_VRAM_USAGE_INFO]; + }ATOM_VRAM_USAGE_BY_FIRMWARE; + +-/**************************************************************************/ +-//GPIO Pin lut table definition ++/****************************************************************************/ ++// Structure used in GPIO_Pin_LUTTable ++/****************************************************************************/ + typedef struct _ATOM_GPIO_PIN_ASSIGNMENT + { + USHORT usGpioPin_AIndex; +@@ -2258,9 +2621,9 @@ typedef struct _ATOM_GPIO_PIN_LUT + ATOM_GPIO_PIN_ASSIGNMENT asGPIO_Pin[1]; + }ATOM_GPIO_PIN_LUT; + +-/**************************************************************************/ +- +- ++/****************************************************************************/ ++// Structure used in ComponentVideoInfoTable ++/****************************************************************************/ + #define GPIO_PIN_ACTIVE_HIGH 0x1 + + #define MAX_SUPPORTED_CV_STANDARDS 5 +@@ -2350,8 +2713,9 @@ typedef struct _ATOM_COMPONENT_VIDEO_INFO_V21 + + #define ATOM_COMPONENT_VIDEO_INFO_LAST ATOM_COMPONENT_VIDEO_INFO_V21 + +-/**************************************************************************/ +-//Object table starts here ++/****************************************************************************/ ++// Structure used in object_InfoTable ++/****************************************************************************/ + typedef struct _ATOM_OBJECT_HEADER + { + ATOM_COMMON_TABLE_HEADER sHeader; +@@ -2596,9 +2960,9 @@ typedef struct _ATOM_ROUTER_DATA_CLOCK_PATH_SELECT_RECORD + #define ATOM_ROUTER_MUX_PIN_STATE_MASK 0x0f + #define ATOM_ROUTER_MUX_PIN_SINGLE_STATE_COMPLEMENT 0x01 + +-/**************************************************************************/ +-//ASIC voltage data table starts here +- ++/****************************************************************************/ ++// ASIC voltage data table ++/****************************************************************************/ + typedef struct _ATOM_VOLTAGE_INFO_HEADER + { + USHORT usVDDCBaseLevel; //In number of 50mv unit +@@ -2824,13 +3188,16 @@ typedef struct _ATOM_ASIC_INTERNAL_SS_INFO{ + #define ATOM_S0_CV_DIN 0x00002000L + #define ATOM_S0_CV_MASK (ATOM_S0_CV+ATOM_S0_CV_DIN) + +- + #define ATOM_S0_DFP1 0x00010000L + #define ATOM_S0_DFP2 0x00020000L + #define ATOM_S0_LCD1 0x00040000L + #define ATOM_S0_LCD2 0x00080000L + #define ATOM_S0_TV2 0x00100000L + #define ATOM_S0_DFP3 0x00200000L ++#define ATOM_S0_DFP4 0x00400000L ++#define ATOM_S0_DFP5 0x00800000L ++ ++#define ATOM_S0_DFP_MASK ATOM_S0_DFP1 | ATOM_S0_DFP2 | ATOM_S0_DFP3 | ATOM_S0_DFP4 | ATOM_S0_DFP5 + + #define ATOM_S0_FAD_REGISTER_BUG 0x02000000L // If set, indicates we are running a PCIE asic with + // the FAD/HDP reg access bug. Bit is read by DAL +@@ -2888,7 +3255,6 @@ typedef struct _ATOM_ASIC_INTERNAL_SS_INFO{ + #define ATOM_S1_ROM_LOCATION_MASK 0x0000FFFFL + #define ATOM_S1_PCI_BUS_DEV_MASK 0xFFFF0000L + +- + // BIOS_2_SCRATCH Definition + #define ATOM_S2_TV1_STANDARD_MASK 0x0000000FL + #define ATOM_S2_CURRENT_BL_LEVEL_MASK 0x0000FF00L +@@ -2904,12 +3270,14 @@ typedef struct _ATOM_ASIC_INTERNAL_SS_INFO{ + #define ATOM_S2_DFP2_DPMS_STATE 0x00800000L + #define ATOM_S2_CV_DPMS_STATE 0x01000000L + #define ATOM_S2_DFP3_DPMS_STATE 0x02000000L ++#define ATOM_S2_DFP4_DPMS_STATE 0x04000000L ++#define ATOM_S2_DFP5_DPMS_STATE 0x08000000L + +-#define ATOM_S2_DEVICE_DPMS_STATE (ATOM_S2_CRT1_DPMS_STATE+ATOM_S2_LCD1_DPMS_STATE+ATOM_S2_TV1_DPMS_STATE+\ +- ATOM_S2_DFP1I_DPMS_STATE+ATOM_S2_CRT2_DPMS_STATE+ATOM_S2_LCD2_DPMS_STATE+\ +- ATOM_S2_TV2_DPMS_STATE+ATOM_S2_DFP1X_DPMS_STATE+ATOM_S2_CV_DPMS_STATE+\ +- ATOM_S2_DFP3_DPMS_STATE) ++#define ATOM_S2_DFP_DPM_STATE ATOM_S2_DFP1_DPMS_STATE | ATOM_S2_DFP2_DPMS_STATE | ATOM_S2_DFP3_DPMS_STATE | ATOM_S2_DFP4_DPMS_STATE | ATOM_S2_DFP5_DPMS_STATE + ++#define ATOM_S2_DEVICE_DPMS_STATE (ATOM_S2_CRT1_DPMS_STATE+ATOM_S2_LCD1_DPMS_STATE+ATOM_S2_TV1_DPMS_STATE+\ ++ ATOM_S2_DFP_DPMS_STATE+ATOM_S2_CRT2_DPMS_STATE+ATOM_S2_LCD2_DPMS_STATE+\ ++ ATOM_S2_TV2_DPMS_STATE+ATOM_S2_CV_DPMS_STATE + + #define ATOM_S2_FORCEDLOWPWRMODE_STATE_MASK 0x0C000000L + #define ATOM_S2_FORCEDLOWPWRMODE_STATE_MASK_SHIFT 26 +@@ -2938,6 +3306,8 @@ typedef struct _ATOM_ASIC_INTERNAL_SS_INFO{ + #define ATOM_S2_DFP2_DPMS_STATEb2 0x80 + #define ATOM_S2_CV_DPMS_STATEb3 0x01 + #define ATOM_S2_DFP3_DPMS_STATEb3 0x02 ++#define ATOM_S2_DFP4_DPMS_STATEb3 0x04 ++#define ATOM_S2_DFP5_DPMS_STATEb3 0x08 + + #define ATOM_S2_DEVICE_DPMS_MASKw1 0x3FF + #define ATOM_S2_FORCEDLOWPWRMODE_STATE_MASKb3 0x0C +@@ -2957,6 +3327,8 @@ typedef struct _ATOM_ASIC_INTERNAL_SS_INFO{ + #define ATOM_S3_DFP2_ACTIVE 0x00000080L + #define ATOM_S3_CV_ACTIVE 0x00000100L + #define ATOM_S3_DFP3_ACTIVE 0x00000200L ++#define ATOM_S3_DFP4_ACTIVE 0x00000400L ++#define ATOM_S3_DFP5_ACTIVE 0x00000800L + + #define ATOM_S3_DEVICE_ACTIVE_MASK 0x000003FFL + +@@ -2973,8 +3345,10 @@ typedef struct _ATOM_ASIC_INTERNAL_SS_INFO{ + #define ATOM_S3_DFP2_CRTC_ACTIVE 0x00800000L + #define ATOM_S3_CV_CRTC_ACTIVE 0x01000000L + #define ATOM_S3_DFP3_CRTC_ACTIVE 0x02000000L ++#define ATOM_S3_DFP4_CRTC_ACTIVE 0x04000000L ++#define ATOM_S3_DFP5_CRTC_ACTIVE 0x08000000L + +-#define ATOM_S3_DEVICE_CRTC_ACTIVE_MASK 0x03FF0000L ++#define ATOM_S3_DEVICE_CRTC_ACTIVE_MASK 0x0FFF0000L + #define ATOM_S3_ASIC_GUI_ENGINE_HUNG 0x20000000L + #define ATOM_S3_ALLOW_FAST_PWR_SWITCH 0x40000000L + #define ATOM_S3_RQST_GPU_USE_MIN_PWR 0x80000000L +@@ -2990,8 +3364,10 @@ typedef struct _ATOM_ASIC_INTERNAL_SS_INFO{ + #define ATOM_S3_DFP2_ACTIVEb0 0x80 + #define ATOM_S3_CV_ACTIVEb1 0x01 + #define ATOM_S3_DFP3_ACTIVEb1 0x02 ++#define ATOM_S3_DFP4_ACTIVEb1 0x04 ++#define ATOM_S3_DFP5_ACTIVEb1 0x08 + +-#define ATOM_S3_ACTIVE_CRTC1w0 0x3FF ++#define ATOM_S3_ACTIVE_CRTC1w0 0xFFF + + #define ATOM_S3_CRT1_CRTC_ACTIVEb2 0x01 + #define ATOM_S3_LCD1_CRTC_ACTIVEb2 0x02 +@@ -3003,8 +3379,10 @@ typedef struct _ATOM_ASIC_INTERNAL_SS_INFO{ + #define ATOM_S3_DFP2_CRTC_ACTIVEb2 0x80 + #define ATOM_S3_CV_CRTC_ACTIVEb3 0x01 + #define ATOM_S3_DFP3_CRTC_ACTIVEb3 0x02 ++#define ATOM_S3_DFP4_CRTC_ACTIVEb3 0x04 ++#define ATOM_S3_DFP5_CRTC_ACTIVEb3 0x08 + +-#define ATOM_S3_ACTIVE_CRTC2w1 0x3FF ++#define ATOM_S3_ACTIVE_CRTC2w1 0xFFF + + #define ATOM_S3_ASIC_GUI_ENGINE_HUNGb3 0x20 + #define ATOM_S3_ALLOW_FAST_PWR_SWITCHb3 0x40 +@@ -3015,13 +3393,11 @@ typedef struct _ATOM_ASIC_INTERNAL_SS_INFO{ + #define ATOM_S4_LCD1_REFRESH_MASK 0x0000FF00L + #define ATOM_S4_LCD1_REFRESH_SHIFT 8 + +- + //Byte aligned defintion for BIOS usage + #define ATOM_S4_LCD1_PANEL_ID_MASKb0 0x0FF + #define ATOM_S4_LCD1_REFRESH_MASKb1 ATOM_S4_LCD1_PANEL_ID_MASKb0 + #define ATOM_S4_VRAM_INFO_MASKb2 ATOM_S4_LCD1_PANEL_ID_MASKb0 + +- + // BIOS_5_SCRATCH Definition, BIOS_5_SCRATCH is used by Firmware only !!!! + #define ATOM_S5_DOS_REQ_CRT1b0 0x01 + #define ATOM_S5_DOS_REQ_LCD1b0 0x02 +@@ -3033,6 +3409,8 @@ typedef struct _ATOM_ASIC_INTERNAL_SS_INFO{ + #define ATOM_S5_DOS_REQ_DFP2b0 0x80 + #define ATOM_S5_DOS_REQ_CVb1 0x01 + #define ATOM_S5_DOS_REQ_DFP3b1 0x02 ++#define ATOM_S5_DOS_REQ_DFP4b1 0x04 ++#define ATOM_S5_DOS_REQ_DFP5b1 0x08 + + #define ATOM_S5_DOS_REQ_DEVICEw0 0x03FF + +@@ -3046,6 +3424,8 @@ typedef struct _ATOM_ASIC_INTERNAL_SS_INFO{ + #define ATOM_S5_DOS_REQ_DFP2 0x0080 + #define ATOM_S5_DOS_REQ_CV 0x0100 + #define ATOM_S5_DOS_REQ_DFP3 0x0200 ++#define ATOM_S5_DOS_REQ_DFP4 0x0400 ++#define ATOM_S5_DOS_REQ_DFP5 0x0800 + + #define ATOM_S5_DOS_FORCE_CRT1b2 ATOM_S5_DOS_REQ_CRT1b0 + #define ATOM_S5_DOS_FORCE_TV1b2 ATOM_S5_DOS_REQ_TV1b0 +@@ -3073,7 +3453,6 @@ typedef struct _ATOM_ASIC_INTERNAL_SS_INFO{ + #define ATOM_S6_DISPLAY_STATE_CHANGE 0x00004000L //This bit is recycled when ATOM_BIOS_INFO_BIOS_SCRATCH6_SCL2_REDEFINE is set,previously it's SCL2_H_expansion + #define ATOM_S6_I2C_STATE_CHANGE 0x00008000L //This bit is recycled,when ATOM_BIOS_INFO_BIOS_SCRATCH6_SCL2_REDEFINE is set,previously it's SCL2_V_expansion + +- + #define ATOM_S6_ACC_REQ_CRT1 0x00010000L + #define ATOM_S6_ACC_REQ_LCD1 0x00020000L + #define ATOM_S6_ACC_REQ_TV1 0x00040000L +@@ -3084,8 +3463,10 @@ typedef struct _ATOM_ASIC_INTERNAL_SS_INFO{ + #define ATOM_S6_ACC_REQ_DFP2 0x00800000L + #define ATOM_S6_ACC_REQ_CV 0x01000000L + #define ATOM_S6_ACC_REQ_DFP3 0x02000000L ++#define ATOM_S6_ACC_REQ_DFP4 0x04000000L ++#define ATOM_S6_ACC_REQ_DFP5 0x08000000L + +-#define ATOM_S6_ACC_REQ_MASK 0x03FF0000L ++#define ATOM_S6_ACC_REQ_MASK 0x0FFF0000L + #define ATOM_S6_SYSTEM_POWER_MODE_CHANGE 0x10000000L + #define ATOM_S6_ACC_BLOCK_DISPLAY_SWITCH 0x20000000L + #define ATOM_S6_VRI_BRIGHTNESS_CHANGE 0x40000000L +@@ -3117,6 +3498,8 @@ typedef struct _ATOM_ASIC_INTERNAL_SS_INFO{ + #define ATOM_S6_ACC_REQ_DFP2b2 0x80 + #define ATOM_S6_ACC_REQ_CVb3 0x01 + #define ATOM_S6_ACC_REQ_DFP3b3 0x02 ++#define ATOM_S6_ACC_REQ_DFP4b3 0x04 ++#define ATOM_S6_ACC_REQ_DFP5b3 0x08 + + #define ATOM_S6_ACC_REQ_DEVICEw1 ATOM_S5_DOS_REQ_DEVICEw0 + #define ATOM_S6_SYSTEM_POWER_MODE_CHANGEb3 0x10 +@@ -3391,7 +3774,7 @@ typedef struct _ATOM_TV_MODE_SCALER_PTR + typedef struct _ATOM_STANDARD_VESA_TIMING + { + ATOM_COMMON_TABLE_HEADER sHeader; +- ATOM_MODE_TIMING aModeTimings[16]; // 16 is not the real array number, just for initial allocation ++ ATOM_DTD_FORMAT aModeTimings[16]; // 16 is not the real array number, just for initial allocation + }ATOM_STANDARD_VESA_TIMING; + + +@@ -3426,7 +3809,7 @@ typedef struct _ATOM_MEMORY_VENDOR_BLOCK{ + + + typedef struct _ATOM_MEMORY_SETTING_ID_CONFIG{ +-#if X_BYTE_ORDER == X_BIG_ENDIAN ++#if ATOM_BIG_ENDIAN + ULONG ucMemBlkId:8; + ULONG ulMemClockRange:24; + #else +@@ -3470,6 +3853,11 @@ typedef struct _ATOM_INIT_REG_BLOCK{ + #define VALUE_SAME_AS_ABOVE 0 + #define VALUE_MASK_DWORD 0x84 + ++#define INDEX_ACCESS_RANGE_BEGIN (VALUE_DWORD + 1) ++#define INDEX_ACCESS_RANGE_END (INDEX_ACCESS_RANGE_BEGIN + 1) ++#define VALUE_INDEX_ACCESS_SINGLE (INDEX_ACCESS_RANGE_END + 1) ++ ++ + typedef struct _ATOM_MC_INIT_PARAM_TABLE + { + ATOM_COMMON_TABLE_HEADER sHeader; +@@ -3508,6 +3896,28 @@ typedef struct _ATOM_MC_INIT_PARAM_TABLE + #define QIMONDA INFINEON + #define PROMOS MOSEL + ++/////////////Support for GDDR5 MC uCode to reside in upper 64K of ROM///////////// ++ ++#define UCODE_ROM_START_ADDRESS 0x1c000 ++#define UCODE_SIGNATURE 0x4375434d // 'MCuC' - MC uCode ++ ++//uCode block header for reference ++ ++typedef struct _MCuCodeHeader ++{ ++ ULONG ulSignature; ++ UCHAR ucRevision; ++ UCHAR ucChecksum; ++ UCHAR ucReserved1; ++ UCHAR ucReserved2; ++ USHORT usParametersLength; ++ USHORT usUCodeLength; ++ USHORT usReserved1; ++ USHORT usReserved2; ++} MCuCodeHeader; ++ ++////////////////////////////////////////////////////////////////////////////////// ++ + #define ATOM_MAX_NUMBER_OF_VRAM_MODULE 16 + + #define ATOM_VRAM_MODULE_MEMORY_VENDOR_ID_MASK 0xF +@@ -3564,6 +3974,42 @@ typedef struct _ATOM_VRAM_MODULE_V2 + typedef struct _ATOM_MEMORY_TIMING_FORMAT + { + ULONG ulClkRange; // memory clock in 10kHz unit, when target memory clock is below this clock, use this memory timing ++ union{ ++ USHORT usMRS; // mode register ++ USHORT usDDR3_MR0; ++ }; ++ union{ ++ USHORT usEMRS; // extended mode register ++ USHORT usDDR3_MR1; ++ }; ++ UCHAR ucCL; // CAS latency ++ UCHAR ucWL; // WRITE Latency ++ UCHAR uctRAS; // tRAS ++ UCHAR uctRC; // tRC ++ UCHAR uctRFC; // tRFC ++ UCHAR uctRCDR; // tRCDR ++ UCHAR uctRCDW; // tRCDW ++ UCHAR uctRP; // tRP ++ UCHAR uctRRD; // tRRD ++ UCHAR uctWR; // tWR ++ UCHAR uctWTR; // tWTR ++ UCHAR uctPDIX; // tPDIX ++ UCHAR uctFAW; // tFAW ++ UCHAR uctAOND; // tAOND ++ union ++ { ++ struct { ++ UCHAR ucflag; // flag to control memory timing calculation. bit0= control EMRS2 Infineon ++ UCHAR ucReserved; ++ }; ++ USHORT usDDR3_MR2; ++ }; ++}ATOM_MEMORY_TIMING_FORMAT; ++ ++ ++typedef struct _ATOM_MEMORY_TIMING_FORMAT_V1 ++{ ++ ULONG ulClkRange; // memory clock in 10kHz unit, when target memory clock is below this clock, use this memory timing + USHORT usMRS; // mode register + USHORT usEMRS; // extended mode register + UCHAR ucCL; // CAS latency +@@ -3581,16 +4027,31 @@ typedef struct _ATOM_MEMORY_TIMING_FORMAT + UCHAR uctFAW; // tFAW + UCHAR uctAOND; // tAOND + UCHAR ucflag; // flag to control memory timing calculation. bit0= control EMRS2 Infineon +- UCHAR ucReserved; // +-}ATOM_MEMORY_TIMING_FORMAT; ++////////////////////////////////////GDDR parameters/////////////////////////////////// ++ UCHAR uctCCDL; // ++ UCHAR uctCRCRL; // ++ UCHAR uctCRCWL; // ++ UCHAR uctCKE; // ++ UCHAR uctCKRSE; // ++ UCHAR uctCKRSX; // ++ UCHAR uctFAW32; // ++ UCHAR ucReserved1; // ++ UCHAR ucReserved2; // ++ UCHAR ucTerminator; ++}ATOM_MEMORY_TIMING_FORMAT_V1; + +-#define MEM_TIMING_FLAG_APP_MODE 0x01 // =0 mid clock range =1 high clock range + + typedef struct _ATOM_MEMORY_FORMAT + { + ULONG ulDllDisClock; // memory DLL will be disable when target memory clock is below this clock +- USHORT usEMRS2Value; // EMRS2 Value is used for GDDR2 and GDDR4 memory type +- USHORT usEMRS3Value; // EMRS3 Value is used for GDDR2 and GDDR4 memory type ++ union{ ++ USHORT usEMRS2Value; // EMRS2 Value is used for GDDR2 and GDDR4 memory type ++ USHORT usDDR3_Reserved; // Not used for DDR3 memory ++ }; ++ union{ ++ USHORT usEMRS3Value; // EMRS3 Value is used for GDDR2 and GDDR4 memory type ++ USHORT usDDR3_MR3; // Used for DDR3 memory ++ }; + UCHAR ucMemoryType; // [7:4]=0x1:DDR1;=0x2:DDR2;=0x3:DDR3;=0x4:DDR4;[3:0] - must not be used for now; + UCHAR ucMemoryVenderID; // Predefined,never change across designs or memory type/vender. If not predefined, vendor detection table gets executed + UCHAR ucRow; // Number of Row,in power of 2; +@@ -3629,6 +4090,79 @@ typedef struct _ATOM_VRAM_MODULE_V3 + + #define ATOM_VRAM_MODULE ATOM_VRAM_MODULE_V3 + ++typedef struct _ATOM_VRAM_MODULE_V4 ++{ ++ ULONG ulChannelMapCfg; // board dependent parameter: Channel combination ++ USHORT usModuleSize; // size of ATOM_VRAM_MODULE_V4, make it easy for VBIOS to look for next entry of VRAM_MODULE ++ USHORT usPrivateReserved; // BIOS internal reserved space to optimize code size, updated by the compiler, shouldn't be modified manually!! ++ // MC_ARB_RAMCFG (includes NOOFBANK,NOOFRANKS,NOOFROWS,NOOFCOLS) ++ USHORT usReserved; ++ UCHAR ucExtMemoryID; // An external indicator (by hardcode, callback or pin) to tell what is the current memory module ++ UCHAR ucMemoryType; // [7:4]=0x1:DDR1;=0x2:DDR2;=0x3:DDR3;=0x4:DDR4; 0x5:DDR5 [3:0] - Must be 0x0 for now; ++ UCHAR ucChannelNum; // Number of channels present in this module config ++ UCHAR ucChannelWidth; // 0 - 32 bits; 1 - 64 bits ++ UCHAR ucDensity; // _8Mx32, _16Mx32, _16Mx16, _32Mx16 ++ UCHAR ucFlag; // To enable/disable functionalities based on memory type ++ UCHAR ucMisc; // bit0: 0 - single rank; 1 - dual rank; bit2: 0 - burstlength 4, 1 - burstlength 8 ++ UCHAR ucVREFI; // board dependent parameter ++ UCHAR ucNPL_RT; // board dependent parameter:NPL round trip delay, used for calculate memory timing parameters ++ UCHAR ucPreamble; // [7:4] Write Preamble, [3:0] Read Preamble ++ UCHAR ucMemorySize; // BIOS internal reserved space to optimize code size, updated by the compiler, shouldn't be modified manually!! ++ // Total memory size in unit of 16MB for CONFIG_MEMSIZE - bit[23:0] zeros ++ UCHAR ucReserved[3]; ++ ++//compare with V3, we flat the struct by merging ATOM_MEMORY_FORMAT (as is) into V4 as the same level ++ union{ ++ USHORT usEMRS2Value; // EMRS2 Value is used for GDDR2 and GDDR4 memory type ++ USHORT usDDR3_Reserved; ++ }; ++ union{ ++ USHORT usEMRS3Value; // EMRS3 Value is used for GDDR2 and GDDR4 memory type ++ USHORT usDDR3_MR3; // Used for DDR3 memory ++ }; ++ UCHAR ucMemoryVenderID; // Predefined, If not predefined, vendor detection table gets executed ++ UCHAR ucRefreshRateFactor; // [1:0]=RefreshFactor (00=8ms, 01=16ms, 10=32ms,11=64ms) ++ UCHAR ucReserved2[2]; ++ ATOM_MEMORY_TIMING_FORMAT asMemTiming[5];//Memory Timing block sort from lower clock to higher clock ++}ATOM_VRAM_MODULE_V4; ++ ++#define VRAM_MODULE_V4_MISC_RANK_MASK 0x3 ++#define VRAM_MODULE_V4_MISC_DUAL_RANK 0x1 ++#define VRAM_MODULE_V4_MISC_BL_MASK 0x4 ++#define VRAM_MODULE_V4_MISC_BL8 0x4 ++#define VRAM_MODULE_V4_MISC_DUAL_CS 0x10 ++ ++typedef struct _ATOM_VRAM_MODULE_V5 ++{ ++ ULONG ulChannelMapCfg; // board dependent parameter: Channel combination ++ USHORT usModuleSize; // size of ATOM_VRAM_MODULE_V4, make it easy for VBIOS to look for next entry of VRAM_MODULE ++ USHORT usPrivateReserved; // BIOS internal reserved space to optimize code size, updated by the compiler, shouldn't be modified manually!! ++ // MC_ARB_RAMCFG (includes NOOFBANK,NOOFRANKS,NOOFROWS,NOOFCOLS) ++ USHORT usReserved; ++ UCHAR ucExtMemoryID; // An external indicator (by hardcode, callback or pin) to tell what is the current memory module ++ UCHAR ucMemoryType; // [7:4]=0x1:DDR1;=0x2:DDR2;=0x3:DDR3;=0x4:DDR4; 0x5:DDR5 [3:0] - Must be 0x0 for now; ++ UCHAR ucChannelNum; // Number of channels present in this module config ++ UCHAR ucChannelWidth; // 0 - 32 bits; 1 - 64 bits ++ UCHAR ucDensity; // _8Mx32, _16Mx32, _16Mx16, _32Mx16 ++ UCHAR ucFlag; // To enable/disable functionalities based on memory type ++ UCHAR ucMisc; // bit0: 0 - single rank; 1 - dual rank; bit2: 0 - burstlength 4, 1 - burstlength 8 ++ UCHAR ucVREFI; // board dependent parameter ++ UCHAR ucNPL_RT; // board dependent parameter:NPL round trip delay, used for calculate memory timing parameters ++ UCHAR ucPreamble; // [7:4] Write Preamble, [3:0] Read Preamble ++ UCHAR ucMemorySize; // BIOS internal reserved space to optimize code size, updated by the compiler, shouldn't be modified manually!! ++ // Total memory size in unit of 16MB for CONFIG_MEMSIZE - bit[23:0] zeros ++ UCHAR ucReserved[3]; ++ ++//compare with V3, we flat the struct by merging ATOM_MEMORY_FORMAT (as is) into V4 as the same level ++ USHORT usEMRS2Value; // EMRS2 Value is used for GDDR2 and GDDR4 memory type ++ USHORT usEMRS3Value; // EMRS3 Value is used for GDDR2 and GDDR4 memory type ++ UCHAR ucMemoryVenderID; // Predefined, If not predefined, vendor detection table gets executed ++ UCHAR ucRefreshRateFactor; // [1:0]=RefreshFactor (00=8ms, 01=16ms, 10=32ms,11=64ms) ++ UCHAR ucFIFODepth; // FIFO depth supposes to be detected during vendor detection, but if we dont do vendor detection we have to hardcode FIFO Depth ++ UCHAR ucCDR_Bandwidth; // [0:3]=Read CDR bandwidth, [4:7] - Write CDR Bandwidth ++ ATOM_MEMORY_TIMING_FORMAT_V1 asMemTiming[5];//Memory Timing block sort from lower clock to higher clock ++}ATOM_VRAM_MODULE_V5; ++ + typedef struct _ATOM_VRAM_INFO_V2 + { + ATOM_COMMON_TABLE_HEADER sHeader; +@@ -3651,6 +4185,21 @@ typedef struct _ATOM_VRAM_INFO_V3 + + #define ATOM_VRAM_INFO_LAST ATOM_VRAM_INFO_V3 + ++typedef struct _ATOM_VRAM_INFO_V4 ++{ ++ ATOM_COMMON_TABLE_HEADER sHeader; ++ USHORT usMemAdjustTblOffset; // offset of ATOM_INIT_REG_BLOCK structure for memory vendor specific MC adjust setting ++ USHORT usMemClkPatchTblOffset; // offset of ATOM_INIT_REG_BLOCK structure for memory clock specific MC setting ++ USHORT usRerseved; ++ UCHAR ucMemDQ7_0ByteRemap; // DQ line byte remap, =0: Memory Data line BYTE0, =1: BYTE1, =2: BYTE2, =3: BYTE3 ++ ULONG ulMemDQ7_0BitRemap; // each DQ line ( 7~0) use 3bits, like: DQ0=Bit[2:0], DQ1:[5:3], ... DQ7:[23:21] ++ UCHAR ucReservde[4]; ++ UCHAR ucNumOfVRAMModule; ++ ATOM_VRAM_MODULE_V4 aVramInfo[ATOM_MAX_NUMBER_OF_VRAM_MODULE]; // just for allocation, real number of blocks is in ucNumOfVRAMModule; ++ ATOM_INIT_REG_BLOCK asMemPatch; // for allocation ++ // ATOM_INIT_REG_BLOCK aMemAdjust; ++}ATOM_VRAM_INFO_V4; ++ + typedef struct _ATOM_VRAM_GPIO_DETECTION_INFO + { + ATOM_COMMON_TABLE_HEADER sHeader; +@@ -3954,6 +4503,7 @@ typedef struct _DP_ENCODER_SERVICE_PARAMETERS + #define ATOM_DP_ACTION_TRAINING_PATTERN_SEL 0x04 + #define ATOM_DP_ACTION_SET_VSWING_PREEMP 0x05 + #define ATOM_DP_ACTION_GET_VSWING_PREEMP 0x06 ++#define ATOM_DP_ACTION_BLANKING 0x07 + + // ucConfig + #define ATOM_DP_CONFIG_ENCODER_SEL_MASK 0x03 +@@ -4072,7 +4622,7 @@ typedef struct _COMPASSIONATE_DATA + + typedef struct _ATOM_CONNECTOR_INFO + { +-#if X_BYTE_ORDER == X_BIG_ENDIAN ++#if ATOM_BIG_ENDIAN + UCHAR bfConnectorType:4; + UCHAR bfAssociatedDAC:4; + #else +@@ -4469,17 +5019,6 @@ typedef struct _ATOM_POWERPLAY_INFO_V3 + #define ENABLE_LVDS_SS_PARAMETERS_V3 ENABLE_SPREAD_SPECTRUM_ON_PPLL + + /*********************************************************************************/ +-#define ATOM_S3_SCALER2_ACTIVE_H 0x00004000L +-#define ATOM_S3_SCALER2_ACTIVE_V 0x00008000L +-#define ATOM_S6_REQ_SCALER2_H 0x00004000L +-#define ATOM_S6_REQ_SCALER2_V 0x00008000L +- +-#define ATOM_S3_SCALER1_ACTIVE_H ATOM_S3_LCD_FULLEXPANSION_ACTIVE +-#define ATOM_S3_SCALER1_ACTIVE_V ATOM_S3_LCD_EXPANSION_ASPEC_RATIO_ACTIVE +- +-#define ATOM_S6_REQ_SCALER1_H ATOM_S6_REQ_LCD_EXPANSION_FULL +-#define ATOM_S6_REQ_SCALER1_V ATOM_S6_REQ_LCD_EXPANSION_ASPEC_RATIO +-//========================================================================================== + + #pragma pack() // BIOS data must use byte aligment + +diff --git a/src/Makefile.am b/src/Makefile.am +index 5333495..d65a3e4 100644 +--- a/src/Makefile.am ++++ b/src/Makefile.am +@@ -26,8 +26,11 @@ + # _ladir passes a dummy rpath to libtool so the thing will actually link + # TODO: -nostdlib/-Bstatic/-lgcc platform magic, not installing the .a, etc. + ++radeon_drv_la_LIBADD = ++ + if DRI + RADEON_DRI_SRCS = radeon_dri.c ++radeon_drv_la_LIBADD += $(DRI_LIBS) + endif + + RADEON_ATOMBIOS_SOURCES = \ +@@ -70,6 +73,11 @@ AM_CFLAGS = @XORG_CFLAGS@ @DRI_CFLAGS@ @XMODES_CFLAGS@ -DDISABLE_EASF -DENABLE_A + + INCLUDES = -I$(srcdir)/AtomBios/includes + ++if XSERVER_LIBPCIACCESS ++ati_drv_la_LIBADD = $(PCIACCESS_LIBS) ++radeon_drv_la_LIBADD += $(PCIACCESS_LIBS) ++endif ++ + ati_drv_la_LTLIBRARIES = ati_drv.la + ati_drv_la_LDFLAGS = -module -avoid-version + ati_drv_ladir = @moduledir@/drivers +@@ -80,7 +88,7 @@ radeon_drv_la_LTLIBRARIES = radeon_drv.la + radeon_drv_la_LDFLAGS = -module -avoid-version + radeon_drv_ladir = @moduledir@/drivers + radeon_drv_la_SOURCES = \ +- radeon_accel.c radeon_cursor.c radeon_dga.c \ ++ radeon_accel.c radeon_cursor.c radeon_dga.c radeon_legacy_memory.c \ + radeon_driver.c radeon_video.c radeon_bios.c radeon_mm_i2c.c \ + radeon_vip.c radeon_misc.c radeon_probe.c \ + legacy_crtc.c legacy_output.c \ +@@ -120,7 +128,6 @@ EXTRA_DIST = \ + radeon_render.c \ + radeon_accelfuncs.c \ + radeon_textured_videofuncs.c \ +- \ + ati.h \ + ativersion.h \ + generic_bus.h \ +diff --git a/src/ati_pciids_gen.h b/src/ati_pciids_gen.h +index a740df8..633c5d3 100644 +--- a/src/ati_pciids_gen.h ++++ b/src/ati_pciids_gen.h +@@ -1,4 +1,5 @@ + #define PCI_CHIP_RV380_3150 0x3150 ++#define PCI_CHIP_RV380_3151 0x3151 + #define PCI_CHIP_RV380_3152 0x3152 + #define PCI_CHIP_RV380_3154 0x3154 + #define PCI_CHIP_RV380_3E50 0x3E50 +@@ -330,6 +331,9 @@ + #define PCI_CHIP_R600_940A 0x940A + #define PCI_CHIP_R600_940B 0x940B + #define PCI_CHIP_R600_940F 0x940F ++#define PCI_CHIP_RV770_9440 0x9440 ++#define PCI_CHIP_RV770_9441 0x9441 ++#define PCI_CHIP_RV770_9442 0x9442 + #define PCI_CHIP_RV610_94C0 0x94C0 + #define PCI_CHIP_RV610_94C1 0x94C1 + #define PCI_CHIP_RV610_94C3 0x94C3 +@@ -347,6 +351,7 @@ + #define PCI_CHIP_RV670_9507 0x9507 + #define PCI_CHIP_RV670_950F 0x950F + #define PCI_CHIP_RV670_9511 0x9511 ++#define PCI_CHIP_RV670_9515 0x9515 + #define PCI_CHIP_RV630_9580 0x9580 + #define PCI_CHIP_RV630_9581 0x9581 + #define PCI_CHIP_RV630_9583 0x9583 +diff --git a/src/atombios_crtc.c b/src/atombios_crtc.c +index 363addf..4e2395f 100644 +--- a/src/atombios_crtc.c ++++ b/src/atombios_crtc.c +@@ -43,11 +43,33 @@ + + #ifdef XF86DRI + #define _XF86DRI_SERVER_ +-#include "radeon_dri.h" +-#include "radeon_sarea.h" ++#include "radeon_drm.h" + #include "sarea.h" + #endif + ++AtomBiosResult ++atombios_lock_crtc(atomBiosHandlePtr atomBIOS, int crtc, int lock) ++{ ++ ENABLE_CRTC_PS_ALLOCATION crtc_data; ++ AtomBiosArgRec data; ++ unsigned char *space; ++ ++ crtc_data.ucCRTC = crtc; ++ crtc_data.ucEnable = lock; ++ ++ data.exec.index = GetIndexIntoMasterTable(COMMAND, UpdateCRTC_DoubleBufferRegisters); ++ data.exec.dataSpace = (void *)&space; ++ data.exec.pspace = &crtc_data; ++ ++ if (RHDAtomBiosFunc(atomBIOS->scrnIndex, atomBIOS, ATOMBIOS_EXEC, &data) == ATOM_SUCCESS) { ++ ErrorF("%s CRTC %d success\n", lock? "Lock":"Unlock", crtc); ++ return ATOM_SUCCESS ; ++ } ++ ++ ErrorF("Lock CRTC failed\n"); ++ return ATOM_NOT_IMPLEMENTED; ++} ++ + static AtomBiosResult + atombios_enable_crtc(atomBiosHandlePtr atomBIOS, int crtc, int state) + { +@@ -105,7 +127,7 @@ atombios_blank_crtc(atomBiosHandlePtr atomBIOS, int crtc, int state) + crtc_data.ucCRTC = crtc; + crtc_data.ucBlanking = state; + +- data.exec.index = offsetof(ATOM_MASTER_LIST_OF_COMMAND_TABLES, BlankCRTC) / sizeof(unsigned short); ++ data.exec.index = GetIndexIntoMasterTable(COMMAND, BlankCRTC); + data.exec.dataSpace = (void *)&space; + data.exec.pspace = &crtc_data; + +@@ -146,10 +168,27 @@ atombios_set_crtc_timing(atomBiosHandlePtr atomBIOS, SET_CRTC_TIMING_PARAMETERS_ + { + AtomBiosArgRec data; + unsigned char *space; ++ SET_CRTC_TIMING_PARAMETERS_PS_ALLOCATION conv_param; ++ ++ conv_param.usH_Total = cpu_to_le16(crtc_param->usH_Total); ++ conv_param.usH_Disp = cpu_to_le16(crtc_param->usH_Disp); ++ conv_param.usH_SyncStart = cpu_to_le16(crtc_param->usH_SyncStart); ++ conv_param.usH_SyncWidth = cpu_to_le16(crtc_param->usH_SyncWidth); ++ conv_param.usV_Total = cpu_to_le16(crtc_param->usV_Total); ++ conv_param.usV_Disp = cpu_to_le16(crtc_param->usV_Disp); ++ conv_param.usV_SyncStart = cpu_to_le16(crtc_param->usV_SyncStart); ++ conv_param.usV_SyncWidth = cpu_to_le16(crtc_param->usV_SyncWidth); ++ conv_param.susModeMiscInfo.usAccess = cpu_to_le16(crtc_param->susModeMiscInfo.usAccess); ++ conv_param.ucCRTC = crtc_param->ucCRTC; ++ conv_param.ucOverscanRight = crtc_param->ucOverscanRight; ++ conv_param.ucOverscanLeft = crtc_param->ucOverscanLeft; ++ conv_param.ucOverscanBottom = crtc_param->ucOverscanBottom; ++ conv_param.ucOverscanTop = crtc_param->ucOverscanTop; ++ conv_param.ucReserved = crtc_param->ucReserved; + + data.exec.index = GetIndexIntoMasterTable(COMMAND, SetCRTC_Timing); + data.exec.dataSpace = (void *)&space; +- data.exec.pspace = crtc_param; ++ data.exec.pspace = &conv_param; + + if (RHDAtomBiosFunc(atomBIOS->scrnIndex, atomBIOS, ATOMBIOS_EXEC, &data) == ATOM_SUCCESS) { + ErrorF("Set CRTC Timing success\n"); +@@ -185,7 +224,11 @@ atombios_crtc_set_pll(xf86CrtcPtr crtc, DisplayModePtr mode, int pll_flags) + if (IS_AVIVO_VARIANT) { + uint32_t temp; + +- pll_flags |= RADEON_PLL_PREFER_LOW_REF_DIV; ++ if (IS_DCE3_VARIANT && mode->Clock > 200000) /* range limits??? */ ++ pll_flags |= RADEON_PLL_PREFER_HIGH_FB_DIV; ++ else ++ pll_flags |= RADEON_PLL_PREFER_LOW_REF_DIV; ++ + + RADEONComputePLL(&info->pll, mode->Clock, &temp, &fb_div, &ref_div, &post_div, pll_flags); + sclock = temp; +@@ -235,9 +278,9 @@ atombios_crtc_set_pll(xf86CrtcPtr crtc, DisplayModePtr mode, int pll_flags) + case 1: + case 2: + spc2_ptr = (PIXEL_CLOCK_PARAMETERS_V2*)&spc_param.sPCLKInput; +- spc2_ptr->usPixelClock = sclock; +- spc2_ptr->usRefDiv = ref_div; +- spc2_ptr->usFbDiv = fb_div; ++ spc2_ptr->usPixelClock = cpu_to_le16(sclock); ++ spc2_ptr->usRefDiv = cpu_to_le16(ref_div); ++ spc2_ptr->usFbDiv = cpu_to_le16(fb_div); + spc2_ptr->ucPostDiv = post_div; + spc2_ptr->ucPpll = radeon_crtc->crtc_id ? ATOM_PPLL2 : ATOM_PPLL1; + spc2_ptr->ucCRTC = radeon_crtc->crtc_id; +@@ -246,9 +289,9 @@ atombios_crtc_set_pll(xf86CrtcPtr crtc, DisplayModePtr mode, int pll_flags) + break; + case 3: + spc3_ptr = (PIXEL_CLOCK_PARAMETERS_V3*)&spc_param.sPCLKInput; +- spc3_ptr->usPixelClock = sclock; +- spc3_ptr->usRefDiv = ref_div; +- spc3_ptr->usFbDiv = fb_div; ++ spc3_ptr->usPixelClock = cpu_to_le16(sclock); ++ spc3_ptr->usRefDiv = cpu_to_le16(ref_div); ++ spc3_ptr->usFbDiv = cpu_to_le16(fb_div); + spc3_ptr->ucPostDiv = post_div; + spc3_ptr->ucPpll = radeon_crtc->crtc_id ? ATOM_PPLL2 : ATOM_PPLL1; + spc3_ptr->ucMiscInfo = (radeon_crtc->crtc_id << 2); +@@ -442,9 +485,6 @@ atombios_crtc_mode_set(xf86CrtcPtr crtc, + fb_location = fb_location + (char *)crtc->rotatedData - (char *)info->FB; + } + +- /* lock the grph regs */ +- OUTREG(AVIVO_D1GRPH_UPDATE + radeon_crtc->crtc_offset, AVIVO_D1GRPH_UPDATE_LOCK); +- + OUTREG(AVIVO_D1GRPH_PRIMARY_SURFACE_ADDRESS + radeon_crtc->crtc_offset, fb_location); + OUTREG(AVIVO_D1GRPH_SECONDARY_SURFACE_ADDRESS + radeon_crtc->crtc_offset, fb_location); + OUTREG(AVIVO_D1GRPH_CONTROL + radeon_crtc->crtc_offset, fb_format); +@@ -459,26 +499,27 @@ atombios_crtc_mode_set(xf86CrtcPtr crtc, + crtc->scrn->displayWidth); + OUTREG(AVIVO_D1GRPH_ENABLE + radeon_crtc->crtc_offset, 1); + +- /* unlock the grph regs */ +- OUTREG(AVIVO_D1GRPH_UPDATE + radeon_crtc->crtc_offset, 0); +- +- /* lock the mode regs */ +- OUTREG(AVIVO_D1SCL_UPDATE + radeon_crtc->crtc_offset, AVIVO_D1SCL_UPDATE_LOCK); +- + OUTREG(AVIVO_D1MODE_DESKTOP_HEIGHT + radeon_crtc->crtc_offset, + mode->VDisplay); + OUTREG(AVIVO_D1MODE_VIEWPORT_START + radeon_crtc->crtc_offset, (x << 16) | y); + OUTREG(AVIVO_D1MODE_VIEWPORT_SIZE + radeon_crtc->crtc_offset, + (mode->HDisplay << 16) | mode->VDisplay); +- /* unlock the mode regs */ +- OUTREG(AVIVO_D1SCL_UPDATE + radeon_crtc->crtc_offset, 0); + ++ if (adjusted_mode->Flags & V_INTERLACE) ++ OUTREG(AVIVO_D1MODE_DATA_FORMAT + radeon_crtc->crtc_offset, ++ AVIVO_D1MODE_INTERLEAVE_EN); ++ else ++ OUTREG(AVIVO_D1MODE_DATA_FORMAT + radeon_crtc->crtc_offset, ++ 0); + } + + atombios_crtc_set_pll(crtc, adjusted_mode, pll_flags); + + atombios_set_crtc_timing(info->atomBIOS, &crtc_timing); + ++ if (info->DispPriority) ++ RADEONInitDispBandwidth(pScrn); ++ + if (tilingChanged) { + /* need to redraw front buffer, I guess this can be considered a hack ? */ + /* if this is called during ScreenInit() we don't have pScrn->pScreen yet */ +@@ -492,3 +533,126 @@ atombios_crtc_mode_set(xf86CrtcPtr crtc, + + } + ++/* Calculate display buffer watermark to prevent buffer underflow */ ++void ++RADEONInitDispBandwidthAVIVO(ScrnInfoPtr pScrn, ++ DisplayModePtr mode1, int pixel_bytes1, ++ DisplayModePtr mode2, int pixel_bytes2) ++{ ++ RADEONInfoPtr info = RADEONPTR(pScrn); ++ RADEONEntPtr pRADEONEnt = RADEONEntPriv(pScrn); ++ unsigned char *RADEONMMIO = info->MMIO; ++ ++ uint32_t dc_lb_memory_split; ++ float mem_bw, peak_disp_bw; ++ float min_mem_eff = 0.8; /* XXX: taken from legacy method */ ++ float pix_clk, pix_clk2; /* in MHz */ ++ ++ /* ++ * Set display0/1 priority up in the memory controller for ++ * modes if the user specifies HIGH for displaypriority ++ * option. ++ */ ++ if (info->DispPriority == 2) { ++ uint32_t mc_init_misc_lat_timer = 0; ++ if (info->ChipFamily == CHIP_FAMILY_RV515) ++ mc_init_misc_lat_timer = INMC(pScrn, RV515_MC_INIT_MISC_LAT_TIMER); ++ else if (info->ChipFamily == CHIP_FAMILY_RS690) ++ mc_init_misc_lat_timer = INMC(pScrn, RS690_MC_INIT_MISC_LAT_TIMER); ++ ++ mc_init_misc_lat_timer &= ~(R300_MC_DISP1R_INIT_LAT_MASK << R300_MC_DISP1R_INIT_LAT_SHIFT); ++ mc_init_misc_lat_timer &= ~(R300_MC_DISP0R_INIT_LAT_MASK << R300_MC_DISP0R_INIT_LAT_SHIFT); ++ ++ if (pRADEONEnt->pCrtc[1]->enabled) ++ mc_init_misc_lat_timer |= (1 << R300_MC_DISP1R_INIT_LAT_SHIFT); /* display 1 */ ++ if (pRADEONEnt->pCrtc[0]->enabled) ++ mc_init_misc_lat_timer |= (1 << R300_MC_DISP0R_INIT_LAT_SHIFT); /* display 0 */ ++ ++ if (info->ChipFamily == CHIP_FAMILY_RV515) ++ OUTMC(pScrn, RV515_MC_INIT_MISC_LAT_TIMER, mc_init_misc_lat_timer); ++ else if (info->ChipFamily == CHIP_FAMILY_RS690) ++ OUTMC(pScrn, RS690_MC_INIT_MISC_LAT_TIMER, mc_init_misc_lat_timer); ++ } ++ ++ /* XXX: fix me for AVIVO ++ * Determine if there is enough bandwidth for current display mode ++ */ ++ mem_bw = info->mclk * (info->RamWidth / 8) * (info->IsDDR ? 2 : 1); ++ ++ pix_clk = 0; ++ pix_clk2 = 0; ++ peak_disp_bw = 0; ++ if (mode1) { ++ pix_clk = mode1->Clock/1000.0; ++ peak_disp_bw += (pix_clk * pixel_bytes1); ++ } ++ if (mode2) { ++ pix_clk2 = mode2->Clock/1000.0; ++ peak_disp_bw += (pix_clk2 * pixel_bytes2); ++ } ++ ++ if (peak_disp_bw >= mem_bw * min_mem_eff) { ++ xf86DrvMsg(pScrn->scrnIndex, X_WARNING, ++ "You may not have enough display bandwidth for current mode\n" ++ "If you have flickering problem, try to lower resolution, refresh rate, or color depth\n"); ++ } ++ ++ /* ++ * Line Buffer Setup ++ * There is a single line buffer shared by both display controllers. ++ * DC_LB_MEMORY_SPLIT controls how that line buffer is shared between the display ++ * controllers. The paritioning can either be done manually or via one of four ++ * preset allocations specified in bits 1:0: ++ * 0 - line buffer is divided in half and shared between each display controller ++ * 1 - D1 gets 3/4 of the line buffer, D2 gets 1/4 ++ * 2 - D1 gets the whole buffer ++ * 3 - D1 gets 1/4 of the line buffer, D2 gets 3/4 ++ * Setting bit 2 of DC_LB_MEMORY_SPLIT controls switches to manual allocation mode. ++ * In manual allocation mode, D1 always starts at 0, D1 end/2 is specified in bits ++ * 14:4; D2 allocation follows D1. ++ */ ++ ++ /* is auto or manual better ? */ ++ dc_lb_memory_split = INREG(AVIVO_DC_LB_MEMORY_SPLIT) & ~AVIVO_DC_LB_MEMORY_SPLIT_MASK; ++ dc_lb_memory_split &= ~AVIVO_DC_LB_MEMORY_SPLIT_SHIFT_MODE; ++#if 1 ++ /* auto */ ++ if (mode1 && mode2) { ++ if (mode1->HDisplay > mode2->HDisplay) { ++ if (mode1->HDisplay > 2560) ++ dc_lb_memory_split |= AVIVO_DC_LB_MEMORY_SPLIT_D1_3Q_D2_1Q; ++ else ++ dc_lb_memory_split |= AVIVO_DC_LB_MEMORY_SPLIT_D1HALF_D2HALF; ++ } else if (mode2->HDisplay > mode1->HDisplay) { ++ if (mode2->HDisplay > 2560) ++ dc_lb_memory_split |= AVIVO_DC_LB_MEMORY_SPLIT_D1_1Q_D2_3Q; ++ else ++ dc_lb_memory_split |= AVIVO_DC_LB_MEMORY_SPLIT_D1HALF_D2HALF; ++ } else ++ dc_lb_memory_split |= AVIVO_DC_LB_MEMORY_SPLIT_D1HALF_D2HALF; ++ } else if (mode1) { ++ dc_lb_memory_split |= AVIVO_DC_LB_MEMORY_SPLIT_D1_ONLY; ++ } else if (mode2) { ++ dc_lb_memory_split |= AVIVO_DC_LB_MEMORY_SPLIT_D1_1Q_D2_3Q; ++ } ++#else ++ /* manual */ ++ dc_lb_memory_split |= AVIVO_DC_LB_MEMORY_SPLIT_SHIFT_MODE; ++ dc_lb_memory_split &= ~(AVIVO_DC_LB_DISP1_END_ADR_MASK << AVIVO_DC_LB_DISP1_END_ADR_SHIFT); ++ if (mode1) { ++ dc_lb_memory_split |= ((((mode1->HDisplay / 2) + 64 /*???*/) & AVIVO_DC_LB_DISP1_END_ADR_MASK) ++ << AVIVO_DC_LB_DISP1_END_ADR_SHIFT); ++ } else if (mode2) { ++ dc_lb_memory_split |= (0 << AVIVO_DC_LB_DISP1_END_ADR_SHIFT); ++ } ++ OUTREG(AVIVO_DC_LB_MEMORY_SPLIT, dc_lb_memory_split); ++#endif ++ ++ /* ++ * Watermark setup ++ * TODO... ++ * Unforunately, I haven't been able to dig up the avivo watermark programming ++ * guide yet. -AGD ++ */ ++ ++} +diff --git a/src/atombios_output.c b/src/atombios_output.c +index 51be301..49de04f 100644 +--- a/src/atombios_output.c ++++ b/src/atombios_output.c +@@ -43,6 +43,8 @@ + #include "radeon_macros.h" + #include "radeon_atombios.h" + ++#include "ati_pciids_gen.h" ++ + static int + atombios_output_dac1_setup(xf86OutputPtr output, DisplayModePtr mode) + { +@@ -78,7 +80,7 @@ atombios_output_dac1_setup(xf86OutputPtr output, DisplayModePtr mode) + } + } + +- disp_data.usPixelClock = mode->Clock / 10; ++ disp_data.usPixelClock = cpu_to_le16(mode->Clock / 10); + data.exec.index = GetIndexIntoMasterTable(COMMAND, DAC1EncoderControl); + data.exec.dataSpace = (void *)&space; + data.exec.pspace = &disp_data; +@@ -128,7 +130,7 @@ atombios_output_dac2_setup(xf86OutputPtr output, DisplayModePtr mode) + } + } + +- disp_data.usPixelClock = mode->Clock / 10; ++ disp_data.usPixelClock = cpu_to_le16(mode->Clock / 10); + data.exec.index = GetIndexIntoMasterTable(COMMAND, DAC2EncoderControl); + data.exec.dataSpace = (void *)&space; + data.exec.pspace = &disp_data; +@@ -188,7 +190,7 @@ atombios_output_tv1_setup(xf86OutputPtr output, DisplayModePtr mode) + } + } + +- disp_data.sTVEncoder.usPixelClock = mode->Clock / 10; ++ disp_data.sTVEncoder.usPixelClock = cpu_to_le16(mode->Clock / 10); + data.exec.index = GetIndexIntoMasterTable(COMMAND, TVEncoderControl); + data.exec.dataSpace = (void *)&space; + data.exec.pspace = &disp_data; +@@ -206,7 +208,8 @@ atombios_output_tv1_setup(xf86OutputPtr output, DisplayModePtr mode) + int + atombios_external_tmds_setup(xf86OutputPtr output, DisplayModePtr mode) + { +- RADEONInfoPtr info = RADEONPTR(output->scrn); ++ ScrnInfoPtr pScrn = output->scrn; ++ RADEONInfoPtr info = RADEONPTR(pScrn); + ENABLE_EXTERNAL_TMDS_ENCODER_PS_ALLOCATION disp_data; + AtomBiosArgRec data; + unsigned char *space; +@@ -218,7 +221,7 @@ atombios_external_tmds_setup(xf86OutputPtr output, DisplayModePtr mode) + else + disp_data.sXTmdsEncoder.ucMisc = 0; + +- if (!info->dac6bits) ++ if (pScrn->rgbBits == 8) + disp_data.sXTmdsEncoder.ucMisc |= (1 << 1); + + data.exec.index = GetIndexIntoMasterTable(COMMAND, DVOEncoderControl); +@@ -243,7 +246,7 @@ atombios_output_ddia_setup(xf86OutputPtr output, DisplayModePtr mode) + unsigned char *space; + + disp_data.sDVOEncoder.ucAction = ATOM_ENABLE; +- disp_data.sDVOEncoder.usPixelClock = mode->Clock / 10; ++ disp_data.sDVOEncoder.usPixelClock = cpu_to_le16(mode->Clock / 10); + + if (mode->Clock > 165000) + disp_data.sDVOEncoder.usDevAttr.sDigAttrib.ucAttribute = PANEL_ENCODER_MISC_DUAL; +@@ -264,84 +267,110 @@ atombios_output_ddia_setup(xf86OutputPtr output, DisplayModePtr mode) + } + + static int +-atombios_output_tmds1_setup(xf86OutputPtr output, DisplayModePtr mode) ++atombios_output_digital_setup(xf86OutputPtr output, int device, DisplayModePtr mode) + { +- RADEONInfoPtr info = RADEONPTR(output->scrn); +- TMDS1_ENCODER_CONTROL_PS_ALLOCATION disp_data; ++ RADEONOutputPrivatePtr radeon_output = output->driver_private; ++ ScrnInfoPtr pScrn = output->scrn; ++ RADEONInfoPtr info = RADEONPTR(pScrn); ++ LVDS_ENCODER_CONTROL_PS_ALLOCATION disp_data; ++ LVDS_ENCODER_CONTROL_PS_ALLOCATION_V2 disp_data2; + AtomBiosArgRec data; + unsigned char *space; ++ int index; ++ int major, minor; + +- disp_data.ucAction = 1; +- if (mode->Clock > 165000) +- disp_data.ucMisc = 1; +- else +- disp_data.ucMisc = 0; +- disp_data.usPixelClock = mode->Clock / 10; +- data.exec.index = GetIndexIntoMasterTable(COMMAND, TMDS1EncoderControl); +- data.exec.dataSpace = (void *)&space; +- data.exec.pspace = &disp_data; +- +- if (RHDAtomBiosFunc(info->atomBIOS->scrnIndex, info->atomBIOS, ATOMBIOS_EXEC, &data) == ATOM_SUCCESS) { +- ErrorF("Output TMDS1 setup success\n"); +- return ATOM_SUCCESS; ++ switch (device) { ++ case ATOM_DEVICE_DFP1_INDEX: ++ index = GetIndexIntoMasterTable(COMMAND, TMDS1EncoderControl); ++ break; ++ case ATOM_DEVICE_LCD1_INDEX: ++ index = GetIndexIntoMasterTable(COMMAND, LVDSEncoderControl); ++ break; ++ case ATOM_DEVICE_DFP3_INDEX: ++ index = GetIndexIntoMasterTable(COMMAND, TMDS2EncoderControl); ++ break; ++ default: ++ return ATOM_NOT_IMPLEMENTED; ++ break; + } + +- ErrorF("Output TMDS1 setup failed\n"); +- return ATOM_NOT_IMPLEMENTED; +- +-} +- +-static int +-atombios_output_tmds2_setup(xf86OutputPtr output, DisplayModePtr mode) +-{ +- RADEONInfoPtr info = RADEONPTR(output->scrn); +- TMDS2_ENCODER_CONTROL_PS_ALLOCATION disp_data; +- AtomBiosArgRec data; +- unsigned char *space; +- +- disp_data.ucAction = 1; +- if (mode->Clock > 165000) +- disp_data.ucMisc = 1; +- else +- disp_data.ucMisc = 0; +- disp_data.usPixelClock = mode->Clock / 10; +- data.exec.index = GetIndexIntoMasterTable(COMMAND, TMDS2EncoderControl); +- data.exec.dataSpace = (void *)&space; +- data.exec.pspace = &disp_data; ++ atombios_get_command_table_version(info->atomBIOS, index, &major, &minor); + +- if (RHDAtomBiosFunc(info->atomBIOS->scrnIndex, info->atomBIOS, ATOMBIOS_EXEC, &data) == ATOM_SUCCESS) { +- ErrorF("Output TMDS2 setup success\n"); +- return ATOM_SUCCESS; ++ /*ErrorF("table is %d %d\n", major, minor);*/ ++ switch (major) { ++ case 0: ++ case 1: ++ switch (minor) { ++ case 1: ++ disp_data.ucMisc = 0; ++ disp_data.ucAction = PANEL_ENCODER_ACTION_ENABLE; ++ if (radeon_output->type == OUTPUT_HDMI) ++ disp_data.ucMisc |= PANEL_ENCODER_MISC_HDMI_TYPE; ++ disp_data.usPixelClock = cpu_to_le16(mode->Clock / 10); ++ if (device == ATOM_DEVICE_LCD1_INDEX) { ++ if (radeon_output->lvds_misc & (1 << 0)) ++ disp_data.ucMisc |= PANEL_ENCODER_MISC_DUAL; ++ if (radeon_output->lvds_misc & (1 << 1)) ++ disp_data.ucMisc |= (1 << 1); ++ } else { ++ if (mode->Clock > 165000) ++ disp_data.ucMisc |= PANEL_ENCODER_MISC_DUAL; ++ if (pScrn->rgbBits == 8) ++ disp_data.ucMisc |= (1 << 1); ++ } ++ data.exec.pspace = &disp_data; ++ break; ++ case 2: ++ case 3: ++ disp_data2.ucMisc = 0; ++ disp_data2.ucAction = PANEL_ENCODER_ACTION_ENABLE; ++ if (minor == 3) { ++ if (radeon_output->coherent_mode) { ++ disp_data2.ucMisc |= PANEL_ENCODER_MISC_COHERENT; ++ xf86DrvMsg(output->scrn->scrnIndex, X_INFO, "Coherent Mode enabled\n"); ++ } ++ } ++ if (radeon_output->type == OUTPUT_HDMI) ++ disp_data2.ucMisc |= PANEL_ENCODER_MISC_HDMI_TYPE; ++ disp_data2.usPixelClock = cpu_to_le16(mode->Clock / 10); ++ disp_data2.ucTruncate = 0; ++ disp_data2.ucSpatial = 0; ++ disp_data2.ucTemporal = 0; ++ disp_data2.ucFRC = 0; ++ if (device == ATOM_DEVICE_LCD1_INDEX) { ++ if (radeon_output->lvds_misc & (1 << 0)) ++ disp_data2.ucMisc |= PANEL_ENCODER_MISC_DUAL; ++ if (radeon_output->lvds_misc & (1 << 5)) { ++ disp_data2.ucSpatial = PANEL_ENCODER_SPATIAL_DITHER_EN; ++ if (radeon_output->lvds_misc & (1 << 1)) ++ disp_data2.ucSpatial |= PANEL_ENCODER_SPATIAL_DITHER_DEPTH; ++ } ++ if (radeon_output->lvds_misc & (1 << 6)) { ++ disp_data2.ucTemporal = PANEL_ENCODER_TEMPORAL_DITHER_EN; ++ if (radeon_output->lvds_misc & (1 << 1)) ++ disp_data2.ucTemporal |= PANEL_ENCODER_TEMPORAL_DITHER_DEPTH; ++ if (((radeon_output->lvds_misc >> 2) & 0x3) == 2) ++ disp_data2.ucTemporal |= PANEL_ENCODER_TEMPORAL_LEVEL_4; ++ } ++ } else { ++ if (mode->Clock > 165000) ++ disp_data2.ucMisc |= PANEL_ENCODER_MISC_DUAL; ++ } ++ data.exec.pspace = &disp_data2; ++ break; ++ } ++ break; + } + +- ErrorF("Output TMDS2 setup failed\n"); +- return ATOM_NOT_IMPLEMENTED; +-} +- +-static int +-atombios_output_lvds_setup(xf86OutputPtr output, DisplayModePtr mode) +-{ +- RADEONInfoPtr info = RADEONPTR(output->scrn); +- LVDS_ENCODER_CONTROL_PS_ALLOCATION disp_data; +- AtomBiosArgRec data; +- unsigned char *space; +- +- disp_data.ucAction = 1; +- if (mode->Clock > 165000) +- disp_data.ucMisc = 1; +- else +- disp_data.ucMisc = 0; +- disp_data.usPixelClock = mode->Clock / 10; +- data.exec.index = GetIndexIntoMasterTable(COMMAND, LVDSEncoderControl); ++ data.exec.index = index; + data.exec.dataSpace = (void *)&space; +- data.exec.pspace = &disp_data; + + if (RHDAtomBiosFunc(info->atomBIOS->scrnIndex, info->atomBIOS, ATOMBIOS_EXEC, &data) == ATOM_SUCCESS) { +- ErrorF("Output LVDS setup success\n"); ++ ErrorF("Output digital setup success\n"); + return ATOM_SUCCESS; + } + +- ErrorF("Output LVDS setup failed\n"); ++ ErrorF("Output digital setup failed\n"); + return ATOM_NOT_IMPLEMENTED; + } + +@@ -355,7 +384,7 @@ atombios_output_dig1_setup(xf86OutputPtr output, DisplayModePtr mode) + unsigned char *space; + + disp_data.ucAction = 1; +- disp_data.usPixelClock = mode->Clock / 10; ++ disp_data.usPixelClock = cpu_to_le16(mode->Clock / 10); + disp_data.ucConfig = ATOM_ENCODER_CONFIG_TRANSMITTER1; + if (OUTPUT_IS_DVI || (radeon_output->type == OUTPUT_HDMI)) { + if (radeon_output->coherent_mode) { +@@ -406,7 +435,7 @@ atombios_output_dig1_transmitter_setup(xf86OutputPtr output, DisplayModePtr mode + unsigned char *space; + + disp_data.ucAction = ATOM_TRANSMITTER_ACTION_ENABLE; +- disp_data.usPixelClock = mode->Clock / 10; ++ disp_data.usPixelClock = cpu_to_le16(mode->Clock / 10); + disp_data.ucConfig = ATOM_TRANSMITTER_CONFIG_DIG1_ENCODER | ATOM_TRANSMITTER_CONFIG_CLKSRC_PPLL; + + if (info->IsIGP && (radeon_output->TMDSType == TMDS_UNIPHY)) { +@@ -464,7 +493,7 @@ atombios_output_dig2_setup(xf86OutputPtr output, DisplayModePtr mode) + unsigned char *space; + + disp_data.ucAction = 1; +- disp_data.usPixelClock = mode->Clock / 10; ++ disp_data.usPixelClock = cpu_to_le16(mode->Clock / 10); + disp_data.ucConfig = ATOM_ENCODER_CONFIG_TRANSMITTER2; + if (OUTPUT_IS_DVI || (radeon_output->type == OUTPUT_HDMI)) { + if (radeon_output->coherent_mode) { +@@ -515,7 +544,7 @@ atombios_output_dig2_transmitter_setup(xf86OutputPtr output, DisplayModePtr mode + unsigned char *space; + + disp_data.ucAction = ATOM_TRANSMITTER_ACTION_ENABLE; +- disp_data.usPixelClock = mode->Clock / 10; ++ disp_data.usPixelClock = cpu_to_le16(mode->Clock / 10); + disp_data.ucConfig = ATOM_TRANSMITTER_CONFIG_DIG2_ENCODER | ATOM_TRANSMITTER_CONFIG_CLKSRC_PPLL; + + if (info->IsIGP && (radeon_output->TMDSType == TMDS_UNIPHY)) { +@@ -600,34 +629,6 @@ atombios_output_scaler_setup(xf86OutputPtr output, DisplayModePtr mode) + + } + +-static void +-dfp_disable_dither(xf86OutputPtr output, int device) +-{ +- RADEONInfoPtr info = RADEONPTR(output->scrn); +- unsigned char *RADEONMMIO = info->MMIO; +- +- switch (device) { +- case ATOM_DEVICE_DFP1_SUPPORT: +- OUTREG(AVIVO_TMDSA_BIT_DEPTH_CONTROL, 0); /* TMDSA */ +- break; +- case ATOM_DEVICE_DFP2_SUPPORT: +- if ((info->ChipFamily == CHIP_FAMILY_RS600) || +- (info->ChipFamily == CHIP_FAMILY_RS690) || +- (info->ChipFamily == CHIP_FAMILY_RS740)) +- OUTREG(AVIVO_DDIA_BIT_DEPTH_CONTROL, 0); /* DDIA */ +- else +- OUTREG(AVIVO_DVOA_BIT_DEPTH_CONTROL, 0); /* DVO */ +- break; +- /*case ATOM_DEVICE_LCD1_SUPPORT:*/ /* LVDS panels need dither enabled */ +- case ATOM_DEVICE_DFP3_SUPPORT: +- OUTREG(AVIVO_LVTMA_BIT_DEPTH_CONTROL, 0); /* LVTMA */ +- break; +- default: +- break; +- } +- +-} +- + static AtomBiosResult + atombios_display_device_control(atomBiosHandlePtr atomBIOS, int device, Bool state) + { +@@ -896,6 +897,30 @@ atombios_set_output_crtc_source(xf86OutputPtr output) + return; + } + ++static void ++atombios_apply_output_quirks(xf86OutputPtr output) ++{ ++ RADEONOutputPrivatePtr radeon_output = output->driver_private; ++ RADEONInfoPtr info = RADEONPTR(output->scrn); ++ unsigned char *RADEONMMIO = info->MMIO; ++ ++ /* Funky macbooks */ ++ if ((info->Chipset == PCI_CHIP_RV530_71C5) && ++ (PCI_SUB_VENDOR_ID(info->PciInfo) == 0x106b) && ++ (PCI_SUB_DEVICE_ID(info->PciInfo) == 0x0080)) { ++ if (radeon_output->MonType == MT_LCD) { ++ if (radeon_output->devices & ATOM_DEVICE_LCD1_SUPPORT) { ++ uint32_t lvtma_bit_depth_control = INREG(AVIVO_LVTMA_BIT_DEPTH_CONTROL); ++ ++ lvtma_bit_depth_control &= ~AVIVO_LVTMA_BIT_DEPTH_CONTROL_TRUNCATE_EN; ++ lvtma_bit_depth_control &= ~AVIVO_LVTMA_BIT_DEPTH_CONTROL_SPATIAL_DITHER_EN; ++ ++ OUTREG(AVIVO_LVTMA_BIT_DEPTH_CONTROL, lvtma_bit_depth_control); ++ } ++ } ++ } ++} ++ + void + atombios_output_mode_set(xf86OutputPtr output, + DisplayModePtr mode, +@@ -920,10 +945,8 @@ atombios_output_mode_set(xf86OutputPtr output, + if (IS_DCE3_VARIANT) { + atombios_output_dig1_setup(output, adjusted_mode); + atombios_output_dig1_transmitter_setup(output, adjusted_mode); +- } else { +- atombios_output_tmds1_setup(output, adjusted_mode); +- dfp_disable_dither(output, ATOM_DEVICE_DFP1_SUPPORT); +- } ++ } else ++ atombios_output_digital_setup(output, ATOM_DEVICE_DFP1_INDEX, adjusted_mode); + } else if (radeon_output->devices & ATOM_DEVICE_DFP2_SUPPORT) { + if (IS_DCE3_VARIANT) { + // fix me +@@ -934,26 +957,21 @@ atombios_output_mode_set(xf86OutputPtr output, + atombios_output_ddia_setup(output, adjusted_mode); + else + atombios_external_tmds_setup(output, adjusted_mode); +- dfp_disable_dither(output, ATOM_DEVICE_DFP2_SUPPORT); + } + } else if (radeon_output->devices & ATOM_DEVICE_DFP3_SUPPORT) { + if (IS_DCE3_VARIANT) { + atombios_output_dig2_setup(output, adjusted_mode); + atombios_output_dig2_transmitter_setup(output, adjusted_mode); +- } else { +- atombios_output_tmds2_setup(output, adjusted_mode); +- dfp_disable_dither(output, ATOM_DEVICE_DFP3_SUPPORT); +- } ++ } else ++ atombios_output_digital_setup(output, ATOM_DEVICE_DFP3_INDEX, adjusted_mode); + } + } else if (radeon_output->MonType == MT_LCD) { + if (radeon_output->devices & ATOM_DEVICE_LCD1_SUPPORT) { + if (IS_DCE3_VARIANT) { + atombios_output_dig2_setup(output, adjusted_mode); + atombios_output_dig2_transmitter_setup(output, adjusted_mode); +- } else { +- atombios_output_lvds_setup(output, adjusted_mode); +- dfp_disable_dither(output, ATOM_DEVICE_LCD1_SUPPORT); +- } ++ } else ++ atombios_output_digital_setup(output, ATOM_DEVICE_LCD1_INDEX, adjusted_mode); + } + } else if ((radeon_output->MonType == MT_CTV) || + (radeon_output->MonType == MT_STV) || +@@ -964,7 +982,7 @@ atombios_output_mode_set(xf86OutputPtr output, + atombios_output_dac2_setup(output, adjusted_mode); + atombios_output_tv1_setup(output, adjusted_mode); + } +- ++ atombios_apply_output_quirks(output); + } + + static AtomBiosResult +@@ -979,19 +997,19 @@ atom_bios_dac_load_detect(atomBiosHandlePtr atomBIOS, xf86OutputPtr output) + dac_data.sDacload.ucMisc = 0; + + if (radeon_output->devices & ATOM_DEVICE_CRT1_SUPPORT) { +- dac_data.sDacload.usDeviceID = ATOM_DEVICE_CRT1_SUPPORT; ++ dac_data.sDacload.usDeviceID = cpu_to_le16(ATOM_DEVICE_CRT1_SUPPORT); + if (radeon_output->DACType == DAC_PRIMARY) + dac_data.sDacload.ucDacType = ATOM_DAC_A; + else if (radeon_output->DACType == DAC_TVDAC) + dac_data.sDacload.ucDacType = ATOM_DAC_B; + } else if (radeon_output->devices & ATOM_DEVICE_CRT2_SUPPORT) { +- dac_data.sDacload.usDeviceID = ATOM_DEVICE_CRT2_SUPPORT; ++ dac_data.sDacload.usDeviceID = cpu_to_le16(ATOM_DEVICE_CRT2_SUPPORT); + if (radeon_output->DACType == DAC_PRIMARY) + dac_data.sDacload.ucDacType = ATOM_DAC_A; + else if (radeon_output->DACType == DAC_TVDAC) + dac_data.sDacload.ucDacType = ATOM_DAC_B; + } else if (radeon_output->devices & ATOM_DEVICE_CV_SUPPORT) { +- dac_data.sDacload.usDeviceID = ATOM_DEVICE_CV_SUPPORT; ++ dac_data.sDacload.usDeviceID = cpu_to_le16(ATOM_DEVICE_CV_SUPPORT); + if (radeon_output->DACType == DAC_PRIMARY) + dac_data.sDacload.ucDacType = ATOM_DAC_A; + else if (radeon_output->DACType == DAC_TVDAC) +@@ -999,7 +1017,7 @@ atom_bios_dac_load_detect(atomBiosHandlePtr atomBIOS, xf86OutputPtr output) + if (IS_DCE3_VARIANT) + dac_data.sDacload.ucMisc = 1; + } else if (radeon_output->devices & ATOM_DEVICE_TV1_SUPPORT) { +- dac_data.sDacload.usDeviceID = ATOM_DEVICE_TV1_SUPPORT; ++ dac_data.sDacload.usDeviceID = cpu_to_le16(ATOM_DEVICE_TV1_SUPPORT); + if (radeon_output->DACType == DAC_PRIMARY) + dac_data.sDacload.ucDacType = ATOM_DAC_A; + else if (radeon_output->DACType == DAC_TVDAC) +diff --git a/src/bicubic_table.h b/src/bicubic_table.h +new file mode 100644 +index 0000000..765cfff +--- /dev/null ++++ b/src/bicubic_table.h +@@ -0,0 +1,646 @@ ++static const uint16_t bicubic_tex_512[] = { ++ 0xb266, 0x3c00, 0x3aaa, 0x3155, ++ 0xb287, 0x3bf0, 0x3aa2, 0x3175, ++ 0xb2a9, 0x3be0, 0x3a9a, 0x3196, ++ 0xb2cc, 0x3bd0, 0x3a92, 0x31b7, ++ 0xb2ee, 0x3bc0, 0x3a89, 0x31d9, ++ 0xb312, 0x3bb0, 0x3a81, 0x31fb, ++ 0xb335, 0x3ba0, 0x3a78, 0x321e, ++ 0xb359, 0x3b90, 0x3a6f, 0x3241, ++ 0xb37d, 0x3b80, 0x3a66, 0x3264, ++ 0xb3a2, 0x3b70, 0x3a5d, 0x3288, ++ 0xb3c7, 0x3b60, 0x3a54, 0x32ad, ++ 0xb3ed, 0x3b51, 0x3a4b, 0x32d1, ++ 0xb409, 0x3b41, 0x3a42, 0x32f7, ++ 0xb41c, 0x3b31, 0x3a38, 0x331c, ++ 0xb42f, 0x3b21, 0x3a2f, 0x3342, ++ 0xb443, 0x3b12, 0x3a25, 0x3369, ++ 0xb456, 0x3b02, 0x3a1c, 0x3390, ++ 0xb46a, 0x3af3, 0x3a12, 0x33b7, ++ 0xb47e, 0x3ae3, 0x3a08, 0x33de, ++ 0xb492, 0x3ad4, 0x39fe, 0x3403, ++ 0xb4a6, 0x3ac5, 0x39f4, 0x3417, ++ 0xb4bb, 0x3ab5, 0x39ea, 0x342b, ++ 0xb4cf, 0x3aa6, 0x39df, 0x3440, ++ 0xb4e4, 0x3a97, 0x39d5, 0x3454, ++ 0xb4f9, 0x3a88, 0x39cb, 0x3469, ++ 0xb50e, 0x3a79, 0x39c0, 0x347e, ++ 0xb523, 0x3a6a, 0x39b6, 0x3493, ++ 0xb539, 0x3a5a, 0x39ab, 0x34a8, ++ 0xb54e, 0x3a4c, 0x39a0, 0x34be, ++ 0xb564, 0x3a3d, 0x3996, 0x34d3, ++ 0xb57a, 0x3a2e, 0x398b, 0x34e9, ++ 0xb590, 0x3a1f, 0x3980, 0x34ff, ++ 0xb5a6, 0x3a10, 0x3975, 0x3515, ++ 0xb5bc, 0x3a02, 0x396a, 0x352b, ++ 0xb5d2, 0x39f3, 0x395f, 0x3541, ++ 0xb5e9, 0x39e4, 0x3954, 0x3557, ++ 0xb5ff, 0x39d6, 0x3948, 0x356e, ++ 0xb616, 0x39c7, 0x393d, 0x3584, ++ 0xb62d, 0x39b9, 0x3932, 0x359b, ++ 0xb644, 0x39ab, 0x3926, 0x35b2, ++ 0xb65b, 0x399c, 0x391b, 0x35c9, ++ 0xb672, 0x398e, 0x3910, 0x35df, ++ 0xb68a, 0x3980, 0x3904, 0x35f6, ++ 0xb6a1, 0x3972, 0x38f8, 0x360e, ++ 0xb6b9, 0x3964, 0x38ed, 0x3625, ++ 0xb6d1, 0x3956, 0x38e1, 0x363c, ++ 0xb6e8, 0x3948, 0x38d6, 0x3653, ++ 0xb700, 0x393a, 0x38ca, 0x366b, ++ 0xb719, 0x392c, 0x38be, 0x3682, ++ 0xb731, 0x391e, 0x38b2, 0x369a, ++ 0xb749, 0x3910, 0x38a7, 0x36b1, ++ 0xb762, 0x3902, 0x389b, 0x36c9, ++ 0xb77a, 0x38f5, 0x388f, 0x36e1, ++ 0xb793, 0x38e7, 0x3883, 0x36f8, ++ 0xb7ac, 0x38da, 0x3877, 0x3710, ++ 0xb7c5, 0x38cc, 0x386b, 0x3728, ++ 0xb7de, 0x38bf, 0x385f, 0x3740, ++ 0xb7f7, 0x38b1, 0x3853, 0x3758, ++ 0xb808, 0x38a4, 0x3847, 0x3770, ++ 0xb815, 0x3897, 0x383b, 0x3788, ++ 0xb821, 0x3889, 0x382f, 0x37a0, ++ 0xb82e, 0x387c, 0x3823, 0x37b8, ++ 0xb83b, 0x386f, 0x3817, 0x37d0, ++ 0xb848, 0x3862, 0x380b, 0x37e8, ++ 0xb855, 0x3855, 0x3800, 0x3800, ++ 0xb862, 0x3848, 0x37e8, 0x380b, ++ 0xb86f, 0x383b, 0x37d0, 0x3817, ++ 0xb87c, 0x382e, 0x37b8, 0x3823, ++ 0xb889, 0x3821, 0x37a0, 0x382f, ++ 0xb897, 0x3815, 0x3788, 0x383b, ++ 0xb8a4, 0x3808, 0x3770, 0x3847, ++ 0xb8b1, 0x37f7, 0x3758, 0x3853, ++ 0xb8bf, 0x37de, 0x3740, 0x385f, ++ 0xb8cc, 0x37c5, 0x3728, 0x386b, ++ 0xb8da, 0x37ac, 0x3710, 0x3877, ++ 0xb8e7, 0x3793, 0x36f8, 0x3883, ++ 0xb8f5, 0x377a, 0x36e1, 0x388f, ++ 0xb902, 0x3762, 0x36c9, 0x389b, ++ 0xb910, 0x3749, 0x36b1, 0x38a7, ++ 0xb91e, 0x3731, 0x369a, 0x38b2, ++ 0xb92c, 0x3719, 0x3682, 0x38be, ++ 0xb93a, 0x3700, 0x366b, 0x38ca, ++ 0xb948, 0x36e8, 0x3653, 0x38d6, ++ 0xb956, 0x36d1, 0x363c, 0x38e1, ++ 0xb964, 0x36b9, 0x3625, 0x38ed, ++ 0xb972, 0x36a1, 0x360e, 0x38f8, ++ 0xb980, 0x368a, 0x35f6, 0x3904, ++ 0xb98e, 0x3672, 0x35df, 0x3910, ++ 0xb99c, 0x365b, 0x35c9, 0x391b, ++ 0xb9ab, 0x3644, 0x35b2, 0x3926, ++ 0xb9b9, 0x362d, 0x359b, 0x3932, ++ 0xb9c7, 0x3616, 0x3584, 0x393d, ++ 0xb9d6, 0x35ff, 0x356e, 0x3948, ++ 0xb9e4, 0x35e9, 0x3557, 0x3954, ++ 0xb9f3, 0x35d2, 0x3541, 0x395f, ++ 0xba02, 0x35bc, 0x352b, 0x396a, ++ 0xba10, 0x35a6, 0x3515, 0x3975, ++ 0xba1f, 0x3590, 0x34ff, 0x3980, ++ 0xba2e, 0x357a, 0x34e9, 0x398b, ++ 0xba3d, 0x3564, 0x34d3, 0x3996, ++ 0xba4c, 0x354e, 0x34be, 0x39a0, ++ 0xba5a, 0x3539, 0x34a8, 0x39ab, ++ 0xba6a, 0x3523, 0x3493, 0x39b6, ++ 0xba79, 0x350e, 0x347e, 0x39c0, ++ 0xba88, 0x34f9, 0x3469, 0x39cb, ++ 0xba97, 0x34e4, 0x3454, 0x39d5, ++ 0xbaa6, 0x34cf, 0x3440, 0x39df, ++ 0xbab5, 0x34bb, 0x342b, 0x39ea, ++ 0xbac5, 0x34a6, 0x3417, 0x39f4, ++ 0xbad4, 0x3492, 0x3403, 0x39fe, ++ 0xbae3, 0x347e, 0x33de, 0x3a08, ++ 0xbaf3, 0x346a, 0x33b7, 0x3a12, ++ 0xbb02, 0x3456, 0x3390, 0x3a1c, ++ 0xbb12, 0x3443, 0x3369, 0x3a25, ++ 0xbb21, 0x342f, 0x3342, 0x3a2f, ++ 0xbb31, 0x341c, 0x331c, 0x3a38, ++ 0xbb41, 0x3409, 0x32f7, 0x3a42, ++ 0xbb51, 0x33ed, 0x32d1, 0x3a4b, ++ 0xbb60, 0x33c7, 0x32ad, 0x3a54, ++ 0xbb70, 0x33a2, 0x3288, 0x3a5d, ++ 0xbb80, 0x337d, 0x3264, 0x3a66, ++ 0xbb90, 0x3359, 0x3241, 0x3a6f, ++ 0xbba0, 0x3335, 0x321e, 0x3a78, ++ 0xbbb0, 0x3312, 0x31fb, 0x3a81, ++ 0xbbc0, 0x32ee, 0x31d9, 0x3a89, ++ 0xbbd0, 0x32cc, 0x31b7, 0x3a92, ++ 0xbbe0, 0x32a9, 0x3196, 0x3a9a, ++ 0xbbf0, 0x3287, 0x3175, 0x3aa2, ++ 0 }; ++ ++static const uint16_t bicubic_tex_2048[] = { ++ 0xb266, 0x3c00, 0x3aaa, 0x3155, ++ 0xb26e, 0x3bfc, 0x3aa8, 0x315d, ++ 0xb277, 0x3bf8, 0x3aa6, 0x3165, ++ 0xb27f, 0x3bf4, 0x3aa4, 0x316d, ++ 0xb287, 0x3bf0, 0x3aa2, 0x3175, ++ 0xb290, 0x3bec, 0x3aa0, 0x317d, ++ 0xb298, 0x3be8, 0x3a9e, 0x3185, ++ 0xb2a1, 0x3be4, 0x3a9c, 0x318e, ++ 0xb2a9, 0x3be0, 0x3a9a, 0x3196, ++ 0xb2b2, 0x3bdc, 0x3a98, 0x319e, ++ 0xb2ba, 0x3bd8, 0x3a96, 0x31a6, ++ 0xb2c3, 0x3bd4, 0x3a94, 0x31af, ++ 0xb2cc, 0x3bd0, 0x3a92, 0x31b7, ++ 0xb2d4, 0x3bcc, 0x3a90, 0x31bf, ++ 0xb2dd, 0x3bc8, 0x3a8d, 0x31c8, ++ 0xb2e6, 0x3bc4, 0x3a8b, 0x31d0, ++ 0xb2ee, 0x3bc0, 0x3a89, 0x31d9, ++ 0xb2f7, 0x3bbc, 0x3a87, 0x31e1, ++ 0xb300, 0x3bb8, 0x3a85, 0x31ea, ++ 0xb309, 0x3bb4, 0x3a83, 0x31f2, ++ 0xb312, 0x3bb0, 0x3a81, 0x31fb, ++ 0xb31a, 0x3bac, 0x3a7e, 0x3204, ++ 0xb323, 0x3ba8, 0x3a7c, 0x320c, ++ 0xb32c, 0x3ba4, 0x3a7a, 0x3215, ++ 0xb335, 0x3ba0, 0x3a78, 0x321e, ++ 0xb33e, 0x3b9c, 0x3a76, 0x3226, ++ 0xb347, 0x3b98, 0x3a74, 0x322f, ++ 0xb350, 0x3b94, 0x3a71, 0x3238, ++ 0xb359, 0x3b90, 0x3a6f, 0x3241, ++ 0xb362, 0x3b8c, 0x3a6d, 0x3249, ++ 0xb36b, 0x3b88, 0x3a6b, 0x3252, ++ 0xb374, 0x3b84, 0x3a69, 0x325b, ++ 0xb37d, 0x3b80, 0x3a66, 0x3264, ++ 0xb387, 0x3b7c, 0x3a64, 0x326d, ++ 0xb390, 0x3b78, 0x3a62, 0x3276, ++ 0xb399, 0x3b74, 0x3a60, 0x327f, ++ 0xb3a2, 0x3b70, 0x3a5d, 0x3288, ++ 0xb3ab, 0x3b6c, 0x3a5b, 0x3291, ++ 0xb3b5, 0x3b68, 0x3a59, 0x329a, ++ 0xb3be, 0x3b64, 0x3a57, 0x32a3, ++ 0xb3c7, 0x3b60, 0x3a54, 0x32ad, ++ 0xb3d0, 0x3b5c, 0x3a52, 0x32b6, ++ 0xb3da, 0x3b58, 0x3a50, 0x32bf, ++ 0xb3e3, 0x3b54, 0x3a4d, 0x32c8, ++ 0xb3ed, 0x3b51, 0x3a4b, 0x32d1, ++ 0xb3f6, 0x3b4d, 0x3a49, 0x32db, ++ 0xb3ff, 0x3b49, 0x3a46, 0x32e4, ++ 0xb404, 0x3b45, 0x3a44, 0x32ed, ++ 0xb409, 0x3b41, 0x3a42, 0x32f7, ++ 0xb40e, 0x3b3d, 0x3a3f, 0x3300, ++ 0xb412, 0x3b39, 0x3a3d, 0x3309, ++ 0xb417, 0x3b35, 0x3a3b, 0x3313, ++ 0xb41c, 0x3b31, 0x3a38, 0x331c, ++ 0xb421, 0x3b2d, 0x3a36, 0x3326, ++ 0xb426, 0x3b29, 0x3a34, 0x332f, ++ 0xb42a, 0x3b25, 0x3a31, 0x3339, ++ 0xb42f, 0x3b21, 0x3a2f, 0x3342, ++ 0xb434, 0x3b1e, 0x3a2c, 0x334c, ++ 0xb439, 0x3b1a, 0x3a2a, 0x3355, ++ 0xb43e, 0x3b16, 0x3a28, 0x335f, ++ 0xb443, 0x3b12, 0x3a25, 0x3369, ++ 0xb448, 0x3b0e, 0x3a23, 0x3372, ++ 0xb44d, 0x3b0a, 0x3a20, 0x337c, ++ 0xb451, 0x3b06, 0x3a1e, 0x3386, ++ 0xb456, 0x3b02, 0x3a1c, 0x3390, ++ 0xb45b, 0x3afe, 0x3a19, 0x3399, ++ 0xb460, 0x3afb, 0x3a17, 0x33a3, ++ 0xb465, 0x3af7, 0x3a14, 0x33ad, ++ 0xb46a, 0x3af3, 0x3a12, 0x33b7, ++ 0xb46f, 0x3aef, 0x3a0f, 0x33c1, ++ 0xb474, 0x3aeb, 0x3a0d, 0x33ca, ++ 0xb479, 0x3ae7, 0x3a0a, 0x33d4, ++ 0xb47e, 0x3ae3, 0x3a08, 0x33de, ++ 0xb483, 0x3ae0, 0x3a05, 0x33e8, ++ 0xb488, 0x3adc, 0x3a03, 0x33f2, ++ 0xb48d, 0x3ad8, 0x3a00, 0x33fc, ++ 0xb492, 0x3ad4, 0x39fe, 0x3403, ++ 0xb497, 0x3ad0, 0x39fb, 0x3408, ++ 0xb49c, 0x3acc, 0x39f9, 0x340d, ++ 0xb4a1, 0x3ac8, 0x39f6, 0x3412, ++ 0xb4a6, 0x3ac5, 0x39f4, 0x3417, ++ 0xb4ac, 0x3ac1, 0x39f1, 0x341c, ++ 0xb4b1, 0x3abd, 0x39ef, 0x3421, ++ 0xb4b6, 0x3ab9, 0x39ec, 0x3426, ++ 0xb4bb, 0x3ab5, 0x39ea, 0x342b, ++ 0xb4c0, 0x3ab1, 0x39e7, 0x3430, ++ 0xb4c5, 0x3aae, 0x39e5, 0x3435, ++ 0xb4ca, 0x3aaa, 0x39e2, 0x343b, ++ 0xb4cf, 0x3aa6, 0x39df, 0x3440, ++ 0xb4d5, 0x3aa2, 0x39dd, 0x3445, ++ 0xb4da, 0x3a9e, 0x39da, 0x344a, ++ 0xb4df, 0x3a9b, 0x39d8, 0x344f, ++ 0xb4e4, 0x3a97, 0x39d5, 0x3454, ++ 0xb4e9, 0x3a93, 0x39d2, 0x345a, ++ 0xb4ef, 0x3a8f, 0x39d0, 0x345f, ++ 0xb4f4, 0x3a8b, 0x39cd, 0x3464, ++ 0xb4f9, 0x3a88, 0x39cb, 0x3469, ++ 0xb4fe, 0x3a84, 0x39c8, 0x346e, ++ 0xb504, 0x3a80, 0x39c5, 0x3474, ++ 0xb509, 0x3a7c, 0x39c3, 0x3479, ++ 0xb50e, 0x3a79, 0x39c0, 0x347e, ++ 0xb513, 0x3a75, 0x39be, 0x3483, ++ 0xb519, 0x3a71, 0x39bb, 0x3489, ++ 0xb51e, 0x3a6d, 0x39b8, 0x348e, ++ 0xb523, 0x3a6a, 0x39b6, 0x3493, ++ 0xb529, 0x3a66, 0x39b3, 0x3499, ++ 0xb52e, 0x3a62, 0x39b0, 0x349e, ++ 0xb533, 0x3a5e, 0x39ae, 0x34a3, ++ 0xb539, 0x3a5a, 0x39ab, 0x34a8, ++ 0xb53e, 0x3a57, 0x39a8, 0x34ae, ++ 0xb543, 0x3a53, 0x39a6, 0x34b3, ++ 0xb549, 0x3a4f, 0x39a3, 0x34b9, ++ 0xb54e, 0x3a4c, 0x39a0, 0x34be, ++ 0xb554, 0x3a48, 0x399e, 0x34c3, ++ 0xb559, 0x3a44, 0x399b, 0x34c9, ++ 0xb55e, 0x3a40, 0x3998, 0x34ce, ++ 0xb564, 0x3a3d, 0x3996, 0x34d3, ++ 0xb569, 0x3a39, 0x3993, 0x34d9, ++ 0xb56f, 0x3a35, 0x3990, 0x34de, ++ 0xb574, 0x3a32, 0x398d, 0x34e4, ++ 0xb57a, 0x3a2e, 0x398b, 0x34e9, ++ 0xb57f, 0x3a2a, 0x3988, 0x34ef, ++ 0xb585, 0x3a26, 0x3985, 0x34f4, ++ 0xb58a, 0x3a23, 0x3983, 0x34f9, ++ 0xb590, 0x3a1f, 0x3980, 0x34ff, ++ 0xb595, 0x3a1b, 0x397d, 0x3504, ++ 0xb59b, 0x3a18, 0x397a, 0x350a, ++ 0xb5a0, 0x3a14, 0x3978, 0x350f, ++ 0xb5a6, 0x3a10, 0x3975, 0x3515, ++ 0xb5ab, 0x3a0d, 0x3972, 0x351a, ++ 0xb5b1, 0x3a09, 0x396f, 0x3520, ++ 0xb5b6, 0x3a05, 0x396d, 0x3525, ++ 0xb5bc, 0x3a02, 0x396a, 0x352b, ++ 0xb5c1, 0x39fe, 0x3967, 0x3530, ++ 0xb5c7, 0x39fa, 0x3964, 0x3536, ++ 0xb5cd, 0x39f7, 0x3961, 0x353c, ++ 0xb5d2, 0x39f3, 0x395f, 0x3541, ++ 0xb5d8, 0x39ef, 0x395c, 0x3547, ++ 0xb5dd, 0x39ec, 0x3959, 0x354c, ++ 0xb5e3, 0x39e8, 0x3956, 0x3552, ++ 0xb5e9, 0x39e4, 0x3954, 0x3557, ++ 0xb5ee, 0x39e1, 0x3951, 0x355d, ++ 0xb5f4, 0x39dd, 0x394e, 0x3563, ++ 0xb5fa, 0x39d9, 0x394b, 0x3568, ++ 0xb5ff, 0x39d6, 0x3948, 0x356e, ++ 0xb605, 0x39d2, 0x3946, 0x3573, ++ 0xb60b, 0x39cf, 0x3943, 0x3579, ++ 0xb610, 0x39cb, 0x3940, 0x357f, ++ 0xb616, 0x39c7, 0x393d, 0x3584, ++ 0xb61c, 0x39c4, 0x393a, 0x358a, ++ 0xb621, 0x39c0, 0x3937, 0x3590, ++ 0xb627, 0x39bd, 0x3935, 0x3595, ++ 0xb62d, 0x39b9, 0x3932, 0x359b, ++ 0xb633, 0x39b5, 0x392f, 0x35a1, ++ 0xb638, 0x39b2, 0x392c, 0x35a6, ++ 0xb63e, 0x39ae, 0x3929, 0x35ac, ++ 0xb644, 0x39ab, 0x3926, 0x35b2, ++ 0xb64a, 0x39a7, 0x3924, 0x35b7, ++ 0xb64f, 0x39a3, 0x3921, 0x35bd, ++ 0xb655, 0x39a0, 0x391e, 0x35c3, ++ 0xb65b, 0x399c, 0x391b, 0x35c9, ++ 0xb661, 0x3999, 0x3918, 0x35ce, ++ 0xb667, 0x3995, 0x3915, 0x35d4, ++ 0xb66c, 0x3992, 0x3912, 0x35da, ++ 0xb672, 0x398e, 0x3910, 0x35df, ++ 0xb678, 0x398a, 0x390d, 0x35e5, ++ 0xb67e, 0x3987, 0x390a, 0x35eb, ++ 0xb684, 0x3983, 0x3907, 0x35f1, ++ 0xb68a, 0x3980, 0x3904, 0x35f6, ++ 0xb68f, 0x397c, 0x3901, 0x35fc, ++ 0xb695, 0x3979, 0x38fe, 0x3602, ++ 0xb69b, 0x3975, 0x38fb, 0x3608, ++ 0xb6a1, 0x3972, 0x38f8, 0x360e, ++ 0xb6a7, 0x396e, 0x38f6, 0x3613, ++ 0xb6ad, 0x396b, 0x38f3, 0x3619, ++ 0xb6b3, 0x3967, 0x38f0, 0x361f, ++ 0xb6b9, 0x3964, 0x38ed, 0x3625, ++ 0xb6bf, 0x3960, 0x38ea, 0x362b, ++ 0xb6c5, 0x395d, 0x38e7, 0x3630, ++ 0xb6cb, 0x3959, 0x38e4, 0x3636, ++ 0xb6d1, 0x3956, 0x38e1, 0x363c, ++ 0xb6d6, 0x3952, 0x38de, 0x3642, ++ 0xb6dc, 0x394f, 0x38db, 0x3648, ++ 0xb6e2, 0x394b, 0x38d9, 0x364d, ++ 0xb6e8, 0x3948, 0x38d6, 0x3653, ++ 0xb6ee, 0x3944, 0x38d3, 0x3659, ++ 0xb6f4, 0x3941, 0x38d0, 0x365f, ++ 0xb6fa, 0x393d, 0x38cd, 0x3665, ++ 0xb700, 0x393a, 0x38ca, 0x366b, ++ 0xb706, 0x3936, 0x38c7, 0x3671, ++ 0xb70c, 0x3933, 0x38c4, 0x3676, ++ 0xb712, 0x392f, 0x38c1, 0x367c, ++ 0xb719, 0x392c, 0x38be, 0x3682, ++ 0xb71f, 0x3928, 0x38bb, 0x3688, ++ 0xb725, 0x3925, 0x38b8, 0x368e, ++ 0xb72b, 0x3921, 0x38b5, 0x3694, ++ 0xb731, 0x391e, 0x38b2, 0x369a, ++ 0xb737, 0x391a, 0x38af, 0x36a0, ++ 0xb73d, 0x3917, 0x38ad, 0x36a5, ++ 0xb743, 0x3914, 0x38aa, 0x36ab, ++ 0xb749, 0x3910, 0x38a7, 0x36b1, ++ 0xb74f, 0x390d, 0x38a4, 0x36b7, ++ 0xb755, 0x3909, 0x38a1, 0x36bd, ++ 0xb75b, 0x3906, 0x389e, 0x36c3, ++ 0xb762, 0x3902, 0x389b, 0x36c9, ++ 0xb768, 0x38ff, 0x3898, 0x36cf, ++ 0xb76e, 0x38fc, 0x3895, 0x36d5, ++ 0xb774, 0x38f8, 0x3892, 0x36db, ++ 0xb77a, 0x38f5, 0x388f, 0x36e1, ++ 0xb780, 0x38f1, 0x388c, 0x36e7, ++ 0xb787, 0x38ee, 0x3889, 0x36ec, ++ 0xb78d, 0x38eb, 0x3886, 0x36f2, ++ 0xb793, 0x38e7, 0x3883, 0x36f8, ++ 0xb799, 0x38e4, 0x3880, 0x36fe, ++ 0xb79f, 0x38e0, 0x387d, 0x3704, ++ 0xb7a5, 0x38dd, 0x387a, 0x370a, ++ 0xb7ac, 0x38da, 0x3877, 0x3710, ++ 0xb7b2, 0x38d6, 0x3874, 0x3716, ++ 0xb7b8, 0x38d3, 0x3871, 0x371c, ++ 0xb7be, 0x38cf, 0x386e, 0x3722, ++ 0xb7c5, 0x38cc, 0x386b, 0x3728, ++ 0xb7cb, 0x38c9, 0x3868, 0x372e, ++ 0xb7d1, 0x38c5, 0x3865, 0x3734, ++ 0xb7d7, 0x38c2, 0x3862, 0x373a, ++ 0xb7de, 0x38bf, 0x385f, 0x3740, ++ 0xb7e4, 0x38bb, 0x385c, 0x3746, ++ 0xb7ea, 0x38b8, 0x3859, 0x374c, ++ 0xb7f1, 0x38b5, 0x3856, 0x3752, ++ 0xb7f7, 0x38b1, 0x3853, 0x3758, ++ 0xb7fd, 0x38ae, 0x3850, 0x375e, ++ 0xb801, 0x38aa, 0x384d, 0x3764, ++ 0xb805, 0x38a7, 0x384a, 0x376a, ++ 0xb808, 0x38a4, 0x3847, 0x3770, ++ 0xb80b, 0x38a0, 0x3844, 0x3776, ++ 0xb80e, 0x389d, 0x3841, 0x377c, ++ 0xb811, 0x389a, 0x383e, 0x3782, ++ 0xb815, 0x3897, 0x383b, 0x3788, ++ 0xb818, 0x3893, 0x3838, 0x378e, ++ 0xb81b, 0x3890, 0x3835, 0x3794, ++ 0xb81e, 0x388d, 0x3832, 0x379a, ++ 0xb821, 0x3889, 0x382f, 0x37a0, ++ 0xb824, 0x3886, 0x382c, 0x37a6, ++ 0xb828, 0x3883, 0x3829, 0x37ac, ++ 0xb82b, 0x387f, 0x3826, 0x37b2, ++ 0xb82e, 0x387c, 0x3823, 0x37b8, ++ 0xb831, 0x3879, 0x3820, 0x37be, ++ 0xb835, 0x3876, 0x381d, 0x37c4, ++ 0xb838, 0x3872, 0x381a, 0x37ca, ++ 0xb83b, 0x386f, 0x3817, 0x37d0, ++ 0xb83e, 0x386c, 0x3814, 0x37d6, ++ 0xb841, 0x3868, 0x3811, 0x37dc, ++ 0xb845, 0x3865, 0x380e, 0x37e2, ++ 0xb848, 0x3862, 0x380b, 0x37e8, ++ 0xb84b, 0x385f, 0x3808, 0x37ee, ++ 0xb84e, 0x385b, 0x3806, 0x37f4, ++ 0xb852, 0x3858, 0x3803, 0x37fa, ++ 0xb855, 0x3855, 0x3800, 0x3800, ++ 0xb858, 0x3852, 0x37fa, 0x3803, ++ 0xb85b, 0x384e, 0x37f4, 0x3806, ++ 0xb85f, 0x384b, 0x37ee, 0x3808, ++ 0xb862, 0x3848, 0x37e8, 0x380b, ++ 0xb865, 0x3845, 0x37e2, 0x380e, ++ 0xb868, 0x3841, 0x37dc, 0x3811, ++ 0xb86c, 0x383e, 0x37d6, 0x3814, ++ 0xb86f, 0x383b, 0x37d0, 0x3817, ++ 0xb872, 0x3838, 0x37ca, 0x381a, ++ 0xb876, 0x3835, 0x37c4, 0x381d, ++ 0xb879, 0x3831, 0x37be, 0x3820, ++ 0xb87c, 0x382e, 0x37b8, 0x3823, ++ 0xb87f, 0x382b, 0x37b2, 0x3826, ++ 0xb883, 0x3828, 0x37ac, 0x3829, ++ 0xb886, 0x3824, 0x37a6, 0x382c, ++ 0xb889, 0x3821, 0x37a0, 0x382f, ++ 0xb88d, 0x381e, 0x379a, 0x3832, ++ 0xb890, 0x381b, 0x3794, 0x3835, ++ 0xb893, 0x3818, 0x378e, 0x3838, ++ 0xb897, 0x3815, 0x3788, 0x383b, ++ 0xb89a, 0x3811, 0x3782, 0x383e, ++ 0xb89d, 0x380e, 0x377c, 0x3841, ++ 0xb8a0, 0x380b, 0x3776, 0x3844, ++ 0xb8a4, 0x3808, 0x3770, 0x3847, ++ 0xb8a7, 0x3805, 0x376a, 0x384a, ++ 0xb8aa, 0x3801, 0x3764, 0x384d, ++ 0xb8ae, 0x37fd, 0x375e, 0x3850, ++ 0xb8b1, 0x37f7, 0x3758, 0x3853, ++ 0xb8b5, 0x37f1, 0x3752, 0x3856, ++ 0xb8b8, 0x37ea, 0x374c, 0x3859, ++ 0xb8bb, 0x37e4, 0x3746, 0x385c, ++ 0xb8bf, 0x37de, 0x3740, 0x385f, ++ 0xb8c2, 0x37d7, 0x373a, 0x3862, ++ 0xb8c5, 0x37d1, 0x3734, 0x3865, ++ 0xb8c9, 0x37cb, 0x372e, 0x3868, ++ 0xb8cc, 0x37c5, 0x3728, 0x386b, ++ 0xb8cf, 0x37be, 0x3722, 0x386e, ++ 0xb8d3, 0x37b8, 0x371c, 0x3871, ++ 0xb8d6, 0x37b2, 0x3716, 0x3874, ++ 0xb8da, 0x37ac, 0x3710, 0x3877, ++ 0xb8dd, 0x37a5, 0x370a, 0x387a, ++ 0xb8e0, 0x379f, 0x3704, 0x387d, ++ 0xb8e4, 0x3799, 0x36fe, 0x3880, ++ 0xb8e7, 0x3793, 0x36f8, 0x3883, ++ 0xb8eb, 0x378d, 0x36f2, 0x3886, ++ 0xb8ee, 0x3787, 0x36ec, 0x3889, ++ 0xb8f1, 0x3780, 0x36e7, 0x388c, ++ 0xb8f5, 0x377a, 0x36e1, 0x388f, ++ 0xb8f8, 0x3774, 0x36db, 0x3892, ++ 0xb8fc, 0x376e, 0x36d5, 0x3895, ++ 0xb8ff, 0x3768, 0x36cf, 0x3898, ++ 0xb902, 0x3762, 0x36c9, 0x389b, ++ 0xb906, 0x375b, 0x36c3, 0x389e, ++ 0xb909, 0x3755, 0x36bd, 0x38a1, ++ 0xb90d, 0x374f, 0x36b7, 0x38a4, ++ 0xb910, 0x3749, 0x36b1, 0x38a7, ++ 0xb914, 0x3743, 0x36ab, 0x38aa, ++ 0xb917, 0x373d, 0x36a5, 0x38ad, ++ 0xb91a, 0x3737, 0x36a0, 0x38af, ++ 0xb91e, 0x3731, 0x369a, 0x38b2, ++ 0xb921, 0x372b, 0x3694, 0x38b5, ++ 0xb925, 0x3725, 0x368e, 0x38b8, ++ 0xb928, 0x371f, 0x3688, 0x38bb, ++ 0xb92c, 0x3719, 0x3682, 0x38be, ++ 0xb92f, 0x3712, 0x367c, 0x38c1, ++ 0xb933, 0x370c, 0x3676, 0x38c4, ++ 0xb936, 0x3706, 0x3671, 0x38c7, ++ 0xb93a, 0x3700, 0x366b, 0x38ca, ++ 0xb93d, 0x36fa, 0x3665, 0x38cd, ++ 0xb941, 0x36f4, 0x365f, 0x38d0, ++ 0xb944, 0x36ee, 0x3659, 0x38d3, ++ 0xb948, 0x36e8, 0x3653, 0x38d6, ++ 0xb94b, 0x36e2, 0x364d, 0x38d9, ++ 0xb94f, 0x36dc, 0x3648, 0x38db, ++ 0xb952, 0x36d6, 0x3642, 0x38de, ++ 0xb956, 0x36d1, 0x363c, 0x38e1, ++ 0xb959, 0x36cb, 0x3636, 0x38e4, ++ 0xb95d, 0x36c5, 0x3630, 0x38e7, ++ 0xb960, 0x36bf, 0x362b, 0x38ea, ++ 0xb964, 0x36b9, 0x3625, 0x38ed, ++ 0xb967, 0x36b3, 0x361f, 0x38f0, ++ 0xb96b, 0x36ad, 0x3619, 0x38f3, ++ 0xb96e, 0x36a7, 0x3613, 0x38f6, ++ 0xb972, 0x36a1, 0x360e, 0x38f8, ++ 0xb975, 0x369b, 0x3608, 0x38fb, ++ 0xb979, 0x3695, 0x3602, 0x38fe, ++ 0xb97c, 0x368f, 0x35fc, 0x3901, ++ 0xb980, 0x368a, 0x35f6, 0x3904, ++ 0xb983, 0x3684, 0x35f1, 0x3907, ++ 0xb987, 0x367e, 0x35eb, 0x390a, ++ 0xb98a, 0x3678, 0x35e5, 0x390d, ++ 0xb98e, 0x3672, 0x35df, 0x3910, ++ 0xb992, 0x366c, 0x35da, 0x3912, ++ 0xb995, 0x3667, 0x35d4, 0x3915, ++ 0xb999, 0x3661, 0x35ce, 0x3918, ++ 0xb99c, 0x365b, 0x35c9, 0x391b, ++ 0xb9a0, 0x3655, 0x35c3, 0x391e, ++ 0xb9a3, 0x364f, 0x35bd, 0x3921, ++ 0xb9a7, 0x364a, 0x35b7, 0x3924, ++ 0xb9ab, 0x3644, 0x35b2, 0x3926, ++ 0xb9ae, 0x363e, 0x35ac, 0x3929, ++ 0xb9b2, 0x3638, 0x35a6, 0x392c, ++ 0xb9b5, 0x3633, 0x35a1, 0x392f, ++ 0xb9b9, 0x362d, 0x359b, 0x3932, ++ 0xb9bd, 0x3627, 0x3595, 0x3935, ++ 0xb9c0, 0x3621, 0x3590, 0x3937, ++ 0xb9c4, 0x361c, 0x358a, 0x393a, ++ 0xb9c7, 0x3616, 0x3584, 0x393d, ++ 0xb9cb, 0x3610, 0x357f, 0x3940, ++ 0xb9cf, 0x360b, 0x3579, 0x3943, ++ 0xb9d2, 0x3605, 0x3573, 0x3946, ++ 0xb9d6, 0x35ff, 0x356e, 0x3948, ++ 0xb9d9, 0x35fa, 0x3568, 0x394b, ++ 0xb9dd, 0x35f4, 0x3563, 0x394e, ++ 0xb9e1, 0x35ee, 0x355d, 0x3951, ++ 0xb9e4, 0x35e9, 0x3557, 0x3954, ++ 0xb9e8, 0x35e3, 0x3552, 0x3956, ++ 0xb9ec, 0x35dd, 0x354c, 0x3959, ++ 0xb9ef, 0x35d8, 0x3547, 0x395c, ++ 0xb9f3, 0x35d2, 0x3541, 0x395f, ++ 0xb9f7, 0x35cd, 0x353c, 0x3961, ++ 0xb9fa, 0x35c7, 0x3536, 0x3964, ++ 0xb9fe, 0x35c1, 0x3530, 0x3967, ++ 0xba02, 0x35bc, 0x352b, 0x396a, ++ 0xba05, 0x35b6, 0x3525, 0x396d, ++ 0xba09, 0x35b1, 0x3520, 0x396f, ++ 0xba0d, 0x35ab, 0x351a, 0x3972, ++ 0xba10, 0x35a6, 0x3515, 0x3975, ++ 0xba14, 0x35a0, 0x350f, 0x3978, ++ 0xba18, 0x359b, 0x350a, 0x397a, ++ 0xba1b, 0x3595, 0x3504, 0x397d, ++ 0xba1f, 0x3590, 0x34ff, 0x3980, ++ 0xba23, 0x358a, 0x34f9, 0x3983, ++ 0xba26, 0x3585, 0x34f4, 0x3985, ++ 0xba2a, 0x357f, 0x34ef, 0x3988, ++ 0xba2e, 0x357a, 0x34e9, 0x398b, ++ 0xba32, 0x3574, 0x34e4, 0x398d, ++ 0xba35, 0x356f, 0x34de, 0x3990, ++ 0xba39, 0x3569, 0x34d9, 0x3993, ++ 0xba3d, 0x3564, 0x34d3, 0x3996, ++ 0xba40, 0x355e, 0x34ce, 0x3998, ++ 0xba44, 0x3559, 0x34c9, 0x399b, ++ 0xba48, 0x3554, 0x34c3, 0x399e, ++ 0xba4c, 0x354e, 0x34be, 0x39a0, ++ 0xba4f, 0x3549, 0x34b9, 0x39a3, ++ 0xba53, 0x3543, 0x34b3, 0x39a6, ++ 0xba57, 0x353e, 0x34ae, 0x39a8, ++ 0xba5a, 0x3539, 0x34a8, 0x39ab, ++ 0xba5e, 0x3533, 0x34a3, 0x39ae, ++ 0xba62, 0x352e, 0x349e, 0x39b0, ++ 0xba66, 0x3529, 0x3499, 0x39b3, ++ 0xba6a, 0x3523, 0x3493, 0x39b6, ++ 0xba6d, 0x351e, 0x348e, 0x39b8, ++ 0xba71, 0x3519, 0x3489, 0x39bb, ++ 0xba75, 0x3513, 0x3483, 0x39be, ++ 0xba79, 0x350e, 0x347e, 0x39c0, ++ 0xba7c, 0x3509, 0x3479, 0x39c3, ++ 0xba80, 0x3504, 0x3474, 0x39c5, ++ 0xba84, 0x34fe, 0x346e, 0x39c8, ++ 0xba88, 0x34f9, 0x3469, 0x39cb, ++ 0xba8b, 0x34f4, 0x3464, 0x39cd, ++ 0xba8f, 0x34ef, 0x345f, 0x39d0, ++ 0xba93, 0x34e9, 0x345a, 0x39d2, ++ 0xba97, 0x34e4, 0x3454, 0x39d5, ++ 0xba9b, 0x34df, 0x344f, 0x39d8, ++ 0xba9e, 0x34da, 0x344a, 0x39da, ++ 0xbaa2, 0x34d5, 0x3445, 0x39dd, ++ 0xbaa6, 0x34cf, 0x3440, 0x39df, ++ 0xbaaa, 0x34ca, 0x343b, 0x39e2, ++ 0xbaae, 0x34c5, 0x3435, 0x39e5, ++ 0xbab1, 0x34c0, 0x3430, 0x39e7, ++ 0xbab5, 0x34bb, 0x342b, 0x39ea, ++ 0xbab9, 0x34b6, 0x3426, 0x39ec, ++ 0xbabd, 0x34b1, 0x3421, 0x39ef, ++ 0xbac1, 0x34ac, 0x341c, 0x39f1, ++ 0xbac5, 0x34a6, 0x3417, 0x39f4, ++ 0xbac8, 0x34a1, 0x3412, 0x39f6, ++ 0xbacc, 0x349c, 0x340d, 0x39f9, ++ 0xbad0, 0x3497, 0x3408, 0x39fb, ++ 0xbad4, 0x3492, 0x3403, 0x39fe, ++ 0xbad8, 0x348d, 0x33fc, 0x3a00, ++ 0xbadc, 0x3488, 0x33f2, 0x3a03, ++ 0xbae0, 0x3483, 0x33e8, 0x3a05, ++ 0xbae3, 0x347e, 0x33de, 0x3a08, ++ 0xbae7, 0x3479, 0x33d4, 0x3a0a, ++ 0xbaeb, 0x3474, 0x33ca, 0x3a0d, ++ 0xbaef, 0x346f, 0x33c1, 0x3a0f, ++ 0xbaf3, 0x346a, 0x33b7, 0x3a12, ++ 0xbaf7, 0x3465, 0x33ad, 0x3a14, ++ 0xbafb, 0x3460, 0x33a3, 0x3a17, ++ 0xbafe, 0x345b, 0x3399, 0x3a19, ++ 0xbb02, 0x3456, 0x3390, 0x3a1c, ++ 0xbb06, 0x3451, 0x3386, 0x3a1e, ++ 0xbb0a, 0x344d, 0x337c, 0x3a20, ++ 0xbb0e, 0x3448, 0x3372, 0x3a23, ++ 0xbb12, 0x3443, 0x3369, 0x3a25, ++ 0xbb16, 0x343e, 0x335f, 0x3a28, ++ 0xbb1a, 0x3439, 0x3355, 0x3a2a, ++ 0xbb1e, 0x3434, 0x334c, 0x3a2c, ++ 0xbb21, 0x342f, 0x3342, 0x3a2f, ++ 0xbb25, 0x342a, 0x3339, 0x3a31, ++ 0xbb29, 0x3426, 0x332f, 0x3a34, ++ 0xbb2d, 0x3421, 0x3326, 0x3a36, ++ 0xbb31, 0x341c, 0x331c, 0x3a38, ++ 0xbb35, 0x3417, 0x3313, 0x3a3b, ++ 0xbb39, 0x3412, 0x3309, 0x3a3d, ++ 0xbb3d, 0x340e, 0x3300, 0x3a3f, ++ 0xbb41, 0x3409, 0x32f7, 0x3a42, ++ 0xbb45, 0x3404, 0x32ed, 0x3a44, ++ 0xbb49, 0x33ff, 0x32e4, 0x3a46, ++ 0xbb4d, 0x33f6, 0x32db, 0x3a49, ++ 0xbb51, 0x33ed, 0x32d1, 0x3a4b, ++ 0xbb54, 0x33e3, 0x32c8, 0x3a4d, ++ 0xbb58, 0x33da, 0x32bf, 0x3a50, ++ 0xbb5c, 0x33d0, 0x32b6, 0x3a52, ++ 0xbb60, 0x33c7, 0x32ad, 0x3a54, ++ 0xbb64, 0x33be, 0x32a3, 0x3a57, ++ 0xbb68, 0x33b5, 0x329a, 0x3a59, ++ 0xbb6c, 0x33ab, 0x3291, 0x3a5b, ++ 0xbb70, 0x33a2, 0x3288, 0x3a5d, ++ 0xbb74, 0x3399, 0x327f, 0x3a60, ++ 0xbb78, 0x3390, 0x3276, 0x3a62, ++ 0xbb7c, 0x3387, 0x326d, 0x3a64, ++ 0xbb80, 0x337d, 0x3264, 0x3a66, ++ 0xbb84, 0x3374, 0x325b, 0x3a69, ++ 0xbb88, 0x336b, 0x3252, 0x3a6b, ++ 0xbb8c, 0x3362, 0x3249, 0x3a6d, ++ 0xbb90, 0x3359, 0x3241, 0x3a6f, ++ 0xbb94, 0x3350, 0x3238, 0x3a71, ++ 0xbb98, 0x3347, 0x322f, 0x3a74, ++ 0xbb9c, 0x333e, 0x3226, 0x3a76, ++ 0xbba0, 0x3335, 0x321e, 0x3a78, ++ 0xbba4, 0x332c, 0x3215, 0x3a7a, ++ 0xbba8, 0x3323, 0x320c, 0x3a7c, ++ 0xbbac, 0x331a, 0x3204, 0x3a7e, ++ 0xbbb0, 0x3312, 0x31fb, 0x3a81, ++ 0xbbb4, 0x3309, 0x31f2, 0x3a83, ++ 0xbbb8, 0x3300, 0x31ea, 0x3a85, ++ 0xbbbc, 0x32f7, 0x31e1, 0x3a87, ++ 0xbbc0, 0x32ee, 0x31d9, 0x3a89, ++ 0xbbc4, 0x32e6, 0x31d0, 0x3a8b, ++ 0xbbc8, 0x32dd, 0x31c8, 0x3a8d, ++ 0xbbcc, 0x32d4, 0x31bf, 0x3a90, ++ 0xbbd0, 0x32cc, 0x31b7, 0x3a92, ++ 0xbbd4, 0x32c3, 0x31af, 0x3a94, ++ 0xbbd8, 0x32ba, 0x31a6, 0x3a96, ++ 0xbbdc, 0x32b2, 0x319e, 0x3a98, ++ 0xbbe0, 0x32a9, 0x3196, 0x3a9a, ++ 0xbbe4, 0x32a1, 0x318e, 0x3a9c, ++ 0xbbe8, 0x3298, 0x3185, 0x3a9e, ++ 0xbbec, 0x3290, 0x317d, 0x3aa0, ++ 0xbbf0, 0x3287, 0x3175, 0x3aa2, ++ 0xbbf4, 0x327f, 0x316d, 0x3aa4, ++ 0xbbf8, 0x3277, 0x3165, 0x3aa6, ++ 0xbbfc, 0x326e, 0x315d, 0x3aa8, ++ 0 }; ++ +diff --git a/src/bicubic_table.py b/src/bicubic_table.py +new file mode 100755 +index 0000000..232ccb7 +--- /dev/null ++++ b/src/bicubic_table.py +@@ -0,0 +1,72 @@ ++#!/usr/bin/python ++ ++import struct ++ ++def half(i): ++ fs, fe, fm = ((i >> 31) & 0x1, (i >> 23) & 0xff, i & 0x7fffff) ++ s, e, m = (fs, 0, 0) ++ ++ if (fe == 0x0): ++ pass ++ if ((fe == 0xff) and (fm == 0x0)): ++ e = 31 ++ elif (fe == 0xff): ++ m = 1 ++ e = 31 ++ else: ++ exp = fe - 127; ++ if (exp < -24): ++ pass ++ elif (exp < -14): ++ temp = 10 - (-14 - exp) ++ m = 2**temp + (m >> (23 - temp)) ++ elif (exp > 15): ++ e = 31 ++ else: ++ e = exp + 15 ++ m = fm >> 13 ++ ++ return ((s << 15) | (e << 10) | m) ++ ++def texgen(pix): ++ ++ tex = [] ++ ++ for i in range(0,pix,4): ++ ++ a = i / float(pix) ++ a2 = a ** 2 ++ a3 = a ** 3 ++ ++ w0 = 1 / 6.0 * (-a3 + 3 * a2 + -3 * a + 1) ++ w1 = 1 / 6.0 * (3 * a3 + -6 * a2 + 4) ++ w2 = 1 / 6.0 * (-3 * a3 + 3 * a2 + 3 * a + 1) ++ w3 = 1 / 6.0 * a3 ++ ++ tex.append(-(1 - (w1 / (w0 + w1)) + a)) ++ tex.append(1 + (w3 / (w2 + w3)) - a) ++ tex.append(w0 + w1) ++ tex.append(w2 + w3) ++ ++ return tex ++ ++def printrow(l, offset): ++ ++ seq = [ struct.unpack('<I',struct.pack('f',i))[0] for i in l[offset:offset+4] ] ++ seq = [ hex(half(i)) for i in seq ] ++ return "\t" + ", ".join(seq) + "," ++ ++def maketable(pix): ++ ++ l = texgen(pix) ++ ++ print "static const uint16_t bicubic_tex_" + str(pix) + "[] = {" ++ ++ for i in range(0, pix, 4): ++ ++ print printrow(l, i) ++ ++ print "\t0 };\n" ++ ++maketable(512) ++maketable(2048) +diff --git a/src/legacy_crtc.c b/src/legacy_crtc.c +index 3df61a7..75ab6c8 100644 +--- a/src/legacy_crtc.c ++++ b/src/legacy_crtc.c +@@ -48,8 +48,7 @@ + + #ifdef XF86DRI + #define _XF86DRI_SERVER_ +-#include "radeon_dri.h" +-#include "radeon_sarea.h" ++#include "radeon_drm.h" + #include "sarea.h" + #ifdef DRM_IOCTL_MODESET_CTL + #include <sys/ioctl.h> +@@ -624,11 +623,17 @@ radeon_crtc_modeset_ioctl(xf86CrtcPtr crtc, Bool post) + RADEONInfoPtr info = RADEONPTR(crtc->scrn); + RADEONCrtcPrivatePtr radeon_crtc = crtc->driver_private; + struct drm_modeset_ctl modeset; ++ unsigned char *RADEONMMIO = info->MMIO; ++ ++ if (!info->directRenderingEnabled) ++ return; + + modeset.crtc = radeon_crtc->crtc_id; + modeset.cmd = post ? _DRM_POST_MODESET : _DRM_PRE_MODESET; + +- ioctl(info->drmFD, DRM_IOCTL_MODESET_CTL, &modeset); ++ ioctl(info->dri->drmFD, DRM_IOCTL_MODESET_CTL, &modeset); ++ ++ info->ModeReg->gen_int_cntl = INREG( RADEON_GEN_INT_CNTL ); + #endif + } + +@@ -752,13 +757,13 @@ RADEONInitCrtcBase(xf86CrtcPtr crtc, RADEONSavePtr save, + RADEONInfoPtr info = RADEONPTR(pScrn); + int Base; + #ifdef XF86DRI +- RADEONSAREAPrivPtr pSAREAPriv; ++ drm_radeon_sarea_t *pSAREAPriv; + XF86DRISAREAPtr pSAREA; + #endif + + save->crtc_offset = pScrn->fbOffset; + #ifdef XF86DRI +- if (info->allowPageFlip) ++ if (info->dri && info->dri->allowPageFlip) + save->crtc_offset_cntl = RADEON_CRTC_OFFSET_FLIP_CNTL; + else + #endif +@@ -851,7 +856,7 @@ RADEONInitCrtcBase(xf86CrtcPtr crtc, RADEONSavePtr save, + pSAREA->frame.height = pScrn->frameY1 - y + 1; + + if (pSAREAPriv->pfCurrentPage == 1) { +- Base += info->backOffset - info->frontOffset; ++ Base += info->dri->backOffset - info->dri->frontOffset; + } + } + #endif +@@ -970,7 +975,7 @@ RADEONInitCrtc2Base(xf86CrtcPtr crtc, RADEONSavePtr save, + RADEONInfoPtr info = RADEONPTR(pScrn); + int Base; + #ifdef XF86DRI +- RADEONSAREAPrivPtr pSAREAPriv; ++ drm_radeon_sarea_t *pSAREAPriv; + XF86DRISAREAPtr pSAREA; + #endif + +@@ -978,7 +983,7 @@ RADEONInitCrtc2Base(xf86CrtcPtr crtc, RADEONSavePtr save, + */ + save->crtc2_offset = pScrn->fbOffset; + #ifdef XF86DRI +- if (info->allowPageFlip) ++ if (info->dri && info->dri->allowPageFlip) + save->crtc2_offset_cntl = RADEON_CRTC_OFFSET_FLIP_CNTL; + else + #endif +@@ -1065,7 +1070,7 @@ RADEONInitCrtc2Base(xf86CrtcPtr crtc, RADEONSavePtr save, + pSAREAPriv->crtc2_base = Base; + + if (pSAREAPriv->pfCurrentPage == 1) { +- Base += info->backOffset - info->frontOffset; ++ Base += info->dri->backOffset - info->dri->frontOffset; + } + } + #endif +@@ -1327,9 +1332,12 @@ radeon_update_tv_routing(ScrnInfoPtr pScrn, RADEONSavePtr restore) + } + + /* Calculate display buffer watermark to prevent buffer underflow */ +-static void +-RADEONInitDispBandwidth2(ScrnInfoPtr pScrn, RADEONInfoPtr info, int pixel_bytes2, DisplayModePtr mode1, DisplayModePtr mode2) ++void ++RADEONInitDispBandwidthLegacy(ScrnInfoPtr pScrn, ++ DisplayModePtr mode1, int pixel_bytes1, ++ DisplayModePtr mode2, int pixel_bytes2) + { ++ RADEONInfoPtr info = RADEONPTR(pScrn); + RADEONEntPtr pRADEONEnt = RADEONEntPriv(pScrn); + unsigned char *RADEONMMIO = info->MMIO; + +@@ -1352,10 +1360,10 @@ RADEONInitDispBandwidth2(ScrnInfoPtr pScrn, RADEONInfoPtr info, int pixel_bytes2 + float min_mem_eff = 0.8; + float sclk_eff, sclk_delay; + float mc_latency_mclk, mc_latency_sclk, cur_latency_mclk, cur_latency_sclk; +- float disp_latency, disp_latency_overhead, disp_drain_rate, disp_drain_rate2; ++ float disp_latency, disp_latency_overhead, disp_drain_rate = 0, disp_drain_rate2; + float pix_clk, pix_clk2; /* in MHz */ + int cur_size = 16; /* in octawords */ +- int critical_point, critical_point2; ++ int critical_point = 0, critical_point2; + int stop_req, max_stop_req; + float read_return_rate, time_disp1_drop_priority; + +@@ -1366,15 +1374,15 @@ RADEONInitDispBandwidth2(ScrnInfoPtr pScrn, RADEONInfoPtr info, int pixel_bytes2 + */ + if ((info->DispPriority == 2) && IS_R300_VARIANT) { + uint32_t mc_init_misc_lat_timer = INREG(R300_MC_INIT_MISC_LAT_TIMER); +- if (pRADEONEnt->pCrtc[1]->enabled) { +- mc_init_misc_lat_timer |= 0x1100; /* display 0 and 1 */ +- } else { +- mc_init_misc_lat_timer |= 0x0100; /* display 0 only */ +- } ++ mc_init_misc_lat_timer &= ~(R300_MC_DISP1R_INIT_LAT_MASK << R300_MC_DISP1R_INIT_LAT_SHIFT); ++ mc_init_misc_lat_timer &= ~(R300_MC_DISP0R_INIT_LAT_MASK << R300_MC_DISP0R_INIT_LAT_SHIFT); ++ if (pRADEONEnt->pCrtc[1]->enabled) ++ mc_init_misc_lat_timer |= (1 << R300_MC_DISP1R_INIT_LAT_SHIFT); /* display 1 */ ++ if (pRADEONEnt->pCrtc[0]->enabled) ++ mc_init_misc_lat_timer |= (1 << R300_MC_DISP0R_INIT_LAT_SHIFT); /* display 0 */ + OUTREG(R300_MC_INIT_MISC_LAT_TIMER, mc_init_misc_lat_timer); + } + +- + /* R420 and RV410 family not supported yet */ + if (info->ChipFamily == CHIP_FAMILY_R420 || info->ChipFamily == CHIP_FAMILY_RV410) return; + +@@ -1383,15 +1391,17 @@ RADEONInitDispBandwidth2(ScrnInfoPtr pScrn, RADEONInfoPtr info, int pixel_bytes2 + */ + mem_bw = info->mclk * (info->RamWidth / 8) * (info->IsDDR ? 2 : 1); + +- pix_clk = mode1->Clock/1000.0; +- if (mode2) ++ pix_clk = 0; ++ pix_clk2 = 0; ++ peak_disp_bw = 0; ++ if (mode1) { ++ pix_clk = mode1->Clock/1000.0; ++ peak_disp_bw += (pix_clk * pixel_bytes1); ++ } ++ if (mode2) { + pix_clk2 = mode2->Clock/1000.0; +- else +- pix_clk2 = 0; +- +- peak_disp_bw = (pix_clk * info->CurrentLayout.pixel_bytes); +- if (pixel_bytes2) +- peak_disp_bw += (pix_clk2 * pixel_bytes2); ++ peak_disp_bw += (pix_clk2 * pixel_bytes2); ++ } + + if (peak_disp_bw >= mem_bw * min_mem_eff) { + xf86DrvMsg(pScrn->scrnIndex, X_WARNING, +@@ -1399,20 +1409,6 @@ RADEONInitDispBandwidth2(ScrnInfoPtr pScrn, RADEONInfoPtr info, int pixel_bytes2 + "If you have flickering problem, try to lower resolution, refresh rate, or color depth\n"); + } + +- /* CRTC1 +- Set GRPH_BUFFER_CNTL register using h/w defined optimal values. +- GRPH_STOP_REQ <= MIN[ 0x7C, (CRTC_H_DISP + 1) * (bit depth) / 0x10 ] +- */ +- stop_req = mode1->HDisplay * info->CurrentLayout.pixel_bytes / 16; +- +- /* setup Max GRPH_STOP_REQ default value */ +- if (IS_RV100_VARIANT) +- max_stop_req = 0x5c; +- else +- max_stop_req = 0x7c; +- if (stop_req > max_stop_req) +- stop_req = max_stop_req; +- + /* Get values from the EXT_MEM_CNTL register...converting its contents. */ + temp = INREG(RADEON_MEM_TIMING_CNTL); + if ((info->ChipFamily == CHIP_FAMILY_RV100) || info->IsIGP) { /* RV100, M6, IGPs */ +@@ -1435,9 +1431,8 @@ RADEONInitDispBandwidth2(ScrnInfoPtr pScrn, RADEONInfoPtr info, int pixel_bytes2 + } + + if (IS_R300_VARIANT) { +- + /* on the R300, Tcas is included in Trbs. +- */ ++ */ + temp = INREG(RADEON_MEM_CNTL); + data = (R300_MEM_NUM_CHANNELS_MASK & temp); + if (data == 1) { +@@ -1467,13 +1462,14 @@ RADEONInitDispBandwidth2(ScrnInfoPtr pScrn, RADEONInfoPtr info, int pixel_bytes2 + } else { + #ifdef XF86DRI + if (info->directRenderingEnabled) +- sclk_eff = info->sclk - (info->agpMode * 50.0 / 3.0); ++ sclk_eff = info->sclk - (info->dri->agpMode * 50.0 / 3.0); + else + #endif + sclk_eff = info->sclk; + } + +- /* Find the memory controller latency for the display client. ++ /* ++ Find the memory controller latency for the display client. + */ + if (IS_R300_VARIANT) { + /*not enough for R350 ???*/ +@@ -1527,89 +1523,107 @@ RADEONInitDispBandwidth2(ScrnInfoPtr pScrn, RADEONInfoPtr info, int pixel_bytes2 + mc_latency_sclk = mc_latency_sclk + disp_latency_overhead + cur_latency_sclk; + disp_latency = MAX(mc_latency_mclk, mc_latency_sclk); + +- /* +- Find the drain rate of the display buffer. +- */ +- disp_drain_rate = pix_clk / (16.0/info->CurrentLayout.pixel_bytes); +- if (pixel_bytes2) +- disp_drain_rate2 = pix_clk2 / (16.0/pixel_bytes2); ++ /* setup Max GRPH_STOP_REQ default value */ ++ if (IS_RV100_VARIANT) ++ max_stop_req = 0x5c; + else +- disp_drain_rate2 = 0; ++ max_stop_req = 0x7c; + +- /* +- Find the critical point of the display buffer. +- */ +- critical_point= (uint32_t)(disp_drain_rate * disp_latency + 0.5); ++ if (mode1) { ++ /* CRTC1 ++ Set GRPH_BUFFER_CNTL register using h/w defined optimal values. ++ GRPH_STOP_REQ <= MIN[ 0x7C, (CRTC_H_DISP + 1) * (bit depth) / 0x10 ] ++ */ ++ stop_req = mode1->HDisplay * pixel_bytes1 / 16; + +- /* ???? */ +- /* +- temp = (info->SavedReg.grph_buffer_cntl & RADEON_GRPH_CRITICAL_POINT_MASK) >> RADEON_GRPH_CRITICAL_POINT_SHIFT; +- if (critical_point < temp) critical_point = temp; +- */ +- if (info->DispPriority == 2) { +- critical_point = 0; +- } ++ if (stop_req > max_stop_req) ++ stop_req = max_stop_req; + +- /* +- The critical point should never be above max_stop_req-4. Setting +- GRPH_CRITICAL_CNTL = 0 will thus force high priority all the time. +- */ +- if (max_stop_req - critical_point < 4) critical_point = 0; ++ /* ++ Find the drain rate of the display buffer. ++ */ ++ disp_drain_rate = pix_clk / (16.0/pixel_bytes1); + +- if (critical_point == 0 && mode2 && info->ChipFamily == CHIP_FAMILY_R300) { +- /* some R300 cards have problem with this set to 0, when CRTC2 is enabled.*/ +- critical_point = 0x10; +- } ++ /* ++ Find the critical point of the display buffer. ++ */ ++ critical_point= (uint32_t)(disp_drain_rate * disp_latency + 0.5); + +- temp = info->SavedReg->grph_buffer_cntl; +- temp &= ~(RADEON_GRPH_STOP_REQ_MASK); +- temp |= (stop_req << RADEON_GRPH_STOP_REQ_SHIFT); +- temp &= ~(RADEON_GRPH_START_REQ_MASK); +- if ((info->ChipFamily == CHIP_FAMILY_R350) && +- (stop_req > 0x15)) { +- stop_req -= 0x10; +- } +- temp |= (stop_req << RADEON_GRPH_START_REQ_SHIFT); ++ /* ???? */ ++ /* ++ temp = (info->SavedReg.grph_buffer_cntl & RADEON_GRPH_CRITICAL_POINT_MASK) >> RADEON_GRPH_CRITICAL_POINT_SHIFT; ++ if (critical_point < temp) critical_point = temp; ++ */ ++ if (info->DispPriority == 2) { ++ critical_point = 0; ++ } + +- temp |= RADEON_GRPH_BUFFER_SIZE; +- temp &= ~(RADEON_GRPH_CRITICAL_CNTL | +- RADEON_GRPH_CRITICAL_AT_SOF | +- RADEON_GRPH_STOP_CNTL); +- /* +- Write the result into the register. +- */ +- OUTREG(RADEON_GRPH_BUFFER_CNTL, ((temp & ~RADEON_GRPH_CRITICAL_POINT_MASK) | +- (critical_point << RADEON_GRPH_CRITICAL_POINT_SHIFT))); ++ /* ++ The critical point should never be above max_stop_req-4. Setting ++ GRPH_CRITICAL_CNTL = 0 will thus force high priority all the time. ++ */ ++ if (max_stop_req - critical_point < 4) critical_point = 0; ++ ++ if (critical_point == 0 && mode2 && info->ChipFamily == CHIP_FAMILY_R300) { ++ /* some R300 cards have problem with this set to 0, when CRTC2 is enabled.*/ ++ critical_point = 0x10; ++ } ++ ++ temp = info->SavedReg->grph_buffer_cntl; ++ temp &= ~(RADEON_GRPH_STOP_REQ_MASK); ++ temp |= (stop_req << RADEON_GRPH_STOP_REQ_SHIFT); ++ temp &= ~(RADEON_GRPH_START_REQ_MASK); ++ if ((info->ChipFamily == CHIP_FAMILY_R350) && ++ (stop_req > 0x15)) { ++ stop_req -= 0x10; ++ } ++ temp |= (stop_req << RADEON_GRPH_START_REQ_SHIFT); ++ ++ temp |= RADEON_GRPH_BUFFER_SIZE; ++ temp &= ~(RADEON_GRPH_CRITICAL_CNTL | ++ RADEON_GRPH_CRITICAL_AT_SOF | ++ RADEON_GRPH_STOP_CNTL); ++ /* ++ Write the result into the register. ++ */ ++ OUTREG(RADEON_GRPH_BUFFER_CNTL, ((temp & ~RADEON_GRPH_CRITICAL_POINT_MASK) | ++ (critical_point << RADEON_GRPH_CRITICAL_POINT_SHIFT))); + + #if 0 +- if ((info->ChipFamily == CHIP_FAMILY_RS400) || +- (info->ChipFamily == CHIP_FAMILY_RS480)) { +- /* attempt to program RS400 disp regs correctly ??? */ +- temp = info->SavedReg->disp1_req_cntl1; +- temp &= ~(RS400_DISP1_START_REQ_LEVEL_MASK | +- RS400_DISP1_STOP_REQ_LEVEL_MASK); +- OUTREG(RS400_DISP1_REQ_CNTL1, (temp | +- (critical_point << RS400_DISP1_START_REQ_LEVEL_SHIFT) | +- (critical_point << RS400_DISP1_STOP_REQ_LEVEL_SHIFT))); +- temp = info->SavedReg->dmif_mem_cntl1; +- temp &= ~(RS400_DISP1_CRITICAL_POINT_START_MASK | +- RS400_DISP1_CRITICAL_POINT_STOP_MASK); +- OUTREG(RS400_DMIF_MEM_CNTL1, (temp | +- (critical_point << RS400_DISP1_CRITICAL_POINT_START_SHIFT) | +- (critical_point << RS400_DISP1_CRITICAL_POINT_STOP_SHIFT))); +- } ++ if ((info->ChipFamily == CHIP_FAMILY_RS400) || ++ (info->ChipFamily == CHIP_FAMILY_RS480)) { ++ /* attempt to program RS400 disp regs correctly ??? */ ++ temp = info->SavedReg->disp1_req_cntl1; ++ temp &= ~(RS400_DISP1_START_REQ_LEVEL_MASK | ++ RS400_DISP1_STOP_REQ_LEVEL_MASK); ++ OUTREG(RS400_DISP1_REQ_CNTL1, (temp | ++ (critical_point << RS400_DISP1_START_REQ_LEVEL_SHIFT) | ++ (critical_point << RS400_DISP1_STOP_REQ_LEVEL_SHIFT))); ++ temp = info->SavedReg->dmif_mem_cntl1; ++ temp &= ~(RS400_DISP1_CRITICAL_POINT_START_MASK | ++ RS400_DISP1_CRITICAL_POINT_STOP_MASK); ++ OUTREG(RS400_DMIF_MEM_CNTL1, (temp | ++ (critical_point << RS400_DISP1_CRITICAL_POINT_START_SHIFT) | ++ (critical_point << RS400_DISP1_CRITICAL_POINT_STOP_SHIFT))); ++ } + #endif + +- xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, RADEON_LOGLEVEL_DEBUG, +- "GRPH_BUFFER_CNTL from %x to %x\n", +- (unsigned int)info->SavedReg->grph_buffer_cntl, +- (unsigned int)INREG(RADEON_GRPH_BUFFER_CNTL)); ++ xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, RADEON_LOGLEVEL_DEBUG, ++ "GRPH_BUFFER_CNTL from %x to %x\n", ++ (unsigned int)info->SavedReg->grph_buffer_cntl, ++ (unsigned int)INREG(RADEON_GRPH_BUFFER_CNTL)); ++ } + + if (mode2) { + stop_req = mode2->HDisplay * pixel_bytes2 / 16; + + if (stop_req > max_stop_req) stop_req = max_stop_req; + ++ /* ++ Find the drain rate of the display buffer. ++ */ ++ disp_drain_rate2 = pix_clk2 / (16.0/pixel_bytes2); ++ + temp = info->SavedReg->grph2_buffer_cntl; + temp &= ~(RADEON_GRPH_STOP_REQ_MASK); + temp |= (stop_req << RADEON_GRPH_STOP_REQ_SHIFT); +@@ -1629,7 +1643,10 @@ RADEONInitDispBandwidth2(ScrnInfoPtr pScrn, RADEONInfoPtr info, int pixel_bytes2 + critical_point2 = 0; + else { + read_return_rate = MIN(info->sclk, info->mclk*(info->RamWidth*(info->IsDDR+1)/128)); +- time_disp1_drop_priority = critical_point / (read_return_rate - disp_drain_rate); ++ if (mode1) ++ time_disp1_drop_priority = critical_point / (read_return_rate - disp_drain_rate); ++ else ++ time_disp1_drop_priority = 0; + + critical_point2 = (uint32_t)((disp_latency + time_disp1_drop_priority + + disp_latency) * disp_drain_rate2 + 0.5); +@@ -1681,45 +1698,6 @@ RADEONInitDispBandwidth2(ScrnInfoPtr pScrn, RADEONInfoPtr info, int pixel_bytes2 + } + + void +-RADEONInitDispBandwidth(ScrnInfoPtr pScrn) +-{ +- RADEONInfoPtr info = RADEONPTR(pScrn); +- xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(pScrn); +- DisplayModePtr mode1, mode2; +- int pixel_bytes2 = 0; +- +- if (info->IsPrimary || info->IsSecondary) +- mode1 = &xf86_config->crtc[0]->mode; +- else +- mode1 = info->CurrentLayout.mode; +- mode2 = NULL; +- pixel_bytes2 = info->CurrentLayout.pixel_bytes; +- +- if (xf86_config->num_crtc == 2) { +- pixel_bytes2 = 0; +- mode2 = NULL; +- +- if (xf86_config->crtc[1]->enabled && xf86_config->crtc[0]->enabled) { +- pixel_bytes2 = info->CurrentLayout.pixel_bytes; +- mode1 = &xf86_config->crtc[0]->mode; +- mode2 = &xf86_config->crtc[1]->mode; +- } else if (xf86_config->crtc[0]->enabled) { +- mode1 = &xf86_config->crtc[0]->mode; +- } else if (xf86_config->crtc[1]->enabled) { +- mode1 = &xf86_config->crtc[1]->mode; +- } else +- return; +- } else { +- if (xf86_config->crtc[0]->enabled) +- mode1 = &xf86_config->crtc[0]->mode; +- else +- return; +- } +- +- RADEONInitDispBandwidth2(pScrn, info, pixel_bytes2, mode1, mode2); +-} +- +-void + legacy_crtc_mode_set(xf86CrtcPtr crtc, DisplayModePtr mode, + DisplayModePtr adjusted_mode, int x, int y) + { +@@ -1729,10 +1707,15 @@ legacy_crtc_mode_set(xf86CrtcPtr crtc, DisplayModePtr mode, + RADEONInfoPtr info = RADEONPTR(pScrn); + int i = 0; + double dot_clock = 0; +- int pll_flags = RADEON_PLL_LEGACY | RADEON_PLL_PREFER_LOW_REF_DIV; ++ int pll_flags = RADEON_PLL_LEGACY; + Bool update_tv_routing = FALSE; + Bool tilingChanged = FALSE; + ++ if (adjusted_mode->Clock > 200000) /* range limits??? */ ++ pll_flags |= RADEON_PLL_PREFER_HIGH_FB_DIV; ++ else ++ pll_flags |= RADEON_PLL_PREFER_LOW_REF_DIV; ++ + if (info->allowColorTiling) { + radeon_crtc->can_tile = (adjusted_mode->Flags & (V_DBLSCAN | V_INTERLACE)) ? FALSE : TRUE; + tilingChanged = RADEONSetTiling(pScrn); +diff --git a/src/legacy_output.c b/src/legacy_output.c +index 9c9ebb9..e5ddf1f 100644 +--- a/src/legacy_output.c ++++ b/src/legacy_output.c +@@ -48,6 +48,8 @@ + #include "radeon_tv.h" + #include "radeon_atombios.h" + ++#include "ati_pciids_gen.h" ++ + static RADEONMonitorType radeon_detect_tv(ScrnInfoPtr pScrn); + static RADEONMonitorType radeon_detect_primary_dac(ScrnInfoPtr pScrn, Bool color); + static RADEONMonitorType radeon_detect_tv_dac(ScrnInfoPtr pScrn, Bool color); +@@ -277,16 +279,12 @@ static void + RADEONRestoreDVOChip(ScrnInfoPtr pScrn, xf86OutputPtr output) + { + RADEONInfoPtr info = RADEONPTR(pScrn); +- unsigned char *RADEONMMIO = info->MMIO; + RADEONOutputPrivatePtr radeon_output = output->driver_private; + + if (!radeon_output->DVOChip) + return; + +- OUTREG(radeon_output->dvo_i2c.mask_clk_reg, +- INREG(radeon_output->dvo_i2c.mask_clk_reg) & +- (uint32_t)~(RADEON_GPIO_A_0 | RADEON_GPIO_A_1)); +- ++ RADEONI2CDoLock(output, TRUE); + if (!RADEONInitExtTMDSInfoFromBIOS(output)) { + if (radeon_output->DVOChip) { + switch(info->ext_tmds_chip) { +@@ -316,6 +314,7 @@ RADEONRestoreDVOChip(ScrnInfoPtr pScrn, xf86OutputPtr output) + } + } + } ++ RADEONI2CDoLock(output, FALSE); + } + + #if 0 +@@ -727,14 +726,6 @@ RADEONEnableDisplay(xf86OutputPtr output, BOOL bEnable) + save->crtc2_gen_cntl |= RADEON_CRTC2_CRT2_ON; + } + tv_dac_change = 1; +- /* IGP chips seem to use a mix of Primary and TVDAC controls */ +- if (info->IsIGP) { +- tmp = INREG(RADEON_CRTC_EXT_CNTL); +- tmp |= RADEON_CRTC_CRT_ON; +- OUTREG(RADEON_CRTC_EXT_CNTL, tmp); +- save->crtc_ext_cntl |= RADEON_CRTC_CRT_ON; +- RADEONDacPowerSet(pScrn, bEnable, TRUE); +- } + } + } else if (radeon_output->MonType == MT_DFP) { + if (radeon_output->TMDSType == TMDS_INT) { +@@ -815,14 +806,6 @@ RADEONEnableDisplay(xf86OutputPtr output, BOOL bEnable) + save->crtc2_gen_cntl &= ~RADEON_CRTC2_CRT2_ON; + } + } +- /* IGP chips seem to use a mix of Primary and TVDAC controls */ +- if (info->IsIGP) { +- tmp = INREG(RADEON_CRTC_EXT_CNTL); +- tmp &= ~RADEON_CRTC_CRT_ON; +- OUTREG(RADEON_CRTC_EXT_CNTL, tmp); +- save->crtc_ext_cntl &= ~RADEON_CRTC_CRT_ON; +- RADEONDacPowerSet(pScrn, bEnable, TRUE); +- } + } + } else if (radeon_output->MonType == MT_DFP) { + if (radeon_output->TMDSType == TMDS_INT) { +@@ -1033,9 +1016,14 @@ RADEONInitFP2Registers(xf86OutputPtr output, RADEONSavePtr save, + RADEON_FP2_DVO_RATE_SEL_SDR); + + +- /* XXX: these may be oem specific */ ++ /* XXX: these are oem specific */ + if (IS_R300_VARIANT) { +- save->fp2_gen_cntl |= RADEON_FP2_PAD_FLOP_EN | R300_FP2_DVO_CLOCK_MODE_SINGLE; ++ if ((info->Chipset == PCI_CHIP_RV350_NP) && ++ (PCI_SUB_VENDOR_ID(info->PciInfo) == 0x1028) && ++ (PCI_SUB_DEVICE_ID(info->PciInfo) == 0x2001)) ++ save->fp2_gen_cntl |= R300_FP2_DVO_CLOCK_MODE_SINGLE; /* Dell Inspiron 8600 */ ++ else ++ save->fp2_gen_cntl |= RADEON_FP2_PAD_FLOP_EN | R300_FP2_DVO_CLOCK_MODE_SINGLE; + #if 0 + if (mode->Clock > 165000) + save->fp2_gen_cntl |= R300_FP2_DVO_DUAL_CHANNEL_EN; +@@ -1383,7 +1371,6 @@ RADEONInitOutputRegisters(ScrnInfoPtr pScrn, RADEONSavePtr save, + { + Bool IsPrimary = crtc_num == 0 ? TRUE : FALSE; + RADEONOutputPrivatePtr radeon_output = output->driver_private; +- RADEONInfoPtr info = RADEONPTR(pScrn); + + if (crtc_num == 0) + RADEONInitRMXRegisters(output, save, mode); +@@ -1393,9 +1380,6 @@ RADEONInitOutputRegisters(ScrnInfoPtr pScrn, RADEONSavePtr save, + RADEONInitDACRegisters(output, save, mode, IsPrimary); + } else { + RADEONInitDAC2Registers(output, save, mode, IsPrimary); +- /* IGP chips seem to use a mix of primary and TVDAC controls */ +- if (info->IsIGP) +- RADEONInitDACRegisters(output, save, mode, IsPrimary); + } + } else if (radeon_output->MonType == MT_LCD) { + RADEONInitLVDSRegisters(output, save, mode, IsPrimary); +@@ -1456,8 +1440,8 @@ legacy_output_mode_set(xf86OutputPtr output, DisplayModePtr mode, + } + OUTREG(RADEON_FP2_GEN_CNTL, fp2_gen_cntl); + } else { +- RADEONRestoreDVOChip(pScrn, output); + RADEONRestoreFP2Registers(pScrn, info->ModeReg); ++ RADEONRestoreDVOChip(pScrn, output); + } + } + break; +diff --git a/src/pcidb/ati_pciids.csv b/src/pcidb/ati_pciids.csv +index 1f6fa82..07e71a3 100644 +--- a/src/pcidb/ati_pciids.csv ++++ b/src/pcidb/ati_pciids.csv +@@ -1,5 +1,6 @@ + "#pciid","define","family","mobility","igp","nocrtc2","Nointtvout","singledac","name" + "0x3150","RV380_3150","RV380",1,,,,,"ATI Radeon Mobility X600 (M24) 3150 (PCIE)" ++"0x3151","RV380_3151","RV380",,,,,,"ATI FireMV 2400 (PCI)" + "0x3152","RV380_3152","RV380",1,,,,,"ATI Radeon Mobility X300 (M24) 3152 (PCIE)" + "0x3154","RV380_3154","RV380",1,,,,,"ATI FireGL M24 GL 3154 (PCIE)" + "0x3E50","RV380_3E50","RV380",,,,,,"ATI Radeon X600 (RV380) 3E50 (PCIE)" +@@ -331,6 +332,9 @@ + "0x940A","R600_940A","R600",,,,,,"ATI FireGL V8650" + "0x940B","R600_940B","R600",,,,,,"ATI FireGL V8600" + "0x940F","R600_940F","R600",,,,,,"ATI FireGL V7600" ++"0x9440","RV770_9440","RV770",,,,,,"ATI Radeon 4800 Series" ++"0x9441","RV770_9441","RV770",,,,,,"ATI Radeon HD 4870 x2" ++"0x9442","RV770_9442","RV770",,,,,,"ATI Radeon 4800 Series" + "0x94C0","RV610_94C0","RV610",,,,,,"ATI RV610" + "0x94C1","RV610_94C1","RV610",,,,,,"ATI Radeon HD 2400 XT" + "0x94C3","RV610_94C3","RV610",,,,,,"ATI Radeon HD 2400 Pro" +@@ -348,6 +352,7 @@ + "0x9507","RV670_9507","RV670",,,,,,"ATI RV670" + "0x950F","RV670_950F","RV670",,,,,,"ATI Radeon HD3870 X2" + "0x9511","RV670_9511","RV670",,,,,,"ATI FireGL V7700" ++"0x9515","RV670_9515","RV670",,,,,,"ATI Radeon HD3850" + "0x9580","RV630_9580","RV630",,,,,,"ATI RV630" + "0x9581","RV630_9581","RV630",1,,,,,"ATI Mobility Radeon HD 2600" + "0x9583","RV630_9583","RV630",1,,,,,"ATI Mobility Radeon HD 2600 XT" +diff --git a/src/radeon.h b/src/radeon.h +index 4f77c3b..f7ae1a8 100644 +--- a/src/radeon.h ++++ b/src/radeon.h +@@ -72,9 +72,10 @@ + /* DRI support */ + #ifdef XF86DRI + #define _XF86DRI_SERVER_ +-#include "radeon_dripriv.h" + #include "dri.h" + #include "GL/glxint.h" ++#include "xf86drm.h" ++ + #ifdef DAMAGE + #include "damage.h" + #include "globals.h" +@@ -98,6 +99,36 @@ + #define MIN(a,b) ((a)>(b)?(b):(a)) + #endif + ++#if HAVE_BYTESWAP_H ++#include <byteswap.h> ++#elif defined(USE_SYS_ENDIAN_H) ++#include <sys/endian.h> ++#else ++#define bswap_16(value) \ ++ ((((value) & 0xff) << 8) | ((value) >> 8)) ++ ++#define bswap_32(value) \ ++ (((uint32_t)bswap_16((uint16_t)((value) & 0xffff)) << 16) | \ ++ (uint32_t)bswap_16((uint16_t)((value) >> 16))) ++ ++#define bswap_64(value) \ ++ (((uint64_t)bswap_32((uint32_t)((value) & 0xffffffff)) \ ++ << 32) | \ ++ (uint64_t)bswap_32((uint32_t)((value) >> 32))) ++#endif ++ ++#if X_BYTE_ORDER == X_BIG_ENDIAN ++#define le32_to_cpu(x) bswap_32(x) ++#define le16_to_cpu(x) bswap_16(x) ++#define cpu_to_le32(x) bswap_32(x) ++#define cpu_to_le16(x) bswap_16(x) ++#else ++#define le32_to_cpu(x) (x) ++#define le16_to_cpu(x) (x) ++#define cpu_to_le32(x) (x) ++#define cpu_to_le16(x) (x) ++#endif ++ + /* Provide substitutes for gcc's __FUNCTION__ on other compilers */ + #if !defined(__GNUC__) && !defined(__FUNCTION__) + # define __FUNCTION__ __func__ /* C99 */ +@@ -220,7 +251,12 @@ typedef struct { + #define RADEON_PLL_NO_ODD_POST_DIV (1 << 1) + #define RADEON_PLL_USE_REF_DIV (1 << 2) + #define RADEON_PLL_LEGACY (1 << 3) +-#define RADEON_PLL_PREFER_LOW_REF_DIV (1 << 4) ++#define RADEON_PLL_PREFER_LOW_REF_DIV (1 << 4) ++#define RADEON_PLL_PREFER_HIGH_REF_DIV (1 << 5) ++#define RADEON_PLL_PREFER_LOW_FB_DIV (1 << 6) ++#define RADEON_PLL_PREFER_HIGH_FB_DIV (1 << 7) ++#define RADEON_PLL_PREFER_LOW_POST_DIV (1 << 8) ++#define RADEON_PLL_PREFER_HIGH_POST_DIV (1 << 9) + + typedef struct { + uint16_t reference_freq; +@@ -287,6 +323,7 @@ typedef enum { + CHIP_FAMILY_RV620, + CHIP_FAMILY_RV635, + CHIP_FAMILY_RS780, ++ CHIP_FAMILY_RV770, + CHIP_FAMILY_LAST + } RADEONChipFamily; + +@@ -377,156 +414,45 @@ typedef struct { + int singledac; + } RADEONCardInfo; + +-typedef struct { +- EntityInfoPtr pEnt; +- pciVideoPtr PciInfo; +- PCITAG PciTag; +- int Chipset; +- RADEONChipFamily ChipFamily; +- RADEONErrata ChipErrata; +- +- unsigned long LinearAddr; /* Frame buffer physical address */ +- unsigned long MMIOAddr; /* MMIO region physical address */ +- unsigned long BIOSAddr; /* BIOS physical address */ +- uint32_t fbLocation; +- uint32_t gartLocation; +- uint32_t mc_fb_location; +- uint32_t mc_agp_location; +- uint32_t mc_agp_location_hi; +- +- void *MMIO; /* Map of MMIO region */ +- void *FB; /* Map of frame buffer */ +- uint8_t *VBIOS; /* Video BIOS pointer */ +- +- Bool IsAtomBios; /* New BIOS used in R420 etc. */ +- int ROMHeaderStart; /* Start of the ROM Info Table */ +- int MasterDataStart; /* Offset for Master Data Table for ATOM BIOS */ +- +- uint32_t MemCntl; +- uint32_t BusCntl; +- unsigned long MMIOSize; /* MMIO region physical address */ +- unsigned long FbMapSize; /* Size of frame buffer, in bytes */ +- unsigned long FbSecureSize; /* Size of secured fb area at end of +- framebuffer */ +- +- Bool IsMobility; /* Mobile chips for laptops */ +- Bool IsIGP; /* IGP chips */ +- Bool HasSingleDAC; /* only TVDAC on chip */ +- Bool ddc_mode; /* Validate mode by matching exactly +- * the modes supported in DDC data +- */ +- Bool R300CGWorkaround; +- +- /* EDID or BIOS values for FPs */ +- int RefDivider; +- int FeedbackDivider; +- int PostDivider; +- Bool UseBiosDividers; +- /* EDID data using DDC interface */ +- Bool ddc_bios; +- Bool ddc1; +- Bool ddc2; +- +- RADEONPLLRec pll; +- +- int RamWidth; +- float sclk; /* in MHz */ +- float mclk; /* in MHz */ +- Bool IsDDR; +- int DispPriority; +- +- RADEONSavePtr SavedReg; /* Original (text) mode */ +- RADEONSavePtr ModeReg; /* Current mode */ +- Bool (*CloseScreen)(int, ScreenPtr); +- +- void (*BlockHandler)(int, pointer, pointer, pointer); +- +- Bool PaletteSavedOnVT; /* Palette saved on last VT switch */ +- +-#ifdef USE_EXA +- ExaDriverPtr exa; +- int exaSyncMarker; +- int exaMarkerSynced; +- int engineMode; +-#define EXA_ENGINEMODE_UNKNOWN 0 +-#define EXA_ENGINEMODE_2D 1 +-#define EXA_ENGINEMODE_3D 2 + #ifdef XF86DRI +- Bool accelDFS; +-#endif +-#endif +-#ifdef USE_XAA +- XAAInfoRecPtr accel; +-#endif +- Bool accelOn; +- xf86CursorInfoPtr cursor; +- Bool allowColorTiling; +- Bool tilingEnabled; /* mirror of sarea->tiling_enabled */ +-#ifdef ARGB_CURSOR +- Bool cursor_argb; +-#endif +- int cursor_fg; +- int cursor_bg; ++struct radeon_cp { ++ Bool CPRuns; /* CP is running */ ++ Bool CPInUse; /* CP has been used by X server */ ++ Bool CPStarted; /* CP has started */ ++ int CPMode; /* CP mode that server/clients use */ ++ int CPFifoSize; /* Size of the CP command FIFO */ ++ int CPusecTimeout; /* CP timeout in usecs */ ++ Bool needCacheFlush; + +-#ifdef USE_XAA +- /* +- * XAAForceTransBlit is used to change the behavior of the XAA +- * SetupForScreenToScreenCopy function, to make it DGA-friendly. +- */ +- Bool XAAForceTransBlit; +-#endif ++ /* CP accleration */ ++ drmBufPtr indirectBuffer; ++ int indirectStart; + +- int fifo_slots; /* Free slots in the FIFO (64 max) */ +- int pix24bpp; /* Depth of pixmap for 24bpp fb */ +- Bool dac6bits; /* Use 6 bit DAC? */ ++ /* Debugging info for BEGIN_RING/ADVANCE_RING pairs. */ ++ int dma_begin_count; ++ char *dma_debug_func; ++ int dma_debug_lineno; + +- /* Computed values for Radeon */ +- int pitch; +- int datatype; +- uint32_t dp_gui_master_cntl; +- uint32_t dp_gui_master_cntl_clip; +- uint32_t trans_color; ++ }; + +- /* Saved values for ScreenToScreenCopy */ +- int xdir; +- int ydir; ++typedef struct { ++ /* Nothing here yet */ ++ int dummy; ++} RADEONConfigPrivRec, *RADEONConfigPrivPtr; + +-#ifdef USE_XAA +- /* ScanlineScreenToScreenColorExpand support */ +- unsigned char *scratch_buffer[1]; +- unsigned char *scratch_save; +- int scanline_x; +- int scanline_y; +- int scanline_w; +- int scanline_h; +- int scanline_h_w; +- int scanline_words; +- int scanline_direct; +- int scanline_bpp; /* Only used for ImageWrite */ +- int scanline_fg; +- int scanline_bg; +- int scanline_hpass; +- int scanline_x1clip; +- int scanline_x2clip; ++typedef struct { ++#ifdef PER_CONTEXT_SAREA ++ drm_context_t ctx_id; ++ drm_handle_t sarea_handle; ++#else ++ /* Nothing here yet */ ++ int dummy; + #endif +- /* Saved values for DashedTwoPointLine */ +- int dashLen; +- uint32_t dashPattern; +- int dash_fg; +- int dash_bg; ++} RADEONDRIContextRec, *RADEONDRIContextPtr; + +- DGAModePtr DGAModes; +- int numDGAModes; +- Bool DGAactive; +- int DGAViewportStatus; +- DGAFunctionRec DGAFuncs; ++struct radeon_dri { ++ Bool noBackBuffer; + +- RADEONFBLayout CurrentLayout; +- uint32_t dst_pitch_offset; +-#ifdef XF86DRI +- Bool noBackBuffer; +- Bool directRenderingEnabled; +- Bool directRenderingInited; + Bool newMemoryMap; + drmVersionPtr pLibDRMVersion; + drmVersionPtr pKernelDRMVersion; +@@ -542,7 +468,6 @@ typedef struct { + drmSize registerSize; + drm_handle_t registerHandle; + +- RADEONCardType cardType; /* Current card is a PCI card */ + drmSize pciSize; + drm_handle_t pciMemHandle; + unsigned char *PCI; /* Map */ +@@ -564,15 +489,7 @@ typedef struct { + + uint32_t pciCommand; + +- Bool CPRuns; /* CP is running */ +- Bool CPInUse; /* CP has been used by X server */ +- Bool CPStarted; /* CP has started */ +- int CPMode; /* CP mode that server/clients use */ +- int CPFifoSize; /* Size of the CP command FIFO */ +- int CPusecTimeout; /* CP timeout in usecs */ +- Bool needCacheFlush; +- +- /* CP ring buffer data */ ++ /* CP ring buffer data */ + unsigned long ringStart; /* Offset into GART space */ + drm_handle_t ringHandle; /* Handle from drmAddMap */ + drmSize ringMapSize; /* Size of map */ +@@ -585,7 +502,7 @@ typedef struct { + drmSize ringReadMapSize; /* Size of map */ + drmAddress ringReadPtr; /* Map */ + +- /* CP vertex/indirect buffer data */ ++ /* CP vertex/indirect buffer data */ + unsigned long bufStart; /* Offset into GART space */ + drm_handle_t bufHandle; /* Handle from drmAddMap */ + drmSize bufMapSize; /* Size of map */ +@@ -594,7 +511,7 @@ typedef struct { + int bufNumBufs; /* Number of buffers */ + drmBufMapPtr buffers; /* Buffer map */ + +- /* CP GART Texture data */ ++ /* CP GART Texture data */ + unsigned long gartTexStart; /* Offset into GART space */ + drm_handle_t gartTexHandle; /* Handle from drmAddMap */ + drmSize gartTexMapSize; /* Size of map */ +@@ -602,11 +519,7 @@ typedef struct { + drmAddress gartTex; /* Map */ + int log2GARTTexGran; + +- /* CP accleration */ +- drmBufPtr indirectBuffer; +- int indirectStart; +- +- /* DRI screen private data */ ++ /* DRI screen private data */ + int fbX; + int fbY; + int backX; +@@ -628,43 +541,215 @@ typedef struct { + int pciGartSize; + uint32_t pciGartOffset; + void *pciGartBackup; ++ ++ int irq; ++ ++#ifdef PER_CONTEXT_SAREA ++ int perctx_sarea_size; ++#endif ++ + #ifdef USE_XAA + uint32_t frontPitchOffset; + uint32_t backPitchOffset; + uint32_t depthPitchOffset; + +- /* offscreen memory management */ ++ /* offscreen memory management */ + int backLines; + FBAreaPtr backArea; + int depthTexLines; + FBAreaPtr depthTexArea; + #endif + +- /* Saved scissor values */ +- uint32_t sc_left; +- uint32_t sc_right; +- uint32_t sc_top; +- uint32_t sc_bottom; ++}; ++#endif ++ ++struct radeon_accel_state { ++ /* common accel data */ ++ int fifo_slots; /* Free slots in the FIFO (64 max) */ ++ /* Computed values for Radeon */ ++ uint32_t dp_gui_master_cntl; ++ uint32_t dp_gui_master_cntl_clip; ++ uint32_t trans_color; ++ /* Saved values for ScreenToScreenCopy */ ++ int xdir; ++ int ydir; ++ uint32_t dst_pitch_offset; ++ ++ /* render accel */ ++ unsigned short texW[2]; ++ unsigned short texH[2]; ++ Bool XInited3D; /* X itself has the 3D context */ ++ int num_gb_pipes; ++ Bool has_tcl; ++ ++#ifdef USE_EXA ++ /* EXA */ ++ ExaDriverPtr exa; ++ int exaSyncMarker; ++ int exaMarkerSynced; ++ int engineMode; ++#define EXA_ENGINEMODE_UNKNOWN 0 ++#define EXA_ENGINEMODE_2D 1 ++#define EXA_ENGINEMODE_3D 2 ++ ++ Bool is_transform[2]; ++ PictTransform *transform[2]; ++ Bool has_mask; ++ /* Whether we are tiling horizontally and vertically */ ++ Bool need_src_tile_x; ++ Bool need_src_tile_y; ++ /* Size of tiles ... set to 65536x65536 if not tiling in that direction */ ++ Bool src_tile_width; ++ Bool src_tile_height; ++#endif ++ ++#ifdef USE_XAA ++ /* XAA */ ++ XAAInfoRecPtr accel; ++ /* ScanlineScreenToScreenColorExpand support */ ++ unsigned char *scratch_buffer[1]; ++ unsigned char *scratch_save; ++ int scanline_x; ++ int scanline_y; ++ int scanline_w; ++ int scanline_h; ++ int scanline_h_w; ++ int scanline_words; ++ int scanline_direct; ++ int scanline_bpp; /* Only used for ImageWrite */ ++ int scanline_fg; ++ int scanline_bg; ++ int scanline_hpass; ++ int scanline_x1clip; ++ int scanline_x2clip; ++ /* Saved values for DashedTwoPointLine */ ++ int dashLen; ++ uint32_t dashPattern; ++ int dash_fg; ++ int dash_bg; ++ ++ FBLinearPtr RenderTex; ++ void (*RenderCallback)(ScrnInfoPtr); ++ Time RenderTimeout; ++ /* ++ * XAAForceTransBlit is used to change the behavior of the XAA ++ * SetupForScreenToScreenCopy function, to make it DGA-friendly. ++ */ ++ Bool XAAForceTransBlit; ++#endif ++ ++}; + +- uint32_t re_top_left; +- uint32_t re_width_height; ++typedef struct { ++ EntityInfoPtr pEnt; ++ pciVideoPtr PciInfo; ++ PCITAG PciTag; ++ int Chipset; ++ RADEONChipFamily ChipFamily; ++ RADEONErrata ChipErrata; ++ ++ unsigned long LinearAddr; /* Frame buffer physical address */ ++ unsigned long MMIOAddr; /* MMIO region physical address */ ++ unsigned long BIOSAddr; /* BIOS physical address */ ++ uint32_t fbLocation; ++ uint32_t gartLocation; ++ uint32_t mc_fb_location; ++ uint32_t mc_agp_location; ++ uint32_t mc_agp_location_hi; + +- uint32_t aux_sc_cntl; ++ void *MMIO; /* Map of MMIO region */ ++ void *FB; /* Map of frame buffer */ ++ uint8_t *VBIOS; /* Video BIOS pointer */ + +- int irq; ++ Bool IsAtomBios; /* New BIOS used in R420 etc. */ ++ int ROMHeaderStart; /* Start of the ROM Info Table */ ++ int MasterDataStart; /* Offset for Master Data Table for ATOM BIOS */ + +- Bool DMAForXv; ++ uint32_t MemCntl; ++ uint32_t BusCntl; ++ unsigned long MMIOSize; /* MMIO region physical address */ ++ unsigned long FbMapSize; /* Size of frame buffer, in bytes */ ++ unsigned long FbSecureSize; /* Size of secured fb area at end of ++ framebuffer */ + +-#ifdef PER_CONTEXT_SAREA +- int perctx_sarea_size; ++ Bool IsMobility; /* Mobile chips for laptops */ ++ Bool IsIGP; /* IGP chips */ ++ Bool HasSingleDAC; /* only TVDAC on chip */ ++ Bool ddc_mode; /* Validate mode by matching exactly ++ * the modes supported in DDC data ++ */ ++ Bool R300CGWorkaround; ++ ++ /* EDID or BIOS values for FPs */ ++ int RefDivider; ++ int FeedbackDivider; ++ int PostDivider; ++ Bool UseBiosDividers; ++ /* EDID data using DDC interface */ ++ Bool ddc_bios; ++ Bool ddc1; ++ Bool ddc2; ++ ++ RADEONPLLRec pll; ++ ++ int RamWidth; ++ float sclk; /* in MHz */ ++ float mclk; /* in MHz */ ++ Bool IsDDR; ++ int DispPriority; ++ ++ RADEONSavePtr SavedReg; /* Original (text) mode */ ++ RADEONSavePtr ModeReg; /* Current mode */ ++ Bool (*CloseScreen)(int, ScreenPtr); ++ ++ void (*BlockHandler)(int, pointer, pointer, pointer); ++ ++ Bool PaletteSavedOnVT; /* Palette saved on last VT switch */ ++ ++ xf86CursorInfoPtr cursor; ++#ifdef ARGB_CURSOR ++ Bool cursor_argb; + #endif ++ int cursor_fg; ++ int cursor_bg; + +- /* Debugging info for BEGIN_RING/ADVANCE_RING pairs. */ +- int dma_begin_count; +- char *dma_debug_func; +- int dma_debug_lineno; ++ int pix24bpp; /* Depth of pixmap for 24bpp fb */ ++ Bool dac6bits; /* Use 6 bit DAC? */ ++ ++ DGAModePtr DGAModes; ++ int numDGAModes; ++ Bool DGAactive; ++ int DGAViewportStatus; ++ DGAFunctionRec DGAFuncs; ++ ++ RADEONFBLayout CurrentLayout; ++ ++#ifdef XF86DRI ++ Bool directRenderingEnabled; ++ Bool directRenderingInited; ++ RADEONCardType cardType; /* Current card is a PCI card */ ++ struct radeon_cp *cp; ++ struct radeon_dri *dri; ++#ifdef USE_EXA ++ Bool accelDFS; ++#endif ++ Bool DMAForXv; + #endif /* XF86DRI */ + ++ /* accel */ ++ Bool RenderAccel; /* Render */ ++ Bool allowColorTiling; ++ Bool tilingEnabled; /* mirror of sarea->tiling_enabled */ ++ struct radeon_accel_state *accel_state; ++ Bool accelOn; ++ Bool useEXA; ++#ifdef USE_EXA ++ XF86ModReqInfo exaReq; ++#endif ++#ifdef USE_XAA ++ XF86ModReqInfo xaaReq; ++#endif ++ + /* XVideo */ + XF86VideoAdaptorPtr adaptor; + void (*VideoTimerCallback)(ScrnInfoPtr, Time); +@@ -693,31 +778,10 @@ typedef struct { + int overlay_scaler_buffer_width; + int ecp_div; + +- /* Render */ +- Bool RenderAccel; +- unsigned short texW[2]; +- unsigned short texH[2]; +-#ifdef USE_XAA +- FBLinearPtr RenderTex; +- void (*RenderCallback)(ScrnInfoPtr); +- Time RenderTimeout; +-#endif +- + /* general */ + Bool showCache; + OptionInfoPtr Options; + +- Bool useEXA; +-#ifdef USE_EXA +- XF86ModReqInfo exaReq; +-#endif +-#ifdef USE_XAA +- XF86ModReqInfo xaaReq; +-#endif +- +- /* X itself has the 3D context */ +- Bool XInited3D; +- + DisplayModePtr currentMode, savedCurrentMode; + + /* special handlings for DELL triple-head server */ +@@ -772,22 +836,19 @@ typedef struct { + Bool r600_shadow_fb; + void *fb_shadow; + +- int num_gb_pipes; +- Bool has_tcl; + } RADEONInfoRec, *RADEONInfoPtr; + + #define RADEONWaitForFifo(pScrn, entries) \ + do { \ +- if (info->fifo_slots < entries) \ ++ if (info->accel_state->fifo_slots < entries) \ + RADEONWaitForFifoFunction(pScrn, entries); \ +- info->fifo_slots -= entries; \ ++ info->accel_state->fifo_slots -= entries; \ + } while (0) + + /* legacy_crtc.c */ + extern void legacy_crtc_dpms(xf86CrtcPtr crtc, int mode); + extern void legacy_crtc_mode_set(xf86CrtcPtr crtc, DisplayModePtr mode, + DisplayModePtr adjusted_mode, int x, int y); +-extern void RADEONInitDispBandwidth(ScrnInfoPtr pScrn); + extern void RADEONRestoreCommonRegisters(ScrnInfoPtr pScrn, + RADEONSavePtr restore); + extern void RADEONRestoreCrtcRegisters(ScrnInfoPtr pScrn, +@@ -872,6 +933,7 @@ extern Bool RADEONGetTMDSInfoFromBIOS(xf86OutputPtr output); + extern Bool RADEONGetTVInfoFromBIOS(xf86OutputPtr output); + extern Bool RADEONInitExtTMDSInfoFromBIOS (xf86OutputPtr output); + extern Bool RADEONPostCardFromBIOSTables(ScrnInfoPtr pScrn); ++extern Bool radeon_card_posted(ScrnInfoPtr pScrn); + + /* radeon_commonfuncs.c */ + #ifdef XF86DRI +@@ -894,6 +956,7 @@ extern DisplayModePtr RADEONCrtcFindClosestMode(xf86CrtcPtr crtc, + DisplayModePtr pMode); + extern void RADEONUnblank(ScrnInfoPtr pScrn); + extern Bool RADEONSetTiling(ScrnInfoPtr pScrn); ++extern void RADEONInitDispBandwidth(ScrnInfoPtr pScrn); + + /* radeon_cursor.c */ + extern Bool RADEONCursorInit(ScreenPtr pScreen); +@@ -983,6 +1046,8 @@ extern void RADEONPrintPortMap(ScrnInfoPtr pScrn); + extern void RADEONSetOutputType(ScrnInfoPtr pScrn, + RADEONOutputPrivatePtr radeon_output); + extern Bool RADEONSetupConnectors(ScrnInfoPtr pScrn); ++extern Bool RADEONI2CDoLock(xf86OutputPtr output, Bool lock_state); ++ + + /* radeon_tv.c */ + extern void RADEONSaveTVRegisters(ScrnInfoPtr pScrn, RADEONSavePtr save); +@@ -1003,6 +1068,16 @@ extern void RADEONUpdateHVPosition(xf86OutputPtr output, DisplayModePtr mode); + extern void RADEONInitVideo(ScreenPtr pScreen); + extern void RADEONResetVideo(ScrnInfoPtr pScrn); + ++/* radeon_legacy_memory.c */ ++extern uint32_t ++radeon_legacy_allocate_memory(ScrnInfoPtr pScrn, ++ void **mem_struct, ++ int size, ++ int align); ++extern void ++radeon_legacy_free_memory(ScrnInfoPtr pScrn, ++ void *mem_struct); ++ + #ifdef XF86DRI + # ifdef USE_XAA + /* radeon_accelfuncs.c */ +@@ -1011,72 +1086,58 @@ extern void RADEONAccelInitCP(ScreenPtr pScreen, XAAInfoRecPtr a); + + #define RADEONCP_START(pScrn, info) \ + do { \ +- int _ret = drmCommandNone(info->drmFD, DRM_RADEON_CP_START); \ ++ int _ret = drmCommandNone(info->dri->drmFD, DRM_RADEON_CP_START); \ + if (_ret) { \ + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, \ + "%s: CP start %d\n", __FUNCTION__, _ret); \ + } \ +- info->CPStarted = TRUE; \ ++ info->cp->CPStarted = TRUE; \ + } while (0) + + #define RADEONCP_RELEASE(pScrn, info) \ + do { \ +- if (info->CPInUse) { \ ++ if (info->cp->CPInUse) { \ + RADEON_PURGE_CACHE(); \ + RADEON_WAIT_UNTIL_IDLE(); \ + RADEONCPReleaseIndirect(pScrn); \ +- info->CPInUse = FALSE; \ ++ info->cp->CPInUse = FALSE; \ + } \ + } while (0) + + #define RADEONCP_STOP(pScrn, info) \ + do { \ + int _ret; \ +- if (info->CPStarted) { \ ++ if (info->cp->CPStarted) { \ + _ret = RADEONCPStop(pScrn, info); \ + if (_ret) { \ + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, \ + "%s: CP stop %d\n", __FUNCTION__, _ret); \ + } \ +- info->CPStarted = FALSE; \ ++ info->cp->CPStarted = FALSE; \ + } \ + RADEONEngineRestore(pScrn); \ +- info->CPRuns = FALSE; \ ++ info->cp->CPRuns = FALSE; \ + } while (0) + + #define RADEONCP_RESET(pScrn, info) \ + do { \ +- if (RADEONCP_USE_RING_BUFFER(info->CPMode)) { \ +- int _ret = drmCommandNone(info->drmFD, DRM_RADEON_CP_RESET); \ ++ int _ret = drmCommandNone(info->dri->drmFD, DRM_RADEON_CP_RESET); \ + if (_ret) { \ + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, \ + "%s: CP reset %d\n", __FUNCTION__, _ret); \ + } \ +- } \ + } while (0) + + #define RADEONCP_REFRESH(pScrn, info) \ + do { \ +- if (!info->CPInUse) { \ +- if (info->needCacheFlush) { \ ++ if (!info->cp->CPInUse) { \ ++ if (info->cp->needCacheFlush) { \ + RADEON_PURGE_CACHE(); \ + RADEON_PURGE_ZCACHE(); \ +- info->needCacheFlush = FALSE; \ ++ info->cp->needCacheFlush = FALSE; \ + } \ + RADEON_WAIT_UNTIL_IDLE(); \ +- if (info->ChipFamily <= CHIP_FAMILY_RV280) { \ +- BEGIN_RING(6); \ +- OUT_RING_REG(RADEON_RE_TOP_LEFT, info->re_top_left); \ +- OUT_RING_REG(RADEON_RE_WIDTH_HEIGHT, info->re_width_height); \ +- OUT_RING_REG(RADEON_AUX_SC_CNTL, info->aux_sc_cntl); \ +- ADVANCE_RING(); \ +- } else { \ +- BEGIN_RING(4); \ +- OUT_RING_REG(R300_SC_SCISSOR0, info->re_top_left); \ +- OUT_RING_REG(R300_SC_SCISSOR1, info->re_width_height); \ +- ADVANCE_RING(); \ +- } \ +- info->CPInUse = TRUE; \ ++ info->cp->CPInUse = TRUE; \ + } \ + } while (0) + +@@ -1100,33 +1161,33 @@ do { \ + xf86DrvMsg(pScrn->scrnIndex, X_INFO, \ + "BEGIN_RING(%d) in %s\n", (unsigned int)n, __FUNCTION__);\ + } \ +- if (++info->dma_begin_count != 1) { \ ++ if (++info->cp->dma_begin_count != 1) { \ + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, \ + "BEGIN_RING without end at %s:%d\n", \ +- info->dma_debug_func, info->dma_debug_lineno); \ +- info->dma_begin_count = 1; \ ++ info->cp->dma_debug_func, info->cp->dma_debug_lineno); \ ++ info->cp->dma_begin_count = 1; \ + } \ +- info->dma_debug_func = __FILE__; \ +- info->dma_debug_lineno = __LINE__; \ +- if (!info->indirectBuffer) { \ +- info->indirectBuffer = RADEONCPGetBuffer(pScrn); \ +- info->indirectStart = 0; \ +- } else if (info->indirectBuffer->used + (n) * (int)sizeof(uint32_t) > \ +- info->indirectBuffer->total) { \ ++ info->cp->dma_debug_func = __FILE__; \ ++ info->cp->dma_debug_lineno = __LINE__; \ ++ if (!info->cp->indirectBuffer) { \ ++ info->cp->indirectBuffer = RADEONCPGetBuffer(pScrn); \ ++ info->cp->indirectStart = 0; \ ++ } else if (info->cp->indirectBuffer->used + (n) * (int)sizeof(uint32_t) > \ ++ info->cp->indirectBuffer->total) { \ + RADEONCPFlushIndirect(pScrn, 1); \ + } \ + __expected = n; \ +- __head = (pointer)((char *)info->indirectBuffer->address + \ +- info->indirectBuffer->used); \ ++ __head = (pointer)((char *)info->cp->indirectBuffer->address + \ ++ info->cp->indirectBuffer->used); \ + __count = 0; \ + } while (0) + + #define ADVANCE_RING() do { \ +- if (info->dma_begin_count-- != 1) { \ ++ if (info->cp->dma_begin_count-- != 1) { \ + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, \ + "ADVANCE_RING without begin at %s:%d\n", \ + __FILE__, __LINE__); \ +- info->dma_begin_count = 0; \ ++ info->cp->dma_begin_count = 0; \ + } \ + if (__count != __expected) { \ + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, \ +@@ -1136,11 +1197,11 @@ do { \ + if (RADEON_VERBOSE) { \ + xf86DrvMsg(pScrn->scrnIndex, X_INFO, \ + "ADVANCE_RING() start: %d used: %d count: %d\n", \ +- info->indirectStart, \ +- info->indirectBuffer->used, \ ++ info->cp->indirectStart, \ ++ info->cp->indirectBuffer->used, \ + __count * (int)sizeof(uint32_t)); \ + } \ +- info->indirectBuffer->used += __count * (int)sizeof(uint32_t); \ ++ info->cp->indirectBuffer->used += __count * (int)sizeof(uint32_t); \ + } while (0) + + #define OUT_RING(x) do { \ +@@ -1162,7 +1223,7 @@ do { \ + if (RADEON_VERBOSE) \ + xf86DrvMsg(pScrn->scrnIndex, X_INFO, \ + "FLUSH_RING in %s\n", __FUNCTION__); \ +- if (info->indirectBuffer) { \ ++ if (info->cp->indirectBuffer) { \ + RADEONCPFlushIndirect(pScrn, 0); \ + } \ + } while (0) +@@ -1236,19 +1297,19 @@ static __inline__ void RADEON_MARK_SYNC(RADEONInfoPtr info, ScrnInfoPtr pScrn) + #endif + #ifdef USE_XAA + if (!info->useEXA) +- SET_SYNC_FLAG(info->accel); ++ SET_SYNC_FLAG(info->accel_state->accel); + #endif + } + + static __inline__ void RADEON_SYNC(RADEONInfoPtr info, ScrnInfoPtr pScrn) + { + #ifdef USE_EXA +- if (info->useEXA) ++ if (info->useEXA && pScrn->pScreen) + exaWaitSync(pScrn->pScreen); + #endif + #ifdef USE_XAA +- if (!info->useEXA && info->accel) +- info->accel->Sync(pScrn); ++ if (!info->useEXA && info->accel_state->accel) ++ info->accel_state->accel->Sync(pScrn); + #endif + } + +diff --git a/src/radeon_accel.c b/src/radeon_accel.c +index 65ad33d..a6e332d 100644 +--- a/src/radeon_accel.c ++++ b/src/radeon_accel.c +@@ -83,9 +83,7 @@ + #include "radeon_version.h" + #ifdef XF86DRI + #define _XF86DRI_SERVER_ +-#include "radeon_dri.h" +-#include "radeon_common.h" +-#include "radeon_sarea.h" ++#include "radeon_drm.h" + #endif + + /* Line support */ +@@ -130,9 +128,9 @@ void RADEONWaitForFifoFunction(ScrnInfoPtr pScrn, int entries) + + for (;;) { + for (i = 0; i < RADEON_TIMEOUT; i++) { +- info->fifo_slots = ++ info->accel_state->fifo_slots = + INREG(RADEON_RBBM_STATUS) & RADEON_RBBM_FIFOCNT_MASK; +- if (info->fifo_slots >= entries) return; ++ if (info->accel_state->fifo_slots >= entries) return; + } + xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, RADEON_LOGLEVEL_DEBUG, + "FIFO timed out: %u entries, stat=0x%08x\n", +@@ -324,8 +322,8 @@ void RADEONEngineRestore(ScrnInfoPtr pScrn) + * in the wrong place (happened). + */ + RADEONWaitForFifo(pScrn, 2); +- OUTREG(RADEON_DST_PITCH_OFFSET, info->dst_pitch_offset); +- OUTREG(RADEON_SRC_PITCH_OFFSET, info->dst_pitch_offset); ++ OUTREG(RADEON_DST_PITCH_OFFSET, info->accel_state->dst_pitch_offset); ++ OUTREG(RADEON_SRC_PITCH_OFFSET, info->accel_state->dst_pitch_offset); + + RADEONWaitForFifo(pScrn, 1); + #if X_BYTE_ORDER == X_BIG_ENDIAN +@@ -343,7 +341,7 @@ void RADEONEngineRestore(ScrnInfoPtr pScrn) + OUTREG(RADEON_DEFAULT_SC_BOTTOM_RIGHT, (RADEON_DEFAULT_SC_RIGHT_MAX + | RADEON_DEFAULT_SC_BOTTOM_MAX)); + RADEONWaitForFifo(pScrn, 1); +- OUTREG(RADEON_DP_GUI_MASTER_CNTL, (info->dp_gui_master_cntl ++ OUTREG(RADEON_DP_GUI_MASTER_CNTL, (info->accel_state->dp_gui_master_cntl + | RADEON_GMC_BRUSH_SOLID_COLOR + | RADEON_GMC_SRC_DATATYPE_COLOR)); + +@@ -356,7 +354,7 @@ void RADEONEngineRestore(ScrnInfoPtr pScrn) + + RADEONWaitForIdleMMIO(pScrn); + +- info->XInited3D = FALSE; ++ info->accel_state->XInited3D = FALSE; + } + + /* Initialize the acceleration hardware */ +@@ -364,6 +362,7 @@ void RADEONEngineInit(ScrnInfoPtr pScrn) + { + RADEONInfoPtr info = RADEONPTR(pScrn); + unsigned char *RADEONMMIO = info->MMIO; ++ int datatype = 0; + + xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, RADEON_LOGLEVEL_DEBUG, + "EngineInit (%d/%d)\n", +@@ -372,21 +371,21 @@ void RADEONEngineInit(ScrnInfoPtr pScrn) + + #ifdef XF86DRI + if (info->directRenderingEnabled && (IS_R300_3D || IS_R500_3D)) { +- drmRadeonGetParam np; ++ drm_radeon_getparam_t np; + int num_pipes; + + memset(&np, 0, sizeof(np)); + np.param = RADEON_PARAM_NUM_GB_PIPES; + np.value = &num_pipes; + +- if (drmCommandWriteRead(info->drmFD, DRM_RADEON_GETPARAM, &np, ++ if (drmCommandWriteRead(info->dri->drmFD, DRM_RADEON_GETPARAM, &np, + sizeof(np)) < 0) { + xf86DrvMsg(pScrn->scrnIndex, X_WARNING, + "Failed to determine num pipes from DRM, falling back to " + "manual look-up!\n"); +- info->num_gb_pipes = 0; ++ info->accel_state->num_gb_pipes = 0; + } else { +- info->num_gb_pipes = num_pipes; ++ info->accel_state->num_gb_pipes = num_pipes; + } + } + #endif +@@ -399,34 +398,34 @@ void RADEONEngineInit(ScrnInfoPtr pScrn) + (info->ChipFamily == CHIP_FAMILY_RS400) || + (info->ChipFamily == CHIP_FAMILY_RS480) || + IS_R500_3D) { +- if (info->num_gb_pipes == 0) { ++ if (info->accel_state->num_gb_pipes == 0) { + uint32_t gb_pipe_sel = INREG(R400_GB_PIPE_SELECT); + +- info->num_gb_pipes = ((gb_pipe_sel >> 12) & 0x3) + 1; ++ info->accel_state->num_gb_pipes = ((gb_pipe_sel >> 12) & 0x3) + 1; + if (IS_R500_3D) + OUTPLL(pScrn, R500_DYN_SCLK_PWMEM_PIPE, (1 | ((gb_pipe_sel >> 8) & 0xf) << 4)); + } + } else { +- if (info->num_gb_pipes == 0) { ++ if (info->accel_state->num_gb_pipes == 0) { + if ((info->ChipFamily == CHIP_FAMILY_R300) || + (info->ChipFamily == CHIP_FAMILY_R350)) { + /* R3xx chips */ +- info->num_gb_pipes = 2; ++ info->accel_state->num_gb_pipes = 2; + } else { + /* RV3xx chips */ +- info->num_gb_pipes = 1; ++ info->accel_state->num_gb_pipes = 1; + } + } + } + + if (IS_R300_3D || IS_R500_3D) + xf86DrvMsg(pScrn->scrnIndex, X_INFO, +- "num pipes is %d\n", info->num_gb_pipes); ++ "num quad-pipes is %d\n", info->accel_state->num_gb_pipes); + + if (IS_R300_3D || IS_R500_3D) { + uint32_t gb_tile_config = (R300_ENABLE_TILING | R300_TILE_SIZE_16 | R300_SUBPIXEL_1_16); + +- switch(info->num_gb_pipes) { ++ switch(info->accel_state->num_gb_pipes) { + case 2: gb_tile_config |= R300_PIPE_COUNT_R300; break; + case 3: gb_tile_config |= R300_PIPE_COUNT_R420_3P; break; + case 4: gb_tile_config |= R300_PIPE_COUNT_R420; break; +@@ -446,11 +445,11 @@ void RADEONEngineInit(ScrnInfoPtr pScrn) + RADEONEngineReset(pScrn); + + switch (info->CurrentLayout.pixel_code) { +- case 8: info->datatype = 2; break; +- case 15: info->datatype = 3; break; +- case 16: info->datatype = 4; break; +- case 24: info->datatype = 5; break; +- case 32: info->datatype = 6; break; ++ case 8: datatype = 2; break; ++ case 15: datatype = 3; break; ++ case 16: datatype = 4; break; ++ case 24: datatype = 5; break; ++ case 32: datatype = 6; break; + default: + xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, RADEON_LOGLEVEL_DEBUG, + "Unknown depth/bpp = %d/%d (code = %d)\n", +@@ -458,34 +457,12 @@ void RADEONEngineInit(ScrnInfoPtr pScrn) + info->CurrentLayout.bitsPerPixel, + info->CurrentLayout.pixel_code); + } +- info->pitch = ((info->CurrentLayout.displayWidth / 8) * +- (info->CurrentLayout.pixel_bytes == 3 ? 3 : 1)); + +- xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, RADEON_LOGLEVEL_DEBUG, +- "Pitch for acceleration = %d\n", info->pitch); +- +- info->dp_gui_master_cntl = +- ((info->datatype << RADEON_GMC_DST_DATATYPE_SHIFT) ++ info->accel_state->dp_gui_master_cntl = ++ ((datatype << RADEON_GMC_DST_DATATYPE_SHIFT) + | RADEON_GMC_CLR_CMP_CNTL_DIS + | RADEON_GMC_DST_PITCH_OFFSET_CNTL); + +-#ifdef XF86DRI +- info->sc_left = 0x00000000; +- info->sc_right = RADEON_DEFAULT_SC_RIGHT_MAX; +- info->sc_top = 0x00000000; +- info->sc_bottom = RADEON_DEFAULT_SC_BOTTOM_MAX; +- +- info->re_top_left = 0x00000000; +- if (info->ChipFamily <= CHIP_FAMILY_RV280) +- info->re_width_height = ((0x7ff << RADEON_RE_WIDTH_SHIFT) | +- (0x7ff << RADEON_RE_HEIGHT_SHIFT)); +- else +- info->re_width_height = ((8191 << R300_SCISSOR_X_SHIFT) | +- (8191 << R300_SCISSOR_Y_SHIFT)); +- +- info->aux_sc_cntl = 0x00000000; +-#endif +- + RADEONEngineRestore(pScrn); + } + +@@ -534,14 +511,14 @@ void RADEONEngineInit(ScrnInfoPtr pScrn) + /* Stop the CP */ + int RADEONCPStop(ScrnInfoPtr pScrn, RADEONInfoPtr info) + { +- drmRadeonCPStop stop; ++ drm_radeon_cp_stop_t stop; + int ret, i; + + stop.flush = 1; + stop.idle = 1; + +- ret = drmCommandWrite(info->drmFD, DRM_RADEON_CP_STOP, &stop, +- sizeof(drmRadeonCPStop)); ++ ret = drmCommandWrite(info->dri->drmFD, DRM_RADEON_CP_STOP, &stop, ++ sizeof(drm_radeon_cp_stop_t)); + + if (ret == 0) { + return 0; +@@ -553,8 +530,8 @@ int RADEONCPStop(ScrnInfoPtr pScrn, RADEONInfoPtr info) + + i = 0; + do { +- ret = drmCommandWrite(info->drmFD, DRM_RADEON_CP_STOP, &stop, +- sizeof(drmRadeonCPStop)); ++ ret = drmCommandWrite(info->dri->drmFD, DRM_RADEON_CP_STOP, &stop, ++ sizeof(drm_radeon_cp_stop_t)); + } while (ret && errno == EBUSY && i++ < RADEON_IDLE_RETRY); + + if (ret == 0) { +@@ -565,8 +542,8 @@ int RADEONCPStop(ScrnInfoPtr pScrn, RADEONInfoPtr info) + + stop.idle = 0; + +- if (drmCommandWrite(info->drmFD, DRM_RADEON_CP_STOP, +- &stop, sizeof(drmRadeonCPStop))) { ++ if (drmCommandWrite(info->dri->drmFD, DRM_RADEON_CP_STOP, ++ &stop, sizeof(drm_radeon_cp_stop_t))) { + return -errno; + } else { + return 0; +@@ -608,7 +585,7 @@ drmBufPtr RADEONCPGetBuffer(ScrnInfoPtr pScrn) + + while (1) { + do { +- ret = drmDMA(info->drmFD, &dma); ++ ret = drmDMA(info->dri->drmFD, &dma); + if (ret && ret != -EBUSY) { + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "%s: CP GetBuffer %d\n", __FUNCTION__, ret); +@@ -616,7 +593,7 @@ drmBufPtr RADEONCPGetBuffer(ScrnInfoPtr pScrn) + } while ((ret == -EBUSY) && (i++ < RADEON_TIMEOUT)); + + if (ret == 0) { +- buf = &info->buffers->list[indx]; ++ buf = &info->dri->buffers->list[indx]; + buf->used = 0; + if (RADEON_VERBOSE) { + xf86DrvMsg(pScrn->scrnIndex, X_INFO, +@@ -641,9 +618,9 @@ drmBufPtr RADEONCPGetBuffer(ScrnInfoPtr pScrn) + void RADEONCPFlushIndirect(ScrnInfoPtr pScrn, int discard) + { + RADEONInfoPtr info = RADEONPTR(pScrn); +- drmBufPtr buffer = info->indirectBuffer; +- int start = info->indirectStart; +- drmRadeonIndirect indirect; ++ drmBufPtr buffer = info->cp->indirectBuffer; ++ int start = info->cp->indirectStart; ++ drm_radeon_indirect_t indirect; + + if (!buffer) return; + if (start == buffer->used && !discard) return; +@@ -658,18 +635,18 @@ void RADEONCPFlushIndirect(ScrnInfoPtr pScrn, int discard) + indirect.end = buffer->used; + indirect.discard = discard; + +- drmCommandWriteRead(info->drmFD, DRM_RADEON_INDIRECT, +- &indirect, sizeof(drmRadeonIndirect)); ++ drmCommandWriteRead(info->dri->drmFD, DRM_RADEON_INDIRECT, ++ &indirect, sizeof(drm_radeon_indirect_t)); + + if (discard) { +- info->indirectBuffer = RADEONCPGetBuffer(pScrn); +- info->indirectStart = 0; ++ info->cp->indirectBuffer = RADEONCPGetBuffer(pScrn); ++ info->cp->indirectStart = 0; + } else { + /* Start on a double word boundary */ +- info->indirectStart = buffer->used = (buffer->used + 7) & ~7; ++ info->cp->indirectStart = buffer->used = (buffer->used + 7) & ~7; + if (RADEON_VERBOSE) { + xf86DrvMsg(pScrn->scrnIndex, X_INFO, " Starting at %d\n", +- info->indirectStart); ++ info->cp->indirectStart); + } + } + } +@@ -678,12 +655,12 @@ void RADEONCPFlushIndirect(ScrnInfoPtr pScrn, int discard) + void RADEONCPReleaseIndirect(ScrnInfoPtr pScrn) + { + RADEONInfoPtr info = RADEONPTR(pScrn); +- drmBufPtr buffer = info->indirectBuffer; +- int start = info->indirectStart; +- drmRadeonIndirect indirect; ++ drmBufPtr buffer = info->cp->indirectBuffer; ++ int start = info->cp->indirectStart; ++ drm_radeon_indirect_t indirect; + +- info->indirectBuffer = NULL; +- info->indirectStart = 0; ++ info->cp->indirectBuffer = NULL; ++ info->cp->indirectStart = 0; + + if (!buffer) return; + +@@ -697,8 +674,8 @@ void RADEONCPReleaseIndirect(ScrnInfoPtr pScrn) + indirect.end = buffer->used; + indirect.discard = 1; + +- drmCommandWriteRead(info->drmFD, DRM_RADEON_INDIRECT, +- &indirect, sizeof(drmRadeonIndirect)); ++ drmCommandWriteRead(info->dri->drmFD, DRM_RADEON_INDIRECT, ++ &indirect, sizeof(drm_radeon_indirect_t)); + } + + /** \brief Calculate HostDataBlit parameters from pointer and pitch +@@ -964,7 +941,7 @@ Bool RADEONAccelInit(ScreenPtr pScreen) + if (!info->useEXA) { + XAAInfoRecPtr a; + +- if (!(a = info->accel = XAACreateInfoRec())) { ++ if (!(a = info->accel_state->accel = XAACreateInfoRec())) { + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "XAACreateInfoRec Error\n"); + return FALSE; + } +@@ -993,16 +970,16 @@ void RADEONInit3DEngine(ScrnInfoPtr pScrn) + + #ifdef XF86DRI + if (info->directRenderingEnabled) { +- RADEONSAREAPrivPtr pSAREAPriv; ++ drm_radeon_sarea_t *pSAREAPriv; + + pSAREAPriv = DRIGetSAREAPrivate(pScrn->pScreen); +- pSAREAPriv->ctxOwner = DRIGetContext(pScrn->pScreen); ++ pSAREAPriv->ctx_owner = DRIGetContext(pScrn->pScreen); + RADEONInit3DEngineCP(pScrn); + } else + #endif + RADEONInit3DEngineMMIO(pScrn); + +- info->XInited3D = TRUE; ++ info->accel_state->XInited3D = TRUE; + } + + #ifdef USE_XAA +@@ -1013,7 +990,7 @@ RADEONSetupMemXAA_DRI(int scrnIndex, ScreenPtr pScreen) + ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; + RADEONInfoPtr info = RADEONPTR(pScrn); + int cpp = info->CurrentLayout.pixel_bytes; +- int depthCpp = (info->depthBits - 8) / 4; ++ int depthCpp = (info->dri->depthBits - 8) / 4; + int width_bytes = pScrn->displayWidth * cpp; + int bufferSize; + int depthSize; +@@ -1023,9 +1000,9 @@ RADEONSetupMemXAA_DRI(int scrnIndex, ScreenPtr pScreen) + BoxRec MemBox; + FBAreaPtr fbarea; + +- info->frontOffset = 0; +- info->frontPitch = pScrn->displayWidth; +- info->backPitch = pScrn->displayWidth; ++ info->dri->frontOffset = 0; ++ info->dri->frontPitch = pScrn->displayWidth; ++ info->dri->backPitch = pScrn->displayWidth; + + /* make sure we use 16 line alignment for tiling (8 might be enough). + * Might need that for non-XF86DRI too? +@@ -1042,30 +1019,18 @@ RADEONSetupMemXAA_DRI(int scrnIndex, ScreenPtr pScreen) + * which is always the case if color tiling is used due to color pitch + * but not necessarily otherwise, and its height a multiple of 16 lines. + */ +- info->depthPitch = (pScrn->displayWidth + 31) & ~31; +- depthSize = ((((pScrn->virtualY + 15) & ~15) * info->depthPitch ++ info->dri->depthPitch = (pScrn->displayWidth + 31) & ~31; ++ depthSize = ((((pScrn->virtualY + 15) & ~15) * info->dri->depthPitch + * depthCpp + RADEON_BUFFER_ALIGN) & ~RADEON_BUFFER_ALIGN); + +- switch (info->CPMode) { +- case RADEON_DEFAULT_CP_PIO_MODE: +- xf86DrvMsg(pScrn->scrnIndex, X_INFO, "CP in PIO mode\n"); +- break; +- case RADEON_DEFAULT_CP_BM_MODE: +- xf86DrvMsg(pScrn->scrnIndex, X_INFO, "CP in BM mode\n"); +- break; +- default: +- xf86DrvMsg(pScrn->scrnIndex, X_INFO, "CP in UNKNOWN mode\n"); +- break; +- } +- + xf86DrvMsg(pScrn->scrnIndex, X_INFO, +- "Using %d MB GART aperture\n", info->gartSize); ++ "Using %d MB GART aperture\n", info->dri->gartSize); + xf86DrvMsg(pScrn->scrnIndex, X_INFO, +- "Using %d MB for the ring buffer\n", info->ringSize); ++ "Using %d MB for the ring buffer\n", info->dri->ringSize); + xf86DrvMsg(pScrn->scrnIndex, X_INFO, +- "Using %d MB for vertex/indirect buffers\n", info->bufSize); ++ "Using %d MB for vertex/indirect buffers\n", info->dri->bufSize); + xf86DrvMsg(pScrn->scrnIndex, X_INFO, +- "Using %d MB for GART textures\n", info->gartTexSize); ++ "Using %d MB for GART textures\n", info->dri->gartTexSize); + + /* Try for front, back, depth, and three framebuffers worth of + * pixmap cache. Should be enough for a fullscreen background +@@ -1075,35 +1040,35 @@ RADEONSetupMemXAA_DRI(int scrnIndex, ScreenPtr pScreen) + * otherwise probably), and never reserve more than 3 offscreen buffers as it's + * probably useless for XAA. + */ +- if (info->textureSize >= 0) { ++ if (info->dri->textureSize >= 0) { + texsizerequest = ((int)info->FbMapSize - 2 * bufferSize - depthSize + - 2 * width_bytes - 16384 - info->FbSecureSize) + /* first divide, then multiply or we'll get an overflow (been there...) */ +- / 100 * info->textureSize; ++ / 100 * info->dri->textureSize; + } + else { + texsizerequest = (int)info->FbMapSize / 2; + } +- info->textureSize = info->FbMapSize - info->FbSecureSize - 5 * bufferSize - depthSize; ++ info->dri->textureSize = info->FbMapSize - info->FbSecureSize - 5 * bufferSize - depthSize; + + /* If that gives us less than the requested memory, let's + * be greedy and grab some more. Sorry, I care more about 3D + * performance than playing nicely, and you'll get around a full + * framebuffer's worth of pixmap cache anyway. + */ +- if (info->textureSize < texsizerequest) { +- info->textureSize = info->FbMapSize - 4 * bufferSize - depthSize; ++ if (info->dri->textureSize < texsizerequest) { ++ info->dri->textureSize = info->FbMapSize - 4 * bufferSize - depthSize; + } +- if (info->textureSize < texsizerequest) { +- info->textureSize = info->FbMapSize - 3 * bufferSize - depthSize; ++ if (info->dri->textureSize < texsizerequest) { ++ info->dri->textureSize = info->FbMapSize - 3 * bufferSize - depthSize; + } + + /* If there's still no space for textures, try without pixmap cache, but + * never use the reserved space, the space hw cursor and PCIGART table might + * use. + */ +- if (info->textureSize < 0) { +- info->textureSize = info->FbMapSize - 2 * bufferSize - depthSize ++ if (info->dri->textureSize < 0) { ++ info->dri->textureSize = info->FbMapSize - 2 * bufferSize - depthSize + - 2 * width_bytes - 16384 - info->FbSecureSize; + } + +@@ -1112,14 +1077,14 @@ RADEONSetupMemXAA_DRI(int scrnIndex, ScreenPtr pScreen) + */ + /* FIXME: what's this good for? condition is pretty much impossible to meet */ + if ((int)info->FbMapSize - 8192*width_bytes - bufferSize - depthSize +- > info->textureSize) { +- info->textureSize = ++ > info->dri->textureSize) { ++ info->dri->textureSize = + info->FbMapSize - 8192*width_bytes - bufferSize - depthSize; + } + + /* If backbuffer is disabled, don't allocate memory for it */ +- if (info->noBackBuffer) { +- info->textureSize += bufferSize; ++ if (info->dri->noBackBuffer) { ++ info->dri->textureSize += bufferSize; + } + + /* RADEON_BUFFER_ALIGN is not sufficient for backbuffer! +@@ -1131,61 +1096,61 @@ RADEONSetupMemXAA_DRI(int scrnIndex, ScreenPtr pScreen) + can't be used (?) due to that log_tex_granularity thing??? + Could use different copyscreentoscreen function for the pageflip copies + (which would use different src and dst offsets) to avoid this. */ +- if (info->allowColorTiling && !info->noBackBuffer) { +- info->textureSize = info->FbMapSize - ((info->FbMapSize - info->textureSize + ++ if (info->allowColorTiling && !info->dri->noBackBuffer) { ++ info->dri->textureSize = info->FbMapSize - ((info->FbMapSize - info->dri->textureSize + + width_bytes * 16 - 1) / (width_bytes * 16)) * (width_bytes * 16); + } +- if (info->textureSize > 0) { +- l = RADEONMinBits((info->textureSize-1) / RADEON_NR_TEX_REGIONS); ++ if (info->dri->textureSize > 0) { ++ l = RADEONMinBits((info->dri->textureSize-1) / RADEON_NR_TEX_REGIONS); + if (l < RADEON_LOG_TEX_GRANULARITY) + l = RADEON_LOG_TEX_GRANULARITY; + /* Round the texture size up to the nearest whole number of + * texture regions. Again, be greedy about this, don't + * round down. + */ +- info->log2TexGran = l; +- info->textureSize = (info->textureSize >> l) << l; ++ info->dri->log2TexGran = l; ++ info->dri->textureSize = (info->dri->textureSize >> l) << l; + } else { +- info->textureSize = 0; ++ info->dri->textureSize = 0; + } + + /* Set a minimum usable local texture heap size. This will fit + * two 256x256x32bpp textures. + */ +- if (info->textureSize < 512 * 1024) { +- info->textureOffset = 0; +- info->textureSize = 0; ++ if (info->dri->textureSize < 512 * 1024) { ++ info->dri->textureOffset = 0; ++ info->dri->textureSize = 0; + } + +- if (info->allowColorTiling && !info->noBackBuffer) { +- info->textureOffset = ((info->FbMapSize - info->textureSize) / +- (width_bytes * 16)) * (width_bytes * 16); ++ if (info->allowColorTiling && !info->dri->noBackBuffer) { ++ info->dri->textureOffset = ((info->FbMapSize - info->dri->textureSize) / ++ (width_bytes * 16)) * (width_bytes * 16); + } + else { + /* Reserve space for textures */ +- info->textureOffset = ((info->FbMapSize - info->textureSize + +- RADEON_BUFFER_ALIGN) & +- ~(uint32_t)RADEON_BUFFER_ALIGN); ++ info->dri->textureOffset = ((info->FbMapSize - info->dri->textureSize + ++ RADEON_BUFFER_ALIGN) & ++ ~(uint32_t)RADEON_BUFFER_ALIGN); + } + + /* Reserve space for the shared depth + * buffer. + */ +- info->depthOffset = ((info->textureOffset - depthSize + +- RADEON_BUFFER_ALIGN) & +- ~(uint32_t)RADEON_BUFFER_ALIGN); ++ info->dri->depthOffset = ((info->dri->textureOffset - depthSize + ++ RADEON_BUFFER_ALIGN) & ++ ~(uint32_t)RADEON_BUFFER_ALIGN); + + /* Reserve space for the shared back buffer */ +- if (info->noBackBuffer) { +- info->backOffset = info->depthOffset; ++ if (info->dri->noBackBuffer) { ++ info->dri->backOffset = info->dri->depthOffset; + } else { +- info->backOffset = ((info->depthOffset - bufferSize + +- RADEON_BUFFER_ALIGN) & +- ~(uint32_t)RADEON_BUFFER_ALIGN); ++ info->dri->backOffset = ((info->dri->depthOffset - bufferSize + ++ RADEON_BUFFER_ALIGN) & ++ ~(uint32_t)RADEON_BUFFER_ALIGN); + } + +- info->backY = info->backOffset / width_bytes; +- info->backX = (info->backOffset - (info->backY * width_bytes)) / cpp; ++ info->dri->backY = info->dri->backOffset / width_bytes; ++ info->dri->backX = (info->dri->backOffset - (info->dri->backY * width_bytes)) / cpp; + + scanlines = (info->FbMapSize-info->FbSecureSize) / width_bytes; + if (scanlines > 8191) +@@ -1236,12 +1201,12 @@ RADEONSetupMemXAA_DRI(int scrnIndex, ScreenPtr pScreen) + /* Lines in offscreen area needed for depth buffer and + * textures + */ +- info->depthTexLines = (scanlines +- - info->depthOffset / width_bytes); +- info->backLines = (scanlines +- - info->backOffset / width_bytes +- - info->depthTexLines); +- info->backArea = NULL; ++ info->dri->depthTexLines = (scanlines ++ - info->dri->depthOffset / width_bytes); ++ info->dri->backLines = (scanlines ++ - info->dri->backOffset / width_bytes ++ - info->dri->depthTexLines); ++ info->dri->backArea = NULL; + } else { + xf86DrvMsg(scrnIndex, X_ERROR, + "Unable to determine largest offscreen area " +@@ -1252,30 +1217,30 @@ RADEONSetupMemXAA_DRI(int scrnIndex, ScreenPtr pScreen) + + xf86DrvMsg(scrnIndex, X_INFO, + "Will use front buffer at offset 0x%x\n", +- info->frontOffset); ++ info->dri->frontOffset); + + xf86DrvMsg(scrnIndex, X_INFO, + "Will use back buffer at offset 0x%x\n", +- info->backOffset); ++ info->dri->backOffset); + xf86DrvMsg(scrnIndex, X_INFO, + "Will use depth buffer at offset 0x%x\n", +- info->depthOffset); ++ info->dri->depthOffset); + if (info->cardType==CARD_PCIE) + xf86DrvMsg(scrnIndex, X_INFO, + "Will use %d kb for PCI GART table at offset 0x%x\n", +- info->pciGartSize/1024, (unsigned)info->pciGartOffset); ++ info->dri->pciGartSize/1024, (unsigned)info->dri->pciGartOffset); + xf86DrvMsg(scrnIndex, X_INFO, + "Will use %d kb for textures at offset 0x%x\n", +- info->textureSize/1024, info->textureOffset); ++ info->dri->textureSize/1024, info->dri->textureOffset); + +- info->frontPitchOffset = (((info->frontPitch * cpp / 64) << 22) | +- ((info->frontOffset + info->fbLocation) >> 10)); ++ info->dri->frontPitchOffset = (((info->dri->frontPitch * cpp / 64) << 22) | ++ ((info->dri->frontOffset + info->fbLocation) >> 10)); + +- info->backPitchOffset = (((info->backPitch * cpp / 64) << 22) | +- ((info->backOffset + info->fbLocation) >> 10)); ++ info->dri->backPitchOffset = (((info->dri->backPitch * cpp / 64) << 22) | ++ ((info->dri->backOffset + info->fbLocation) >> 10)); + +- info->depthPitchOffset = (((info->depthPitch * depthCpp / 64) << 22) | +- ((info->depthOffset + info->fbLocation) >> 10)); ++ info->dri->depthPitchOffset = (((info->dri->depthPitch * depthCpp / 64) << 22) | ++ ((info->dri->depthOffset + info->fbLocation) >> 10)); + return TRUE; + } + #endif /* XF86DRI */ +diff --git a/src/radeon_accelfuncs.c b/src/radeon_accelfuncs.c +index 56793cd..45eb6d5 100644 +--- a/src/radeon_accelfuncs.c ++++ b/src/radeon_accelfuncs.c +@@ -137,14 +137,14 @@ FUNC_NAME(RADEONSetupForSolidFill)(ScrnInfoPtr pScrn, + ACCEL_PREAMBLE(); + + /* Save for later clipping */ +- info->dp_gui_master_cntl_clip = (info->dp_gui_master_cntl +- | RADEON_GMC_BRUSH_SOLID_COLOR +- | RADEON_GMC_SRC_DATATYPE_COLOR +- | RADEON_ROP[rop].pattern); ++ info->accel_state->dp_gui_master_cntl_clip = (info->accel_state->dp_gui_master_cntl ++ | RADEON_GMC_BRUSH_SOLID_COLOR ++ | RADEON_GMC_SRC_DATATYPE_COLOR ++ | RADEON_ROP[rop].pattern); + + BEGIN_ACCEL(4); + +- OUT_ACCEL_REG(RADEON_DP_GUI_MASTER_CNTL, info->dp_gui_master_cntl_clip); ++ OUT_ACCEL_REG(RADEON_DP_GUI_MASTER_CNTL, info->accel_state->dp_gui_master_cntl_clip); + OUT_ACCEL_REG(RADEON_DP_BRUSH_FRGD_CLR, color); + OUT_ACCEL_REG(RADEON_DP_WRITE_MASK, planemask); + OUT_ACCEL_REG(RADEON_DP_CNTL, (RADEON_DST_X_LEFT_TO_RIGHT +@@ -172,7 +172,7 @@ FUNC_NAME(RADEONSubsequentSolidFillRect)(ScrnInfoPtr pScrn, + + BEGIN_ACCEL(3); + +- OUT_ACCEL_REG(RADEON_DST_PITCH_OFFSET, info->dst_pitch_offset | ++ OUT_ACCEL_REG(RADEON_DST_PITCH_OFFSET, info->accel_state->dst_pitch_offset | + ((info->tilingEnabled && (y <= pScrn->virtualY)) ? RADEON_DST_TILE_MACRO : 0)); + OUT_ACCEL_REG(RADEON_DST_Y_X, (y << 16) | x); + OUT_ACCEL_REG(RADEON_DST_WIDTH_HEIGHT, (w << 16) | h); +@@ -191,10 +191,10 @@ FUNC_NAME(RADEONSetupForSolidLine)(ScrnInfoPtr pScrn, + ACCEL_PREAMBLE(); + + /* Save for later clipping */ +- info->dp_gui_master_cntl_clip = (info->dp_gui_master_cntl +- | RADEON_GMC_BRUSH_SOLID_COLOR +- | RADEON_GMC_SRC_DATATYPE_COLOR +- | RADEON_ROP[rop].pattern); ++ info->accel_state->dp_gui_master_cntl_clip = (info->accel_state->dp_gui_master_cntl ++ | RADEON_GMC_BRUSH_SOLID_COLOR ++ | RADEON_GMC_SRC_DATATYPE_COLOR ++ | RADEON_ROP[rop].pattern); + + if (info->ChipFamily >= CHIP_FAMILY_RV200) { + BEGIN_ACCEL(1); +@@ -205,7 +205,7 @@ FUNC_NAME(RADEONSetupForSolidLine)(ScrnInfoPtr pScrn, + + BEGIN_ACCEL(3); + +- OUT_ACCEL_REG(RADEON_DP_GUI_MASTER_CNTL, info->dp_gui_master_cntl_clip); ++ OUT_ACCEL_REG(RADEON_DP_GUI_MASTER_CNTL, info->accel_state->dp_gui_master_cntl_clip); + OUT_ACCEL_REG(RADEON_DP_BRUSH_FRGD_CLR, color); + OUT_ACCEL_REG(RADEON_DP_WRITE_MASK, planemask); + +@@ -236,7 +236,7 @@ FUNC_NAME(RADEONSubsequentSolidHorVertLine)(ScrnInfoPtr pScrn, + + OUT_ACCEL_REG(RADEON_DP_CNTL, (RADEON_DST_X_LEFT_TO_RIGHT + | RADEON_DST_Y_TOP_TO_BOTTOM)); +- OUT_ACCEL_REG(RADEON_DST_PITCH_OFFSET, info->dst_pitch_offset | ++ OUT_ACCEL_REG(RADEON_DST_PITCH_OFFSET, info->accel_state->dst_pitch_offset | + ((info->tilingEnabled && (y <= pScrn->virtualY)) ? RADEON_DST_TILE_MACRO : 0)); + OUT_ACCEL_REG(RADEON_DST_Y_X, (y << 16) | x); + OUT_ACCEL_REG(RADEON_DST_WIDTH_HEIGHT, (w << 16) | h); +@@ -269,7 +269,7 @@ FUNC_NAME(RADEONSubsequentSolidTwoPointLine)(ScrnInfoPtr pScrn, + + BEGIN_ACCEL(3); + +- OUT_ACCEL_REG(RADEON_DST_PITCH_OFFSET, info->dst_pitch_offset | ++ OUT_ACCEL_REG(RADEON_DST_PITCH_OFFSET, info->accel_state->dst_pitch_offset | + ((info->tilingEnabled && (ya <= pScrn->virtualY)) ? RADEON_DST_TILE_MACRO : 0)); + OUT_ACCEL_REG(RADEON_DST_LINE_START, (ya << 16) | xa); + OUT_ACCEL_REG(RADEON_DST_LINE_END, (yb << 16) | xb); +@@ -298,8 +298,8 @@ FUNC_NAME(RADEONSetupForDashedLine)(ScrnInfoPtr pScrn, + ACCEL_PREAMBLE(); + + /* Save for determining whether or not to draw last pixel */ +- info->dashLen = length; +- info->dashPattern = pat; ++ info->accel_state->dashLen = length; ++ info->accel_state->dashPattern = pat; + + #if X_BYTE_ORDER == X_BIG_ENDIAN + # define PAT_SHIFT(pat, shift) (pat >> shift) +@@ -315,18 +315,18 @@ FUNC_NAME(RADEONSetupForDashedLine)(ScrnInfoPtr pScrn, + } + + /* Save for later clipping */ +- info->dp_gui_master_cntl_clip = (info->dp_gui_master_cntl +- | (bg == -1 +- ? RADEON_GMC_BRUSH_32x1_MONO_FG_LA +- : RADEON_GMC_BRUSH_32x1_MONO_FG_BG) +- | RADEON_ROP[rop].pattern +- | RADEON_GMC_BYTE_LSB_TO_MSB); +- info->dash_fg = fg; +- info->dash_bg = bg; ++ info->accel_state->dp_gui_master_cntl_clip = (info->accel_state->dp_gui_master_cntl ++ | (bg == -1 ++ ? RADEON_GMC_BRUSH_32x1_MONO_FG_LA ++ : RADEON_GMC_BRUSH_32x1_MONO_FG_BG) ++ | RADEON_ROP[rop].pattern ++ | RADEON_GMC_BYTE_LSB_TO_MSB); ++ info->accel_state->dash_fg = fg; ++ info->accel_state->dash_bg = bg; + + BEGIN_ACCEL((bg == -1) ? 4 : 5); + +- OUT_ACCEL_REG(RADEON_DP_GUI_MASTER_CNTL, info->dp_gui_master_cntl_clip); ++ OUT_ACCEL_REG(RADEON_DP_GUI_MASTER_CNTL, info->accel_state->dp_gui_master_cntl_clip); + OUT_ACCEL_REG(RADEON_DP_WRITE_MASK, planemask); + OUT_ACCEL_REG(RADEON_DP_BRUSH_FRGD_CLR, fg); + if (bg != -1) +@@ -348,7 +348,7 @@ FUNC_NAME(RADEONDashedLastPel)(ScrnInfoPtr pScrn, + int fg) + { + RADEONInfoPtr info = RADEONPTR(pScrn); +- uint32_t dp_gui_master_cntl = info->dp_gui_master_cntl_clip; ++ uint32_t dp_gui_master_cntl = info->accel_state->dp_gui_master_cntl_clip; + ACCEL_PREAMBLE(); + + dp_gui_master_cntl &= ~RADEON_GMC_BRUSH_DATATYPE_MASK; +@@ -362,15 +362,15 @@ FUNC_NAME(RADEONDashedLastPel)(ScrnInfoPtr pScrn, + OUT_ACCEL_REG(RADEON_DP_GUI_MASTER_CNTL, dp_gui_master_cntl); + OUT_ACCEL_REG(RADEON_DP_CNTL, (RADEON_DST_X_LEFT_TO_RIGHT + | RADEON_DST_Y_TOP_TO_BOTTOM)); +- OUT_ACCEL_REG(RADEON_DST_PITCH_OFFSET, info->dst_pitch_offset | ++ OUT_ACCEL_REG(RADEON_DST_PITCH_OFFSET, info->accel_state->dst_pitch_offset | + ((info->tilingEnabled && (y <= pScrn->virtualY)) ? RADEON_DST_TILE_MACRO : 0)); + OUT_ACCEL_REG(RADEON_DP_BRUSH_FRGD_CLR, fg); + OUT_ACCEL_REG(RADEON_DST_Y_X, (y << 16) | x); + OUT_ACCEL_REG(RADEON_DST_WIDTH_HEIGHT, (1 << 16) | 1); + + /* Restore old values */ +- OUT_ACCEL_REG(RADEON_DP_GUI_MASTER_CNTL, info->dp_gui_master_cntl_clip); +- OUT_ACCEL_REG(RADEON_DP_BRUSH_FRGD_CLR, info->dash_fg); ++ OUT_ACCEL_REG(RADEON_DP_GUI_MASTER_CNTL, info->accel_state->dp_gui_master_cntl_clip); ++ OUT_ACCEL_REG(RADEON_DP_BRUSH_FRGD_CLR, info->accel_state->dash_fg); + + FINISH_ACCEL(); + BEGIN_ACCEL(2); +@@ -402,17 +402,17 @@ FUNC_NAME(RADEONSubsequentDashedTwoPointLine)(ScrnInfoPtr pScrn, + else shift = deltay; + + shift += phase; +- shift %= info->dashLen; ++ shift %= info->accel_state->dashLen; + +- if ((info->dashPattern >> shift) & 1) +- FUNC_NAME(RADEONDashedLastPel)(pScrn, xb, yb, info->dash_fg); +- else if (info->dash_bg != -1) +- FUNC_NAME(RADEONDashedLastPel)(pScrn, xb, yb, info->dash_bg); ++ if ((info->accel_state->dashPattern >> shift) & 1) ++ FUNC_NAME(RADEONDashedLastPel)(pScrn, xb, yb, info->accel_state->dash_fg); ++ else if (info->accel_state->dash_bg != -1) ++ FUNC_NAME(RADEONDashedLastPel)(pScrn, xb, yb, info->accel_state->dash_bg); + } + + BEGIN_ACCEL(4); + +- OUT_ACCEL_REG(RADEON_DST_PITCH_OFFSET, info->dst_pitch_offset | ++ OUT_ACCEL_REG(RADEON_DST_PITCH_OFFSET, info->accel_state->dst_pitch_offset | + ((info->tilingEnabled && (ya <= pScrn->virtualY)) ? RADEON_DST_TILE_MACRO : 0)); + OUT_ACCEL_REG(RADEON_DST_LINE_START, (ya << 16) | xa); + OUT_ACCEL_REG(RADEON_DST_LINE_PATCOUNT, phase); +@@ -433,7 +433,7 @@ FUNC_NAME(RADEONSetTransparency)(ScrnInfoPtr pScrn, + { + RADEONInfoPtr info = RADEONPTR(pScrn); + +- if ((trans_color != -1) || (info->XAAForceTransBlit == TRUE)) { ++ if ((trans_color != -1) || (info->accel_state->XAAForceTransBlit == TRUE)) { + ACCEL_PREAMBLE(); + + BEGIN_ACCEL(3); +@@ -461,20 +461,20 @@ FUNC_NAME(RADEONSetupForScreenToScreenCopy)(ScrnInfoPtr pScrn, + RADEONInfoPtr info = RADEONPTR(pScrn); + ACCEL_PREAMBLE(); + +- info->xdir = xdir; +- info->ydir = ydir; ++ info->accel_state->xdir = xdir; ++ info->accel_state->ydir = ydir; + + /* Save for later clipping */ +- info->dp_gui_master_cntl_clip = (info->dp_gui_master_cntl +- | RADEON_GMC_BRUSH_NONE +- | RADEON_GMC_SRC_DATATYPE_COLOR +- | RADEON_ROP[rop].rop +- | RADEON_DP_SRC_SOURCE_MEMORY +- | RADEON_GMC_SRC_PITCH_OFFSET_CNTL); ++ info->accel_state->dp_gui_master_cntl_clip = (info->accel_state->dp_gui_master_cntl ++ | RADEON_GMC_BRUSH_NONE ++ | RADEON_GMC_SRC_DATATYPE_COLOR ++ | RADEON_ROP[rop].rop ++ | RADEON_DP_SRC_SOURCE_MEMORY ++ | RADEON_GMC_SRC_PITCH_OFFSET_CNTL); + + BEGIN_ACCEL(3); + +- OUT_ACCEL_REG(RADEON_DP_GUI_MASTER_CNTL, info->dp_gui_master_cntl_clip); ++ OUT_ACCEL_REG(RADEON_DP_GUI_MASTER_CNTL, info->accel_state->dp_gui_master_cntl_clip); + OUT_ACCEL_REG(RADEON_DP_WRITE_MASK, planemask); + OUT_ACCEL_REG(RADEON_DP_CNTL, + ((xdir >= 0 ? RADEON_DST_X_LEFT_TO_RIGHT : 0) | +@@ -487,7 +487,7 @@ FUNC_NAME(RADEONSetupForScreenToScreenCopy)(ScrnInfoPtr pScrn, + RADEON_WAIT_2D_IDLECLEAN | RADEON_WAIT_DMA_GUI_IDLE); + FINISH_ACCEL(); + +- info->trans_color = trans_color; ++ info->accel_state->trans_color = trans_color; + FUNC_NAME(RADEONSetTransparency)(pScrn, trans_color); + } + +@@ -501,14 +501,14 @@ FUNC_NAME(RADEONSubsequentScreenToScreenCopy)(ScrnInfoPtr pScrn, + RADEONInfoPtr info = RADEONPTR(pScrn); + ACCEL_PREAMBLE(); + +- if (info->xdir < 0) xa += w - 1, xb += w - 1; +- if (info->ydir < 0) ya += h - 1, yb += h - 1; ++ if (info->accel_state->xdir < 0) xa += w - 1, xb += w - 1; ++ if (info->accel_state->ydir < 0) ya += h - 1, yb += h - 1; + + BEGIN_ACCEL(5); + +- OUT_ACCEL_REG(RADEON_SRC_PITCH_OFFSET, info->dst_pitch_offset | ++ OUT_ACCEL_REG(RADEON_SRC_PITCH_OFFSET, info->accel_state->dst_pitch_offset | + ((info->tilingEnabled && (ya <= pScrn->virtualY)) ? RADEON_DST_TILE_MACRO : 0)); +- OUT_ACCEL_REG(RADEON_DST_PITCH_OFFSET, info->dst_pitch_offset | ++ OUT_ACCEL_REG(RADEON_DST_PITCH_OFFSET, info->accel_state->dst_pitch_offset | + ((info->tilingEnabled && (yb <= pScrn->virtualY)) ? RADEON_DST_TILE_MACRO : 0)); + OUT_ACCEL_REG(RADEON_SRC_Y_X, (ya << 16) | xa); + OUT_ACCEL_REG(RADEON_DST_Y_X, (yb << 16) | xb); +@@ -552,19 +552,19 @@ FUNC_NAME(RADEONSetupForMono8x8PatternFill)(ScrnInfoPtr pScrn, + #endif + + /* Save for later clipping */ +- info->dp_gui_master_cntl_clip = (info->dp_gui_master_cntl +- | (bg == -1 +- ? RADEON_GMC_BRUSH_8X8_MONO_FG_LA +- : RADEON_GMC_BRUSH_8X8_MONO_FG_BG) +- | RADEON_ROP[rop].pattern ++ info->accel_state->dp_gui_master_cntl_clip = (info->accel_state->dp_gui_master_cntl ++ | (bg == -1 ++ ? RADEON_GMC_BRUSH_8X8_MONO_FG_LA ++ : RADEON_GMC_BRUSH_8X8_MONO_FG_BG) ++ | RADEON_ROP[rop].pattern + #if X_BYTE_ORDER == X_LITTLE_ENDIAN +- | RADEON_GMC_BYTE_MSB_TO_LSB ++ | RADEON_GMC_BYTE_MSB_TO_LSB + #endif +- ); ++ ); + + BEGIN_ACCEL((bg == -1) ? 5 : 6); + +- OUT_ACCEL_REG(RADEON_DP_GUI_MASTER_CNTL, info->dp_gui_master_cntl_clip); ++ OUT_ACCEL_REG(RADEON_DP_GUI_MASTER_CNTL, info->accel_state->dp_gui_master_cntl_clip); + OUT_ACCEL_REG(RADEON_DP_WRITE_MASK, planemask); + OUT_ACCEL_REG(RADEON_DP_BRUSH_FRGD_CLR, fg); + if (bg != -1) +@@ -600,7 +600,7 @@ FUNC_NAME(RADEONSubsequentMono8x8PatternFillRect)(ScrnInfoPtr pScrn, + + BEGIN_ACCEL(4); + +- OUT_ACCEL_REG(RADEON_DST_PITCH_OFFSET, info->dst_pitch_offset | ++ OUT_ACCEL_REG(RADEON_DST_PITCH_OFFSET, info->accel_state->dst_pitch_offset | + ((info->tilingEnabled && (y <= pScrn->virtualY)) ? RADEON_DST_TILE_MACRO : 0)); + OUT_ACCEL_REG(RADEON_BRUSH_Y_X, (patterny << 8) | patternx); + OUT_ACCEL_REG(RADEON_DST_Y_X, (y << 16) | x); +@@ -625,21 +625,21 @@ FUNC_NAME(RADEONSetupForColor8x8PatternFill)(ScrnInfoPtr pScrn, + ACCEL_PREAMBLE(); + + /* Save for later clipping */ +- info->dp_gui_master_cntl_clip = (info->dp_gui_master_cntl +- | RADEON_GMC_BRUSH_8x8_COLOR +- | RADEON_GMC_SRC_DATATYPE_COLOR +- | RADEON_ROP[rop].pattern +- | RADEON_DP_SRC_SOURCE_MEMORY); ++ info->accel_state->dp_gui_master_cntl_clip = (info->accel_state->dp_gui_master_cntl ++ | RADEON_GMC_BRUSH_8x8_COLOR ++ | RADEON_GMC_SRC_DATATYPE_COLOR ++ | RADEON_ROP[rop].pattern ++ | RADEON_DP_SRC_SOURCE_MEMORY); + + BEGIN_ACCEL(3); + +- OUT_ACCEL_REG(RADEON_DP_GUI_MASTER_CNTL, info->dp_gui_master_cntl_clip); ++ OUT_ACCEL_REG(RADEON_DP_GUI_MASTER_CNTL, info->accel_state->dp_gui_master_cntl_clip); + OUT_ACCEL_REG(RADEON_DP_WRITE_MASK, planemask); + OUT_ACCEL_REG(RADEON_SRC_Y_X, (paty << 16) | patx); + + FINISH_ACCEL(); + +- info->trans_color = trans_color; ++ info->accel_state->trans_color = trans_color; + FUNC_NAME(RADEONSetTransparency)(pScrn, trans_color); + } + +@@ -655,7 +655,7 @@ FUNC_NAME(RADEONSubsequentColor8x8PatternFillRect)(ScrnInfoPtr pScrn, + + BEGIN_ACCEL(4); + +- OUT_ACCEL_REG(RADEON_DST_PITCH_OFFSET, info->dst_pitch_offset | ++ OUT_ACCEL_REG(RADEON_DST_PITCH_OFFSET, info->accel_state->dst_pitch_offset | + ((info->tilingEnabled && (y <= pScrn->virtualY)) ? RADEON_DST_TILE_MACRO : 0)); + OUT_ACCEL_REG(RADEON_BRUSH_Y_X, (paty << 16) | patx); + OUT_ACCEL_REG(RADEON_DST_Y_X, (y << 16) | x); +@@ -666,7 +666,7 @@ FUNC_NAME(RADEONSubsequentColor8x8PatternFillRect)(ScrnInfoPtr pScrn, + #endif + + #ifdef ACCEL_CP +-#define CP_BUFSIZE (info->indirectBuffer->total/4-10) ++#define CP_BUFSIZE (info->cp->indirectBuffer->total/4-10) + + /* Helper function to write out a HOSTDATA_BLT packet into the indirect + * buffer and set the XAA scratch buffer address appropriately. +@@ -675,41 +675,41 @@ static void + RADEONCPScanlinePacket(ScrnInfoPtr pScrn, int bufno) + { + RADEONInfoPtr info = RADEONPTR(pScrn); +- int chunk_words = info->scanline_hpass * info->scanline_words; ++ int chunk_words = info->accel_state->scanline_hpass * info->accel_state->scanline_words; + ACCEL_PREAMBLE(); + + if (RADEON_VERBOSE) { + xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "CPScanline Packet h=%d hpass=%d chunkwords=%d\n", +- info->scanline_h, info->scanline_hpass, chunk_words); ++ info->accel_state->scanline_h, info->accel_state->scanline_hpass, chunk_words); + } + BEGIN_RING(chunk_words+10); + + OUT_RING(CP_PACKET3(RADEON_CP_PACKET3_CNTL_HOSTDATA_BLT,chunk_words+10-2)); +- OUT_RING(info->dp_gui_master_cntl_clip); +- OUT_RING(info->dst_pitch_offset | +- ((info->tilingEnabled && (info->scanline_y <= pScrn->virtualY)) ? RADEON_DST_TILE_MACRO : 0)); +- OUT_RING((info->scanline_y << 16) | +- (info->scanline_x1clip & 0xffff)); +- OUT_RING(((info->scanline_y+info->scanline_hpass) << 16) | +- (info->scanline_x2clip & 0xffff)); +- OUT_RING(info->scanline_fg); +- OUT_RING(info->scanline_bg); +- OUT_RING((info->scanline_y << 16) | +- (info->scanline_x & 0xffff)); +- OUT_RING((info->scanline_hpass << 16) | +- (info->scanline_w & 0xffff)); ++ OUT_RING(info->accel_state->dp_gui_master_cntl_clip); ++ OUT_RING(info->accel_state->dst_pitch_offset | ++ ((info->tilingEnabled && (info->accel_state->scanline_y <= pScrn->virtualY)) ? RADEON_DST_TILE_MACRO : 0)); ++ OUT_RING((info->accel_state->scanline_y << 16) | ++ (info->accel_state->scanline_x1clip & 0xffff)); ++ OUT_RING(((info->accel_state->scanline_y+info->accel_state->scanline_hpass) << 16) | ++ (info->accel_state->scanline_x2clip & 0xffff)); ++ OUT_RING(info->accel_state->scanline_fg); ++ OUT_RING(info->accel_state->scanline_bg); ++ OUT_RING((info->accel_state->scanline_y << 16) | ++ (info->accel_state->scanline_x & 0xffff)); ++ OUT_RING((info->accel_state->scanline_hpass << 16) | ++ (info->accel_state->scanline_w & 0xffff)); + OUT_RING(chunk_words); + +- info->scratch_buffer[bufno] = (unsigned char *)&__head[__count]; ++ info->accel_state->scratch_buffer[bufno] = (unsigned char *)&__head[__count]; + __count += chunk_words; + + /* The ring can only be advanced after the __head and __count have + been adjusted above */ + FINISH_ACCEL(); + +- info->scanline_y += info->scanline_hpass; +- info->scanline_h -= info->scanline_hpass; ++ info->accel_state->scanline_y += info->accel_state->scanline_hpass; ++ info->accel_state->scanline_h -= info->accel_state->scanline_hpass; + } + #endif + +@@ -729,22 +729,22 @@ FUNC_NAME(RADEONSetupForScanlineCPUToScreenColorExpandFill)(ScrnInfoPtr pScrn, + RADEONInfoPtr info = RADEONPTR(pScrn); + ACCEL_PREAMBLE(); + +- info->scanline_bpp = 0; ++ info->accel_state->scanline_bpp = 0; + + /* Save for later clipping */ +- info->dp_gui_master_cntl_clip = (info->dp_gui_master_cntl +- | RADEON_GMC_DST_CLIPPING +- | RADEON_GMC_BRUSH_NONE +- | (bg == -1 +- ? RADEON_GMC_SRC_DATATYPE_MONO_FG_LA +- : RADEON_GMC_SRC_DATATYPE_MONO_FG_BG) +- | RADEON_ROP[rop].rop ++ info->accel_state->dp_gui_master_cntl_clip = (info->accel_state->dp_gui_master_cntl ++ | RADEON_GMC_DST_CLIPPING ++ | RADEON_GMC_BRUSH_NONE ++ | (bg == -1 ++ ? RADEON_GMC_SRC_DATATYPE_MONO_FG_LA ++ : RADEON_GMC_SRC_DATATYPE_MONO_FG_BG) ++ | RADEON_ROP[rop].rop + #if X_BYTE_ORDER == X_LITTLE_ENDIAN +- | RADEON_GMC_BYTE_LSB_TO_MSB ++ | RADEON_GMC_BYTE_LSB_TO_MSB + #else +- | RADEON_GMC_BYTE_MSB_TO_LSB ++ | RADEON_GMC_BYTE_MSB_TO_LSB + #endif +- | RADEON_DP_SRC_SOURCE_HOST_DATA); ++ | RADEON_DP_SRC_SOURCE_HOST_DATA); + + #ifdef ACCEL_MMIO + +@@ -755,15 +755,15 @@ FUNC_NAME(RADEONSetupForScanlineCPUToScreenColorExpandFill)(ScrnInfoPtr pScrn, + + OUT_ACCEL_REG(RADEON_RBBM_GUICNTL, RADEON_HOST_DATA_SWAP_NONE); + #endif +- OUT_ACCEL_REG(RADEON_DP_GUI_MASTER_CNTL, info->dp_gui_master_cntl_clip); ++ OUT_ACCEL_REG(RADEON_DP_GUI_MASTER_CNTL, info->accel_state->dp_gui_master_cntl_clip); + OUT_ACCEL_REG(RADEON_DP_WRITE_MASK, planemask); + OUT_ACCEL_REG(RADEON_DP_SRC_FRGD_CLR, fg); + OUT_ACCEL_REG(RADEON_DP_SRC_BKGD_CLR, bg); + + #else /* ACCEL_CP */ + +- info->scanline_fg = fg; +- info->scanline_bg = bg; ++ info->accel_state->scanline_fg = fg; ++ info->accel_state->scanline_bg = bg; + + #if X_BYTE_ORDER == X_LITTLE_ENDIAN + BEGIN_ACCEL(1); +@@ -796,31 +796,31 @@ FUNC_NAME(RADEONSubsequentScanlineCPUToScreenColorExpandFill)(ScrnInfoPtr + #ifdef ACCEL_MMIO + ACCEL_PREAMBLE(); + +- info->scanline_h = h; +- info->scanline_words = (w + 31) >> 5; ++ info->accel_state->scanline_h = h; ++ info->accel_state->scanline_words = (w + 31) >> 5; + + #ifdef __alpha__ + /* Always use indirect for Alpha */ + if (0) + #else +- if ((info->scanline_words * h) <= 9) ++ if ((info->accel_state->scanline_words * h) <= 9) + #endif + { + /* Turn on direct for less than 9 dword colour expansion */ +- info->scratch_buffer[0] = ++ info->accel_state->scratch_buffer[0] = + (unsigned char *)(ADDRREG(RADEON_HOST_DATA_LAST) +- - (info->scanline_words - 1)); +- info->scanline_direct = 1; ++ - (info->accel_state->scanline_words - 1)); ++ info->accel_state->scanline_direct = 1; + } else { + /* Use indirect for anything else */ +- info->scratch_buffer[0] = info->scratch_save; +- info->scanline_direct = 0; ++ info->accel_state->scratch_buffer[0] = info->accel_state->scratch_save; ++ info->accel_state->scanline_direct = 0; + } + +- BEGIN_ACCEL(5 + (info->scanline_direct ? +- (info->scanline_words * h) : 0)); ++ BEGIN_ACCEL(5 + (info->accel_state->scanline_direct ? ++ (info->accel_state->scanline_words * h) : 0)); + +- OUT_ACCEL_REG(RADEON_DST_PITCH_OFFSET, info->dst_pitch_offset | ++ OUT_ACCEL_REG(RADEON_DST_PITCH_OFFSET, info->accel_state->dst_pitch_offset | + ((info->tilingEnabled && (y <= pScrn->virtualY)) ? RADEON_DST_TILE_MACRO : 0)); + OUT_ACCEL_REG(RADEON_SC_TOP_LEFT, (y << 16) | ((x+skipleft) + & 0xffff)); +@@ -833,17 +833,17 @@ FUNC_NAME(RADEONSubsequentScanlineCPUToScreenColorExpandFill)(ScrnInfoPtr + + #else /* ACCEL_CP */ + +- info->scanline_x = x; +- info->scanline_y = y; ++ info->accel_state->scanline_x = x; ++ info->accel_state->scanline_y = y; + /* Have to pad the width here and use clipping engine */ +- info->scanline_w = (w + 31) & ~31; +- info->scanline_h = h; ++ info->accel_state->scanline_w = (w + 31) & ~31; ++ info->accel_state->scanline_h = h; + +- info->scanline_x1clip = x + skipleft; +- info->scanline_x2clip = x + w; ++ info->accel_state->scanline_x1clip = x + skipleft; ++ info->accel_state->scanline_x2clip = x + w; + +- info->scanline_words = info->scanline_w / 32; +- info->scanline_hpass = min(h,(CP_BUFSIZE/info->scanline_words)); ++ info->accel_state->scanline_words = info->accel_state->scanline_w / 32; ++ info->accel_state->scanline_hpass = min(h,(CP_BUFSIZE/info->accel_state->scanline_words)); + + RADEONCPScanlinePacket(pScrn, 0); + +@@ -859,21 +859,21 @@ FUNC_NAME(RADEONSubsequentScanline)(ScrnInfoPtr pScrn, + { + RADEONInfoPtr info = RADEONPTR(pScrn); + #ifdef ACCEL_MMIO +- uint32_t *p = (pointer)info->scratch_buffer[bufno]; ++ uint32_t *p = (pointer)info->accel_state->scratch_buffer[bufno]; + int i; +- int left = info->scanline_words; ++ int left = info->accel_state->scanline_words; + volatile uint32_t *d; + ACCEL_PREAMBLE(); + +- if (info->scanline_direct) return; ++ if (info->accel_state->scanline_direct) return; + +- --info->scanline_h; ++ --info->accel_state->scanline_h; + + while (left) { + write_mem_barrier(); + if (left <= 8) { + /* Last scanline - finish write to DATA_LAST */ +- if (info->scanline_h == 0) { ++ if (info->accel_state->scanline_h == 0) { + BEGIN_ACCEL(left); + /* Unrolling doesn't improve performance */ + for (d = ADDRREG(RADEON_HOST_DATA_LAST) - (left - 1); left; --left) +@@ -900,25 +900,25 @@ FUNC_NAME(RADEONSubsequentScanline)(ScrnInfoPtr pScrn, + + #if X_BYTE_ORDER == X_BIG_ENDIAN + if (info->ChipFamily >= CHIP_FAMILY_R300) { +- if (info->scanline_bpp == 16) { +- RADEONCopySwap(info->scratch_buffer[bufno], +- info->scratch_buffer[bufno], +- info->scanline_words << 2, ++ if (info->accel_state->scanline_bpp == 16) { ++ RADEONCopySwap(info->accel_state->scratch_buffer[bufno], ++ info->accel_state->scratch_buffer[bufno], ++ info->accel_state->scanline_words << 2, + RADEON_HOST_DATA_SWAP_HDW); +- } else if (info->scanline_bpp < 15) { +- RADEONCopySwap(info->scratch_buffer[bufno], +- info->scratch_buffer[bufno], +- info->scanline_words << 2, ++ } else if (info->accel_state->scanline_bpp < 15) { ++ RADEONCopySwap(info->accel_state->scratch_buffer[bufno], ++ info->accel_state->scratch_buffer[bufno], ++ info->accel_state->scanline_words << 2, + RADEON_HOST_DATA_SWAP_32BIT); + } + } + #endif + +- if (--info->scanline_hpass) { +- info->scratch_buffer[bufno] += 4 * info->scanline_words; +- } else if (info->scanline_h) { +- info->scanline_hpass = +- min(info->scanline_h,(CP_BUFSIZE/info->scanline_words)); ++ if (--info->accel_state->scanline_hpass) { ++ info->accel_state->scratch_buffer[bufno] += 4 * info->accel_state->scanline_words; ++ } else if (info->accel_state->scanline_h) { ++ info->accel_state->scanline_hpass = ++ min(info->accel_state->scanline_h,(CP_BUFSIZE/info->accel_state->scanline_words)); + RADEONCPScanlinePacket(pScrn, bufno); + } + +@@ -937,16 +937,16 @@ FUNC_NAME(RADEONSetupForScanlineImageWrite)(ScrnInfoPtr pScrn, + RADEONInfoPtr info = RADEONPTR(pScrn); + ACCEL_PREAMBLE(); + +- info->scanline_bpp = bpp; ++ info->accel_state->scanline_bpp = bpp; + + /* Save for later clipping */ +- info->dp_gui_master_cntl_clip = (info->dp_gui_master_cntl +- | RADEON_GMC_DST_CLIPPING +- | RADEON_GMC_BRUSH_NONE +- | RADEON_GMC_SRC_DATATYPE_COLOR +- | RADEON_ROP[rop].rop +- | RADEON_GMC_BYTE_MSB_TO_LSB +- | RADEON_DP_SRC_SOURCE_HOST_DATA); ++ info->accel_state->dp_gui_master_cntl_clip = (info->accel_state->dp_gui_master_cntl ++ | RADEON_GMC_DST_CLIPPING ++ | RADEON_GMC_BRUSH_NONE ++ | RADEON_GMC_SRC_DATATYPE_COLOR ++ | RADEON_ROP[rop].rop ++ | RADEON_GMC_BYTE_MSB_TO_LSB ++ | RADEON_DP_SRC_SOURCE_HOST_DATA); + + #ifdef ACCEL_MMIO + +@@ -962,7 +962,7 @@ FUNC_NAME(RADEONSetupForScanlineImageWrite)(ScrnInfoPtr pScrn, + else + OUT_ACCEL_REG(RADEON_RBBM_GUICNTL, RADEON_HOST_DATA_SWAP_NONE); + #endif +- OUT_ACCEL_REG(RADEON_DP_GUI_MASTER_CNTL, info->dp_gui_master_cntl_clip); ++ OUT_ACCEL_REG(RADEON_DP_GUI_MASTER_CNTL, info->accel_state->dp_gui_master_cntl_clip); + + #else /* ACCEL_CP */ + +@@ -984,7 +984,7 @@ FUNC_NAME(RADEONSetupForScanlineImageWrite)(ScrnInfoPtr pScrn, + + FINISH_ACCEL(); + +- info->trans_color = trans_color; ++ info->accel_state->trans_color = trans_color; + FUNC_NAME(RADEONSetTransparency)(pScrn, trans_color); + } + +@@ -1007,31 +1007,31 @@ FUNC_NAME(RADEONSubsequentScanlineImageWriteRect)(ScrnInfoPtr pScrn, + if (pScrn->bitsPerPixel == 8) shift = 3; + else if (pScrn->bitsPerPixel == 16) shift = 1; + +- info->scanline_h = h; +- info->scanline_words = (w * info->scanline_bpp + 31) >> 5; ++ info->accel_state->scanline_h = h; ++ info->accel_state->scanline_words = (w * info->accel_state->scanline_bpp + 31) >> 5; + + #ifdef __alpha__ + /* Always use indirect for Alpha */ + if (0) + #else +- if ((info->scanline_words * h) <= 9) ++ if ((info->accel_state->scanline_words * h) <= 9) + #endif + { + /* Turn on direct for less than 9 dword colour expansion */ +- info->scratch_buffer[0] ++ info->accel_state->scratch_buffer[0] + = (unsigned char *)(ADDRREG(RADEON_HOST_DATA_LAST) +- - (info->scanline_words - 1)); +- info->scanline_direct = 1; ++ - (info->accel_state->scanline_words - 1)); ++ info->accel_state->scanline_direct = 1; + } else { + /* Use indirect for anything else */ +- info->scratch_buffer[0] = info->scratch_save; +- info->scanline_direct = 0; ++ info->accel_state->scratch_buffer[0] = info->accel_state->scratch_save; ++ info->accel_state->scanline_direct = 0; + } + +- BEGIN_ACCEL(5 + (info->scanline_direct ? +- (info->scanline_words * h) : 0)); ++ BEGIN_ACCEL(5 + (info->accel_state->scanline_direct ? ++ (info->accel_state->scanline_words * h) : 0)); + +- OUT_ACCEL_REG(RADEON_DST_PITCH_OFFSET, info->dst_pitch_offset | ++ OUT_ACCEL_REG(RADEON_DST_PITCH_OFFSET, info->accel_state->dst_pitch_offset | + ((info->tilingEnabled && (y <= pScrn->virtualY)) ? RADEON_DST_TILE_MACRO : 0)); + OUT_ACCEL_REG(RADEON_SC_TOP_LEFT, (y << 16) | ((x+skipleft) + & 0xffff)); +@@ -1050,17 +1050,17 @@ FUNC_NAME(RADEONSubsequentScanlineImageWriteRect)(ScrnInfoPtr pScrn, + if (pScrn->bitsPerPixel == 8) pad = 3; + else if (pScrn->bitsPerPixel == 16) pad = 1; + +- info->scanline_x = x; +- info->scanline_y = y; ++ info->accel_state->scanline_x = x; ++ info->accel_state->scanline_y = y; + /* Have to pad the width here and use clipping engine */ +- info->scanline_w = (w + pad) & ~pad; +- info->scanline_h = h; ++ info->accel_state->scanline_w = (w + pad) & ~pad; ++ info->accel_state->scanline_h = h; + +- info->scanline_x1clip = x + skipleft; +- info->scanline_x2clip = x + w; ++ info->accel_state->scanline_x1clip = x + skipleft; ++ info->accel_state->scanline_x2clip = x + w; + +- info->scanline_words = (w * info->scanline_bpp + 31) / 32; +- info->scanline_hpass = min(h,(CP_BUFSIZE/info->scanline_words)); ++ info->accel_state->scanline_words = (w * info->accel_state->scanline_bpp + 31) / 32; ++ info->accel_state->scanline_hpass = min(h,(CP_BUFSIZE/info->accel_state->scanline_words)); + + RADEONCPScanlinePacket(pScrn, 0); + +@@ -1110,7 +1110,7 @@ FUNC_NAME(RADEONSetClippingRectangle)(ScrnInfoPtr pScrn, + + BEGIN_ACCEL(3); + +- OUT_ACCEL_REG(RADEON_DP_GUI_MASTER_CNTL, (info->dp_gui_master_cntl_clip ++ OUT_ACCEL_REG(RADEON_DP_GUI_MASTER_CNTL, (info->accel_state->dp_gui_master_cntl_clip + | RADEON_GMC_DST_CLIPPING)); + OUT_ACCEL_REG(RADEON_SC_TOP_LEFT, tmp1); + OUT_ACCEL_REG(RADEON_SC_BOTTOM_RIGHT, tmp2); +@@ -1122,7 +1122,7 @@ FUNC_NAME(RADEONSetClippingRectangle)(ScrnInfoPtr pScrn, + RADEON_WAIT_2D_IDLECLEAN | RADEON_WAIT_DMA_GUI_IDLE); + FINISH_ACCEL(); + +- FUNC_NAME(RADEONSetTransparency)(pScrn, info->trans_color); ++ FUNC_NAME(RADEONSetTransparency)(pScrn, info->accel_state->trans_color); + } + + /* Disable the clipping rectangle */ +@@ -1134,7 +1134,7 @@ FUNC_NAME(RADEONDisableClipping)(ScrnInfoPtr pScrn) + + BEGIN_ACCEL(3); + +- OUT_ACCEL_REG(RADEON_DP_GUI_MASTER_CNTL, info->dp_gui_master_cntl_clip); ++ OUT_ACCEL_REG(RADEON_DP_GUI_MASTER_CNTL, info->accel_state->dp_gui_master_cntl_clip); + OUT_ACCEL_REG(RADEON_SC_TOP_LEFT, 0); + OUT_ACCEL_REG(RADEON_SC_BOTTOM_RIGHT, (RADEON_DEFAULT_SC_RIGHT_MAX | + RADEON_DEFAULT_SC_BOTTOM_MAX)); +@@ -1146,7 +1146,7 @@ FUNC_NAME(RADEONDisableClipping)(ScrnInfoPtr pScrn) + RADEON_WAIT_2D_IDLECLEAN | RADEON_WAIT_DMA_GUI_IDLE); + FINISH_ACCEL(); + +- FUNC_NAME(RADEONSetTransparency)(pScrn, info->trans_color); ++ FUNC_NAME(RADEONSetTransparency)(pScrn, info->accel_state->trans_color); + } + + void +@@ -1203,12 +1203,12 @@ FUNC_NAME(RADEONAccelInit)(ScreenPtr pScreen, XAAInfoRecPtr a) + | ROP_NEEDS_SOURCE + | LEFT_EDGE_CLIPPING_NEGATIVE_X); + a->NumScanlineColorExpandBuffers = 1; +- a->ScanlineColorExpandBuffers = info->scratch_buffer; +- if (!info->scratch_save) +- info->scratch_save ++ a->ScanlineColorExpandBuffers = info->accel_state->scratch_buffer; ++ if (!info->accel_state->scratch_save) ++ info->accel_state->scratch_save + = xalloc(((pScrn->virtualX+31)/32*4) + + (pScrn->virtualX * info->CurrentLayout.pixel_bytes)); +- info->scratch_buffer[0] = info->scratch_save; ++ info->accel_state->scratch_buffer[0] = info->accel_state->scratch_save; + a->SetupForScanlineCPUToScreenColorExpandFill + = FUNC_NAME(RADEONSetupForScanlineCPUToScreenColorExpandFill); + a->SubsequentScanlineCPUToScreenColorExpandFill +@@ -1299,7 +1299,7 @@ FUNC_NAME(RADEONAccelInit)(ScreenPtr pScreen, XAAInfoRecPtr a) + + /* ImageWrite */ + a->NumScanlineImageWriteBuffers = 1; +- a->ScanlineImageWriteBuffers = info->scratch_buffer; ++ a->ScanlineImageWriteBuffers = info->accel_state->scratch_buffer; + a->SetupForScanlineImageWrite + = FUNC_NAME(RADEONSetupForScanlineImageWrite); + a->SubsequentScanlineImageWriteRect +diff --git a/src/radeon_atombios.c b/src/radeon_atombios.c +index 20aa722..851014b 100644 +--- a/src/radeon_atombios.c ++++ b/src/radeon_atombios.c +@@ -501,11 +501,11 @@ rhdAtomASICInit(atomBiosHandlePtr handle) + RHDAtomBiosFunc(handle->scrnIndex, handle, + GET_DEFAULT_ENGINE_CLOCK, + &data); +- asicInit.sASICInitClocks.ulDefaultEngineClock = data.val / 10;/*in 10 Khz*/ ++ asicInit.sASICInitClocks.ulDefaultEngineClock = cpu_to_le32(data.val / 10);/*in 10 Khz*/ + RHDAtomBiosFunc(handle->scrnIndex, handle, + GET_DEFAULT_MEMORY_CLOCK, + &data); +- asicInit.sASICInitClocks.ulDefaultMemoryClock = data.val / 10;/*in 10 Khz*/ ++ asicInit.sASICInitClocks.ulDefaultMemoryClock = cpu_to_le32(data.val / 10);/*in 10 Khz*/ + data.exec.dataSpace = NULL; + data.exec.index = 0x0; + data.exec.pspace = &asicInit; +@@ -609,17 +609,6 @@ rhdAtomInit(atomBiosHandlePtr unused1, AtomBiosRequestID unused2, + #endif + handle->BIOSImageSize = BIOSImageSize; + +-# if ATOM_BIOS_PARSER +- /* Try to find out if BIOS has been posted (either by system or int10 */ +- if (!rhdAtomGetFbBaseAndSize(handle, NULL, NULL)) { +- /* run AsicInit */ +- if (!rhdAtomASICInit(handle)) +- xf86DrvMsg(scrnIndex, X_WARNING, +- "%s: AsicInit failed. Won't be able to obtain in VRAM " +- "FB scratch space\n",__func__); +- } +-# endif +- + data->atomhandle = handle; + return ATOM_SUCCESS; + +@@ -654,12 +643,18 @@ rhdAtomVramInfoQuery(atomBiosHandlePtr handle, AtomBiosRequestID func, + + switch (func) { + case GET_FW_FB_START: +- *val = le32_to_cpu(atomDataPtr->VRAM_UsageByFirmware +- ->asFirmwareVramReserveInfo[0].ulStartAddrUsedByFirmware); ++ if (atomDataPtr->VRAM_UsageByFirmware) ++ *val = le32_to_cpu(atomDataPtr->VRAM_UsageByFirmware ++ ->asFirmwareVramReserveInfo[0].ulStartAddrUsedByFirmware); ++ else ++ return ATOM_NOT_IMPLEMENTED; + break; + case GET_FW_FB_SIZE: +- *val = le16_to_cpu(atomDataPtr->VRAM_UsageByFirmware +- ->asFirmwareVramReserveInfo[0].usFirmwareUseInKb); ++ if (atomDataPtr->VRAM_UsageByFirmware) ++ *val = le16_to_cpu(atomDataPtr->VRAM_UsageByFirmware ++ ->asFirmwareVramReserveInfo[0].usFirmwareUseInKb); ++ else ++ return ATOM_NOT_IMPLEMENTED; + break; + default: + return ATOM_NOT_IMPLEMENTED; +@@ -1391,35 +1386,57 @@ const int object_connector_convert[] = + CONNECTOR_DISPLAY_PORT, + }; + +-static void +-rhdAtomParseI2CRecord(atomBiosHandlePtr handle, +- ATOM_I2C_RECORD *Record, int *ddc_line) ++xf86MonPtr radeon_atom_get_edid(xf86OutputPtr output) + { +- ErrorF(" %s: I2C Record: %s[%x] EngineID: %x I2CAddr: %x\n", +- __func__, +- Record->sucI2cId.bfHW_Capable ? "HW_Line" : "GPIO_ID", +- Record->sucI2cId.bfI2C_LineMux, +- Record->sucI2cId.bfHW_EngineID, +- Record->ucI2CAddr); +- +- if (!*(unsigned char *)&(Record->sucI2cId)) +- *ddc_line = 0; +- else { +- if (Record->ucI2CAddr != 0) +- return; +- +- if (Record->sucI2cId.bfHW_Capable) { +- switch(Record->sucI2cId.bfI2C_LineMux) { +- case 0: *ddc_line = 0x7e40; break; +- case 1: *ddc_line = 0x7e50; break; +- case 2: *ddc_line = 0x7e30; break; +- default: break; +- } +- return; +- } else { +- /* add GPIO pin parsing */ +- } +- } ++ RADEONOutputPrivatePtr radeon_output = output->driver_private; ++ RADEONInfoPtr info = RADEONPTR(output->scrn); ++ READ_EDID_FROM_HW_I2C_DATA_PS_ALLOCATION edid_data; ++ AtomBiosArgRec data; ++ unsigned char *space; ++ int i2c_clock = 50; ++ int engine_clk = info->sclk * 100; ++ int prescale; ++ unsigned char *edid; ++ xf86MonPtr mon = NULL; ++ ++ if (!radeon_output->ddc_i2c.hw_capable) ++ return mon; ++ ++ if (info->atomBIOS->fbBase) ++ edid = (unsigned char *)info->FB + info->atomBIOS->fbBase; ++ else if (info->atomBIOS->scratchBase) ++ edid = (unsigned char *)info->atomBIOS->scratchBase; ++ else ++ return mon; ++ ++ memset(edid, 0, ATOM_EDID_RAW_DATASIZE); ++ ++ if (info->ChipFamily == CHIP_FAMILY_R520) ++ prescale = (127 << 8) + (engine_clk * 10) / (4 * 127 * i2c_clock); ++ else if (info->ChipFamily < CHIP_FAMILY_R600) ++ prescale = (((engine_clk * 10)/(4 * 128 * 100) + 1) << 8) + 128; ++ else ++ prescale = (info->pll.reference_freq * 10) / i2c_clock; ++ ++ edid_data.usPrescale = prescale; ++ edid_data.usVRAMAddress = 0; ++ edid_data.ucSlaveAddr = 0xa0; ++ edid_data.ucLineNumber = radeon_output->ddc_i2c.hw_line; ++ ++ data.exec.index = GetIndexIntoMasterTable(COMMAND, ReadEDIDFromHWAssistedI2C); ++ data.exec.dataSpace = (void *)&space; ++ data.exec.pspace = &edid_data; ++ ++ if (RHDAtomBiosFunc(info->atomBIOS->scrnIndex, info->atomBIOS, ATOMBIOS_EXEC, &data) == ATOM_SUCCESS) ++ ErrorF("Atom Get EDID success\n"); ++ else ++ ErrorF("Atom Get EDID failed\n"); ++ ++ if (edid[1] == 0xff) ++ mon = xf86InterpretEDID(output->scrn->scrnIndex, edid); ++ ++ return mon; ++ + } + + static RADEONI2CBusRec +@@ -1450,36 +1467,53 @@ RADEONLookupGPIOLineForDDC(ScrnInfoPtr pScrn, uint8_t id) + i2c.put_data_reg = le16_to_cpu(gpio.usDataEnRegisterIndex) * 4; + i2c.get_clk_reg = le16_to_cpu(gpio.usClkY_RegisterIndex) * 4; + i2c.get_data_reg = le16_to_cpu(gpio.usDataY_RegisterIndex) * 4; ++ i2c.a_clk_reg = le16_to_cpu(gpio.usClkA_RegisterIndex) * 4; ++ i2c.a_data_reg = le16_to_cpu(gpio.usDataA_RegisterIndex) * 4; + i2c.mask_clk_mask = (1 << gpio.ucClkMaskShift); + i2c.mask_data_mask = (1 << gpio.ucDataMaskShift); + i2c.put_clk_mask = (1 << gpio.ucClkEnShift); + i2c.put_data_mask = (1 << gpio.ucDataEnShift); + i2c.get_clk_mask = (1 << gpio.ucClkY_Shift); + i2c.get_data_mask = (1 << gpio.ucDataY_Shift); ++ i2c.a_clk_mask = (1 << gpio.ucClkA_Shift); ++ i2c.a_data_mask = (1 << gpio.ucDataA_Shift); ++ i2c.hw_line = gpio.sucI2cId.sbfAccess.bfI2C_LineMux; ++ i2c.hw_capable = gpio.sucI2cId.sbfAccess.bfHW_Capable; + i2c.valid = TRUE; + + #if 0 ++ ErrorF("id: %d\n", id); ++ ErrorF("hw capable: %d\n", gpio.sucI2cId.sbfAccess.bfHW_Capable); ++ ErrorF("hw engine id: %d\n", gpio.sucI2cId.sbfAccess.bfHW_EngineID); ++ ErrorF("line mux %d\n", gpio.sucI2cId.sbfAccess.bfI2C_LineMux); + ErrorF("mask_clk_reg: 0x%x\n", gpio.usClkMaskRegisterIndex * 4); + ErrorF("mask_data_reg: 0x%x\n", gpio.usDataMaskRegisterIndex * 4); + ErrorF("put_clk_reg: 0x%x\n", gpio.usClkEnRegisterIndex * 4); + ErrorF("put_data_reg: 0x%x\n", gpio.usDataEnRegisterIndex * 4); + ErrorF("get_clk_reg: 0x%x\n", gpio.usClkY_RegisterIndex * 4); + ErrorF("get_data_reg: 0x%x\n", gpio.usDataY_RegisterIndex * 4); +- ErrorF("other_clk_reg: 0x%x\n", gpio.usClkA_RegisterIndex * 4); +- ErrorF("other_data_reg: 0x%x\n", gpio.usDataA_RegisterIndex * 4); ++ ErrorF("a_clk_reg: 0x%x\n", gpio.usClkA_RegisterIndex * 4); ++ ErrorF("a_data_reg: 0x%x\n", gpio.usDataA_RegisterIndex * 4); + ErrorF("mask_clk_mask: %d\n", gpio.ucClkMaskShift); + ErrorF("mask_data_mask: %d\n", gpio.ucDataMaskShift); + ErrorF("put_clk_mask: %d\n", gpio.ucClkEnShift); + ErrorF("put_data_mask: %d\n", gpio.ucDataEnShift); + ErrorF("get_clk_mask: %d\n", gpio.ucClkY_Shift); + ErrorF("get_data_mask: %d\n", gpio.ucDataY_Shift); +- ErrorF("other_clk_mask: %d\n", gpio.ucClkA_Shift); +- ErrorF("other_data_mask: %d\n", gpio.ucDataA_Shift); ++ ErrorF("a_clk_mask: %d\n", gpio.ucClkA_Shift); ++ ErrorF("a_data_mask: %d\n", gpio.ucDataA_Shift); + #endif + + return i2c; + } + ++static RADEONI2CBusRec ++rhdAtomParseI2CRecord(ScrnInfoPtr pScrn, atomBiosHandlePtr handle, ++ ATOM_I2C_RECORD *Record) ++{ ++ return RADEONLookupGPIOLineForDDC(pScrn, Record->sucI2cId.bfI2C_LineMux); ++} ++ + Bool + RADEONGetATOMConnectorInfoFromBIOSObject (ScrnInfoPtr pScrn) + { +@@ -1489,7 +1523,7 @@ RADEONGetATOMConnectorInfoFromBIOSObject (ScrnInfoPtr pScrn) + atomDataTablesPtr atomDataPtr; + ATOM_CONNECTOR_OBJECT_TABLE *con_obj; + ATOM_INTEGRATED_SYSTEM_INFO_V2 *igp_obj = NULL; +- int i, j, ddc_line = 0; ++ int i, j; + + atomDataPtr = info->atomBIOS->atomDataPtr; + if (!rhdAtomGetTableRevisionAndSize((ATOM_COMMON_TABLE_HEADER *)(atomDataPtr->Object_Header), &crev, &frev, &size)) +@@ -1560,15 +1594,23 @@ RADEONGetATOMConnectorInfoFromBIOSObject (ScrnInfoPtr pScrn) + break; + case ENCODER_OBJECT_ID_INTERNAL_TMDS1: + case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_TMDS1: +- info->BiosConnector[i].devices |= (1 << ATOM_DEVICE_DFP1_INDEX); +- info->BiosConnector[i].TMDSType = TMDS_INT; ++ if (info->BiosConnector[i].ConnectorType == CONNECTOR_LVDS) ++ info->BiosConnector[i].devices |= (1 << ATOM_DEVICE_LCD1_INDEX); ++ else { ++ info->BiosConnector[i].devices |= (1 << ATOM_DEVICE_DFP1_INDEX); ++ info->BiosConnector[i].TMDSType = TMDS_INT; ++ } + break; + case ENCODER_OBJECT_ID_INTERNAL_UNIPHY: +- if (num == 1) +- info->BiosConnector[i].devices |= (1 << ATOM_DEVICE_DFP1_INDEX); +- else +- info->BiosConnector[i].devices |= (1 << ATOM_DEVICE_DFP2_INDEX); +- info->BiosConnector[i].TMDSType = TMDS_UNIPHY; ++ if (info->BiosConnector[i].ConnectorType == CONNECTOR_LVDS) ++ info->BiosConnector[i].devices |= (1 << ATOM_DEVICE_LCD1_INDEX); ++ else { ++ if (num == 1) ++ info->BiosConnector[i].devices |= (1 << ATOM_DEVICE_DFP1_INDEX); ++ else ++ info->BiosConnector[i].devices |= (1 << ATOM_DEVICE_DFP2_INDEX); ++ info->BiosConnector[i].TMDSType = TMDS_UNIPHY; ++ } + break; + case ENCODER_OBJECT_ID_INTERNAL_TMDS2: + case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DVO1: +@@ -1577,8 +1619,12 @@ RADEONGetATOMConnectorInfoFromBIOSObject (ScrnInfoPtr pScrn) + break; + case ENCODER_OBJECT_ID_INTERNAL_LVTM1: + case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_LVTMA: +- info->BiosConnector[i].devices |= (1 << ATOM_DEVICE_DFP3_INDEX); +- info->BiosConnector[i].TMDSType = TMDS_LVTMA; ++ if (info->BiosConnector[i].ConnectorType == CONNECTOR_LVDS) ++ info->BiosConnector[i].devices |= (1 << ATOM_DEVICE_LCD1_INDEX); ++ else { ++ info->BiosConnector[i].devices |= (1 << ATOM_DEVICE_DFP3_INDEX); ++ info->BiosConnector[i].TMDSType = TMDS_LVTMA; ++ } + break; + case ENCODER_OBJECT_ID_INTERNAL_DAC1: + case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DAC1: +@@ -1617,10 +1663,8 @@ RADEONGetATOMConnectorInfoFromBIOSObject (ScrnInfoPtr pScrn) + ErrorF("record type %d\n", Record->ucRecordType); + switch (Record->ucRecordType) { + case ATOM_I2C_RECORD_TYPE: +- rhdAtomParseI2CRecord(info->atomBIOS, +- (ATOM_I2C_RECORD *)Record, +- &ddc_line); +- info->BiosConnector[i].ddc_i2c = atom_setup_i2c_bus(ddc_line); ++ info->BiosConnector[i].ddc_i2c = rhdAtomParseI2CRecord(pScrn, info->atomBIOS, ++ (ATOM_I2C_RECORD *)Record); + break; + case ATOM_HPD_INT_RECORD_TYPE: + break; +@@ -1636,6 +1680,71 @@ RADEONGetATOMConnectorInfoFromBIOSObject (ScrnInfoPtr pScrn) + } + + Bool ++RADEONGetATOMLVDSInfo(xf86OutputPtr output) ++{ ++ ScrnInfoPtr pScrn = output->scrn; ++ RADEONInfoPtr info = RADEONPTR(pScrn); ++ RADEONOutputPrivatePtr radeon_output = output->driver_private; ++ atomDataTablesPtr atomDataPtr; ++ uint8_t crev, frev; ++ ++ atomDataPtr = info->atomBIOS->atomDataPtr; ++ ++ if (!rhdAtomGetTableRevisionAndSize( ++ (ATOM_COMMON_TABLE_HEADER *)(atomDataPtr->LVDS_Info.base), ++ &frev,&crev,NULL)) { ++ return FALSE; ++ } ++ ++ switch (crev) { ++ case 1: ++ radeon_output->PanelXRes = le16_to_cpu(atomDataPtr->LVDS_Info.LVDS_Info->sLCDTiming.usHActive); ++ radeon_output->PanelYRes = le16_to_cpu(atomDataPtr->LVDS_Info.LVDS_Info->sLCDTiming.usVActive); ++ radeon_output->DotClock = le16_to_cpu(atomDataPtr->LVDS_Info.LVDS_Info->sLCDTiming.usPixClk) * 10; ++ radeon_output->HBlank = le16_to_cpu(atomDataPtr->LVDS_Info.LVDS_Info->sLCDTiming.usHBlanking_Time); ++ radeon_output->HOverPlus = le16_to_cpu(atomDataPtr->LVDS_Info.LVDS_Info->sLCDTiming.usHSyncOffset); ++ radeon_output->HSyncWidth = le16_to_cpu(atomDataPtr->LVDS_Info.LVDS_Info->sLCDTiming.usHSyncWidth); ++ radeon_output->VBlank = le16_to_cpu(atomDataPtr->LVDS_Info.LVDS_Info->sLCDTiming.usVBlanking_Time); ++ radeon_output->VOverPlus = le16_to_cpu(atomDataPtr->LVDS_Info.LVDS_Info->sLCDTiming.usVSyncOffset); ++ radeon_output->VSyncWidth = le16_to_cpu(atomDataPtr->LVDS_Info.LVDS_Info->sLCDTiming.usVSyncWidth); ++ radeon_output->PanelPwrDly = le16_to_cpu(atomDataPtr->LVDS_Info.LVDS_Info->usOffDelayInMs); ++ radeon_output->lvds_misc = atomDataPtr->LVDS_Info.LVDS_Info->ucLVDS_Misc; ++ radeon_output->lvds_ss_id = atomDataPtr->LVDS_Info.LVDS_Info->ucSS_Id; ++ break; ++ case 2: ++ radeon_output->PanelXRes = le16_to_cpu(atomDataPtr->LVDS_Info.LVDS_Info_v12->sLCDTiming.usHActive); ++ radeon_output->PanelYRes = le16_to_cpu(atomDataPtr->LVDS_Info.LVDS_Info_v12->sLCDTiming.usVActive); ++ radeon_output->DotClock = le16_to_cpu(atomDataPtr->LVDS_Info.LVDS_Info_v12->sLCDTiming.usPixClk) * 10; ++ radeon_output->HBlank = le16_to_cpu(atomDataPtr->LVDS_Info.LVDS_Info_v12->sLCDTiming.usHBlanking_Time); ++ radeon_output->HOverPlus = le16_to_cpu(atomDataPtr->LVDS_Info.LVDS_Info_v12->sLCDTiming.usHSyncOffset); ++ radeon_output->HSyncWidth = le16_to_cpu(atomDataPtr->LVDS_Info.LVDS_Info_v12->sLCDTiming.usHSyncWidth); ++ radeon_output->VBlank = le16_to_cpu(atomDataPtr->LVDS_Info.LVDS_Info_v12->sLCDTiming.usVBlanking_Time); ++ radeon_output->VOverPlus = le16_to_cpu(atomDataPtr->LVDS_Info.LVDS_Info_v12->sLCDTiming.usVSyncOffset); ++ radeon_output->VSyncWidth = le16_to_cpu(atomDataPtr->LVDS_Info.LVDS_Info_v12->sLCDTiming.usVSyncWidth); ++ radeon_output->PanelPwrDly = le16_to_cpu(atomDataPtr->LVDS_Info.LVDS_Info_v12->usOffDelayInMs); ++ radeon_output->lvds_misc = atomDataPtr->LVDS_Info.LVDS_Info_v12->ucLVDS_Misc; ++ radeon_output->lvds_ss_id = atomDataPtr->LVDS_Info.LVDS_Info_v12->ucSS_Id; ++ break; ++ } ++ ++ if (radeon_output->PanelPwrDly > 2000 || radeon_output->PanelPwrDly < 0) ++ radeon_output->PanelPwrDly = 2000; ++ ++ radeon_output->Flags = 0; ++ ++ xf86DrvMsg(pScrn->scrnIndex, X_WARNING, ++ "LVDS Info:\n" ++ "XRes: %d, YRes: %d, DotClock: %d\n" ++ "HBlank: %d, HOverPlus: %d, HSyncWidth: %d\n" ++ "VBlank: %d, VOverPlus: %d, VSyncWidth: %d\n", ++ radeon_output->PanelXRes, radeon_output->PanelYRes, radeon_output->DotClock, ++ radeon_output->HBlank, radeon_output->HOverPlus, radeon_output->HSyncWidth, ++ radeon_output->VBlank, radeon_output->VOverPlus, radeon_output->VSyncWidth); ++ ++ return TRUE; ++} ++ ++Bool + RADEONGetATOMTVInfo(xf86OutputPtr output) + { + ScrnInfoPtr pScrn = output->scrn; +@@ -1751,6 +1860,30 @@ static void RADEONApplyATOMQuirks(ScrnInfoPtr pScrn, int index) + } + } + ++ /* Falcon NW laptop lists vga ddc line for LVDS */ ++ if ((info->Chipset == PCI_CHIP_RV410_5653) && ++ (PCI_SUB_VENDOR_ID(info->PciInfo) == 0x1462) && ++ (PCI_SUB_DEVICE_ID(info->PciInfo) == 0x0291)) { ++ if (info->BiosConnector[index].ConnectorType == CONNECTOR_LVDS) { ++ info->BiosConnector[index].ddc_i2c.valid = FALSE; ++ } ++ } ++ ++ /* Funky macbooks */ ++ if ((info->Chipset == PCI_CHIP_RV530_71C5) && ++ (PCI_SUB_VENDOR_ID(info->PciInfo) == 0x106b) && ++ (PCI_SUB_DEVICE_ID(info->PciInfo) == 0x0080)) { ++ if ((index == ATOM_DEVICE_CRT1_INDEX) || ++ (index == ATOM_DEVICE_CRT2_INDEX) || ++ (index == ATOM_DEVICE_DFP2_INDEX)) ++ info->BiosConnector[index].valid = FALSE; ++ ++ if (index == ATOM_DEVICE_DFP1_INDEX) { ++ info->BiosConnector[index].DACType = DAC_TVDAC; ++ info->BiosConnector[index].devices |= (1 << ATOM_DEVICE_CRT2_INDEX); ++ } ++ } ++ + } + + Bool +@@ -2027,9 +2160,12 @@ RHDAtomBiosFunc(int scrnIndex, atomBiosHandlePtr handle, + VOID* + CailAllocateMemory(VOID *CAIL,UINT16 size) + { ++ void *ret; + CAILFUNC(CAIL); + +- return malloc(size); ++ ret = malloc(size); ++ memset(ret, 0, size); ++ return ret; + } + + VOID +@@ -2256,4 +2392,15 @@ atombios_get_command_table_version(atomBiosHandlePtr atomBIOS, int index, int *m + } + + ++UINT16 ATOM_BSWAP16(UINT16 x) ++{ ++ return bswap_16(x); ++} ++ ++UINT32 ATOM_BSWAP32(UINT32 x) ++{ ++ return bswap_32(x); ++} ++ ++ + #endif /* ATOM_BIOS */ +diff --git a/src/radeon_atombios.h b/src/radeon_atombios.h +index fe7044d..fbe8dd5 100644 +--- a/src/radeon_atombios.h ++++ b/src/radeon_atombios.h +@@ -125,12 +125,18 @@ atombios_static_pwrmgt_setup(ScrnInfoPtr pScrn, int enable); + extern Bool + RADEONGetATOMTVInfo(xf86OutputPtr output); + ++extern Bool ++RADEONGetATOMLVDSInfo(xf86OutputPtr output); ++ + extern int + atombios_external_tmds_setup(xf86OutputPtr output, DisplayModePtr mode); + + extern void + atombios_get_command_table_version(atomBiosHandlePtr atomBIOS, int index, int *major, int *minor); + ++extern xf86MonPtr ++radeon_atom_get_edid(xf86OutputPtr output); ++ + Bool + rhdAtomASICInit(atomBiosHandlePtr handle); + +diff --git a/src/radeon_atomwrapper.c b/src/radeon_atomwrapper.c +index 3e7ae01..bed1471 100644 +--- a/src/radeon_atomwrapper.c ++++ b/src/radeon_atomwrapper.c +@@ -31,6 +31,7 @@ + + #define INT32 INT32 + #include "CD_Common_Types.h" ++#include "atombios.h" + #include "CD_Definitions.h" + + +diff --git a/src/radeon_bios.c b/src/radeon_bios.c +index 529dda7..22bb5ed 100644 +--- a/src/radeon_bios.c ++++ b/src/radeon_bios.c +@@ -266,6 +266,26 @@ radeon_read_unposted_bios(ScrnInfoPtr pScrn) + return ret; + } + ++Bool ++radeon_card_posted(ScrnInfoPtr pScrn) ++{ ++ RADEONInfoPtr info = RADEONPTR(pScrn); ++ unsigned char *RADEONMMIO = info->MMIO; ++ uint32_t reg; ++ ++ if (IS_AVIVO_VARIANT) { ++ reg = INREG(AVIVO_D1CRTC_CONTROL) | INREG(AVIVO_D2CRTC_CONTROL); ++ if (reg & AVIVO_CRTC_EN) ++ return TRUE; ++ } else { ++ reg = INREG(RADEON_CRTC_GEN_CNTL) | INREG(RADEON_CRTC2_GEN_CNTL); ++ if (reg & RADEON_CRTC_EN) ++ return TRUE; ++ } ++ ++ return FALSE; ++} ++ + /* Read the Video BIOS block and the FP registers (if applicable). */ + Bool + RADEONGetBIOSInfo(ScrnInfoPtr pScrn, xf86Int10InfoPtr pInt10) +@@ -273,6 +293,7 @@ RADEONGetBIOSInfo(ScrnInfoPtr pScrn, xf86Int10InfoPtr pInt10) + RADEONInfoPtr info = RADEONPTR(pScrn); + int tmp; + unsigned short dptr; ++ Bool posted = TRUE; + + #ifdef XSERVER_LIBPCIACCESS + int size = info->PciInfo->rom_size > RADEON_VBIOS_SIZE ? info->PciInfo->rom_size : RADEON_VBIOS_SIZE; +@@ -291,6 +312,7 @@ RADEONGetBIOSInfo(ScrnInfoPtr pScrn, xf86Int10InfoPtr pInt10) + RADEON_VBIOS_SIZE); + } else if (!radeon_read_bios(pScrn)) { + (void)radeon_read_unposted_bios(pScrn); ++ posted = FALSE; + } + } + +@@ -326,7 +348,7 @@ RADEONGetBIOSInfo(ScrnInfoPtr pScrn, xf86Int10InfoPtr pInt10) + info->VBIOS = NULL; + return FALSE; + } +- ++ + tmp = info->ROMHeaderStart + 4; + if ((RADEON_BIOS8(tmp) == 'A' && + RADEON_BIOS8(tmp+1) == 'T' && +@@ -344,51 +366,65 @@ RADEONGetBIOSInfo(ScrnInfoPtr pScrn, xf86Int10InfoPtr pInt10) + info->IsAtomBios ? "ATOM":"Legacy"); + + if (info->IsAtomBios) { +- AtomBiosArgRec atomBiosArg; ++ AtomBiosArgRec atomBiosArg; + +- if (RHDAtomBiosFunc(pScrn->scrnIndex, NULL, ATOMBIOS_INIT, &atomBiosArg) +- == ATOM_SUCCESS) { +- info->atomBIOS = atomBiosArg.atomhandle; +- } ++ if (RHDAtomBiosFunc(pScrn->scrnIndex, NULL, ATOMBIOS_INIT, &atomBiosArg) ++ == ATOM_SUCCESS) { ++ info->atomBIOS = atomBiosArg.atomhandle; ++ } + +- atomBiosArg.fb.start = info->FbFreeStart; +- atomBiosArg.fb.size = info->FbFreeSize; +- if (RHDAtomBiosFunc(pScrn->scrnIndex, info->atomBIOS, ATOMBIOS_ALLOCATE_FB_SCRATCH, ++ atomBiosArg.fb.start = info->FbFreeStart; ++ atomBiosArg.fb.size = info->FbFreeSize; ++ if (RHDAtomBiosFunc(pScrn->scrnIndex, info->atomBIOS, ATOMBIOS_ALLOCATE_FB_SCRATCH, + &atomBiosArg) == ATOM_SUCCESS) { + + info->FbFreeStart = atomBiosArg.fb.start; + info->FbFreeSize = atomBiosArg.fb.size; +- } +- +- RHDAtomBiosFunc(pScrn->scrnIndex, info->atomBIOS, GET_DEFAULT_ENGINE_CLOCK, +- &atomBiosArg); +- RHDAtomBiosFunc(pScrn->scrnIndex, info->atomBIOS, GET_DEFAULT_MEMORY_CLOCK, +- &atomBiosArg); +- RHDAtomBiosFunc(pScrn->scrnIndex, info->atomBIOS, +- GET_MAX_PIXEL_CLOCK_PLL_OUTPUT, &atomBiosArg); +- RHDAtomBiosFunc(pScrn->scrnIndex, info->atomBIOS, +- GET_MIN_PIXEL_CLOCK_PLL_OUTPUT, &atomBiosArg); +- RHDAtomBiosFunc(pScrn->scrnIndex, info->atomBIOS, +- GET_MAX_PIXEL_CLOCK_PLL_INPUT, &atomBiosArg); +- RHDAtomBiosFunc(pScrn->scrnIndex, info->atomBIOS, ++ } ++ ++ RHDAtomBiosFunc(pScrn->scrnIndex, info->atomBIOS, GET_DEFAULT_ENGINE_CLOCK, ++ &atomBiosArg); ++ RHDAtomBiosFunc(pScrn->scrnIndex, info->atomBIOS, GET_DEFAULT_MEMORY_CLOCK, ++ &atomBiosArg); ++ RHDAtomBiosFunc(pScrn->scrnIndex, info->atomBIOS, ++ GET_MAX_PIXEL_CLOCK_PLL_OUTPUT, &atomBiosArg); ++ RHDAtomBiosFunc(pScrn->scrnIndex, info->atomBIOS, ++ GET_MIN_PIXEL_CLOCK_PLL_OUTPUT, &atomBiosArg); ++ RHDAtomBiosFunc(pScrn->scrnIndex, info->atomBIOS, ++ GET_MAX_PIXEL_CLOCK_PLL_INPUT, &atomBiosArg); ++ RHDAtomBiosFunc(pScrn->scrnIndex, info->atomBIOS, + GET_MIN_PIXEL_CLOCK_PLL_INPUT, &atomBiosArg); +- RHDAtomBiosFunc(pScrn->scrnIndex, info->atomBIOS, ++ RHDAtomBiosFunc(pScrn->scrnIndex, info->atomBIOS, + GET_MAX_PIXEL_CLK, &atomBiosArg); +- RHDAtomBiosFunc(pScrn->scrnIndex, info->atomBIOS, +- GET_REF_CLOCK, &atomBiosArg); ++ RHDAtomBiosFunc(pScrn->scrnIndex, info->atomBIOS, ++ GET_REF_CLOCK, &atomBiosArg); + + info->MasterDataStart = RADEON_BIOS16 (info->ROMHeaderStart + 32); + } ++ ++ /* We are a bit too quick at using this "unposted" to re-post the ++ * card. This causes some problems with VT switch on some machines, ++ * so let's work around this for now by only POSTing if none of the ++ * CRTCs are enabled ++ */ ++ if ((!posted) && info->VBIOS) { ++ posted = radeon_card_posted(pScrn); ++ } ++ ++ if ((!posted) && info->VBIOS) { ++ if (info->IsAtomBios) { ++ if (!rhdAtomASICInit(info->atomBIOS)) ++ xf86DrvMsg(pScrn->scrnIndex, X_WARNING, ++ "%s: AsicInit failed.\n",__func__); ++ } else { + #if 0 +- else { +- /* non-primary card may need posting */ +- if (!pInt10) { +- xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Attempting to POST via BIOS tables\n"); ++ xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Attempting to POST via legacy BIOS tables\n"); + RADEONGetBIOSInitTableOffsets(pScrn); + RADEONPostCardFromBIOSTables(pScrn); ++#endif + } + } +-#endif ++ + return TRUE; + } + +@@ -397,7 +433,7 @@ static Bool RADEONGetATOMConnectorInfoFromBIOS (ScrnInfoPtr pScrn) + RADEONInfoPtr info = RADEONPTR (pScrn); + + if (!info->VBIOS) return FALSE; +- ++ + if (RADEONGetATOMConnectorInfoFromBIOSObject(pScrn)) + return TRUE; + +@@ -411,28 +447,41 @@ static void RADEONApplyLegacyQuirks(ScrnInfoPtr pScrn, int index) + { + RADEONInfoPtr info = RADEONPTR (pScrn); + +- /* on XPRESS chips, CRT2_DDC and MONID_DCC both use the +- * MONID gpio, but use different pins. +- * CRT2_DDC uses the standard pinout, MONID_DDC uses +- * something else. ++ /* For RS300/RS350/RS400 chips, there is no primary DAC. Force VGA port to use TVDAC ++ * Also there is no internal TMDS + */ ++ if ((info->ChipFamily == CHIP_FAMILY_RS300) || ++ (info->ChipFamily == CHIP_FAMILY_RS400) || ++ (info->ChipFamily == CHIP_FAMILY_RS480)) { ++ info->BiosConnector[index].DACType = DAC_TVDAC; ++ info->BiosConnector[index].TMDSType = TMDS_EXT; ++ } ++ ++ /* XPRESS DDC quirks */ + if ((info->ChipFamily == CHIP_FAMILY_RS400 || + info->ChipFamily == CHIP_FAMILY_RS480) && +- info->BiosConnector[index].ConnectorType == CONNECTOR_VGA && + info->BiosConnector[index].ddc_i2c.mask_clk_reg == RADEON_GPIO_CRT2_DDC) { + info->BiosConnector[index].ddc_i2c = legacy_setup_i2c_bus(RADEON_GPIO_MONID); +- } +- +- /* XPRESS desktop chips seem to have a proprietary connector listed for +- * DVI-D, try and do the right thing here. +- */ +- if ((!info->IsMobility) && +- (info->BiosConnector[index].ConnectorType == CONNECTOR_LVDS)) { +- xf86DrvMsg(pScrn->scrnIndex, X_WARNING, +- "Proprietary connector found, assuming DVI-D\n"); +- info->BiosConnector[index].DACType = DAC_NONE; +- info->BiosConnector[index].TMDSType = TMDS_EXT; +- info->BiosConnector[index].ConnectorType = CONNECTOR_DVI_D; ++ } else if ((info->ChipFamily == CHIP_FAMILY_RS400 || ++ info->ChipFamily == CHIP_FAMILY_RS480) && ++ info->BiosConnector[index].ddc_i2c.mask_clk_reg == RADEON_GPIO_MONID) { ++ info->BiosConnector[index].ddc_i2c.valid = TRUE; ++ info->BiosConnector[index].ddc_i2c.mask_clk_mask = (0x20 << 8); ++ info->BiosConnector[index].ddc_i2c.mask_data_mask = 0x80; ++ info->BiosConnector[index].ddc_i2c.a_clk_mask = (0x20 << 8); ++ info->BiosConnector[index].ddc_i2c.a_data_mask = 0x80; ++ info->BiosConnector[index].ddc_i2c.put_clk_mask = (0x20 << 8); ++ info->BiosConnector[index].ddc_i2c.put_data_mask = 0x80; ++ info->BiosConnector[index].ddc_i2c.get_clk_mask = (0x20 << 8); ++ info->BiosConnector[index].ddc_i2c.get_data_mask = 0x80; ++ info->BiosConnector[index].ddc_i2c.mask_clk_reg = RADEON_GPIOPAD_MASK; ++ info->BiosConnector[index].ddc_i2c.mask_data_reg = RADEON_GPIOPAD_MASK; ++ info->BiosConnector[index].ddc_i2c.a_clk_reg = RADEON_GPIOPAD_A; ++ info->BiosConnector[index].ddc_i2c.a_data_reg = RADEON_GPIOPAD_A; ++ info->BiosConnector[index].ddc_i2c.put_clk_reg = RADEON_GPIOPAD_EN; ++ info->BiosConnector[index].ddc_i2c.put_data_reg = RADEON_GPIOPAD_EN; ++ info->BiosConnector[index].ddc_i2c.get_clk_reg = RADEON_LCD_GPIO_Y_REG; ++ info->BiosConnector[index].ddc_i2c.get_data_reg = RADEON_LCD_GPIO_Y_REG; + } + + /* Certain IBM chipset RN50s have a BIOS reporting two VGAs, +@@ -454,6 +503,16 @@ static void RADEONApplyLegacyQuirks(ScrnInfoPtr pScrn, int index) + } + } + ++ /* X300 card with extra non-existent DVI port */ ++ if (info->Chipset == PCI_CHIP_RV370_5B60 && ++ PCI_SUB_VENDOR_ID(info->PciInfo) == 0x17af && ++ PCI_SUB_DEVICE_ID(info->PciInfo) == 0x201e && ++ index == 2) { ++ if (info->BiosConnector[index].ConnectorType == CONNECTOR_DVI_I) { ++ info->BiosConnector[index].valid = FALSE; ++ } ++ } ++ + } + + static Bool RADEONGetLegacyConnectorInfoFromBIOS (ScrnInfoPtr pScrn) +@@ -479,7 +538,7 @@ static Bool RADEONGetLegacyConnectorInfoFromBIOS (ScrnInfoPtr pScrn) + ConnectorType = (tmp >> 12) & 0xf; + switch (ConnectorType) { + case CONNECTOR_PROPRIETARY_LEGACY: +- info->BiosConnector[i].ConnectorType = CONNECTOR_LVDS; ++ info->BiosConnector[i].ConnectorType = CONNECTOR_DVI_D; + break; + case CONNECTOR_CRT_LEGACY: + info->BiosConnector[i].ConnectorType = CONNECTOR_VGA; +@@ -528,10 +587,6 @@ static Bool RADEONGetLegacyConnectorInfoFromBIOS (ScrnInfoPtr pScrn) + else + info->BiosConnector[i].DACType = DAC_PRIMARY; + +- /* For RS300/RS350/RS400 chips, there is no primary DAC. Force VGA port to use TVDAC*/ +- if (info->IsIGP) +- info->BiosConnector[i].DACType = DAC_TVDAC; +- + if ((tmp >> 4) & 0x1) + info->BiosConnector[i].TMDSType = TMDS_EXT; + else +@@ -560,7 +615,10 @@ static Bool RADEONGetLegacyConnectorInfoFromBIOS (ScrnInfoPtr pScrn) + } + + /* check LVDS table */ +- if (info->IsMobility) { ++ /* RS4xx can be mobile or desktop so check the connectors */ ++ if (info->IsMobility || ++ info->ChipFamily == CHIP_FAMILY_RS400 || ++ info->ChipFamily == CHIP_FAMILY_RS480) { + offset = RADEON_BIOS16(info->ROMHeaderStart + 0x40); + if (offset) { + info->BiosConnector[4].valid = TRUE; +@@ -591,10 +649,10 @@ static Bool RADEONGetLegacyConnectorInfoFromBIOS (ScrnInfoPtr pScrn) + break; + case DDC_LCD: + info->BiosConnector[4].ddc_i2c = legacy_setup_i2c_bus(RADEON_LCD_GPIO_MASK); +- info->BiosConnector[4].ddc_i2c.mask_clk_mask = +- RADEON_BIOS32(tmp0 + 0x03) | RADEON_BIOS32(tmp0 + 0x07); +- info->BiosConnector[4].ddc_i2c.mask_data_mask = +- RADEON_BIOS32(tmp0 + 0x03) | RADEON_BIOS32(tmp0 + 0x07); ++ info->BiosConnector[4].ddc_i2c.mask_clk_mask = RADEON_BIOS32(tmp0 + 0x03); ++ info->BiosConnector[4].ddc_i2c.mask_data_mask = RADEON_BIOS32(tmp0 + 0x07); ++ info->BiosConnector[4].ddc_i2c.a_clk_mask = RADEON_BIOS32(tmp0 + 0x03); ++ info->BiosConnector[4].ddc_i2c.a_data_mask = RADEON_BIOS32(tmp0 + 0x07); + info->BiosConnector[4].ddc_i2c.put_clk_mask = RADEON_BIOS32(tmp0 + 0x03); + info->BiosConnector[4].ddc_i2c.put_data_mask = RADEON_BIOS32(tmp0 + 0x07); + info->BiosConnector[4].ddc_i2c.get_clk_mask = RADEON_BIOS32(tmp0 + 0x03); +@@ -602,10 +660,10 @@ static Bool RADEONGetLegacyConnectorInfoFromBIOS (ScrnInfoPtr pScrn) + break; + case DDC_GPIO: + info->BiosConnector[4].ddc_i2c = legacy_setup_i2c_bus(RADEON_MDGPIO_EN_REG); +- info->BiosConnector[4].ddc_i2c.mask_clk_mask = +- RADEON_BIOS32(tmp0 + 0x03) | RADEON_BIOS32(tmp0 + 0x07); +- info->BiosConnector[4].ddc_i2c.mask_data_mask = +- RADEON_BIOS32(tmp0 + 0x03) | RADEON_BIOS32(tmp0 + 0x07); ++ info->BiosConnector[4].ddc_i2c.mask_clk_mask = RADEON_BIOS32(tmp0 + 0x03); ++ info->BiosConnector[4].ddc_i2c.mask_data_mask = RADEON_BIOS32(tmp0 + 0x07); ++ info->BiosConnector[4].ddc_i2c.a_clk_mask = RADEON_BIOS32(tmp0 + 0x03); ++ info->BiosConnector[4].ddc_i2c.a_data_mask = RADEON_BIOS32(tmp0 + 0x07); + info->BiosConnector[4].ddc_i2c.put_clk_mask = RADEON_BIOS32(tmp0 + 0x03); + info->BiosConnector[4].ddc_i2c.put_data_mask = RADEON_BIOS32(tmp0 + 0x07); + info->BiosConnector[4].ddc_i2c.get_clk_mask = RADEON_BIOS32(tmp0 + 0x03); +@@ -917,30 +975,9 @@ Bool RADEONGetLVDSInfoFromBIOS (xf86OutputPtr output) + + if (!info->VBIOS) return FALSE; + +- if (info->IsAtomBios) { +- if((tmp = RADEON_BIOS16 (info->MasterDataStart + 16))) { +- +- radeon_output->PanelXRes = RADEON_BIOS16(tmp+6); +- radeon_output->PanelYRes = RADEON_BIOS16(tmp+10); +- radeon_output->DotClock = RADEON_BIOS16(tmp+4)*10; +- radeon_output->HBlank = RADEON_BIOS16(tmp+8); +- radeon_output->HOverPlus = RADEON_BIOS16(tmp+14); +- radeon_output->HSyncWidth = RADEON_BIOS16(tmp+16); +- radeon_output->VBlank = RADEON_BIOS16(tmp+12); +- radeon_output->VOverPlus = RADEON_BIOS16(tmp+18); +- radeon_output->VSyncWidth = RADEON_BIOS16(tmp+20); +- radeon_output->PanelPwrDly = RADEON_BIOS16(tmp+40); +- +- if (radeon_output->PanelPwrDly > 2000 || radeon_output->PanelPwrDly < 0) +- radeon_output->PanelPwrDly = 2000; +- +- radeon_output->Flags = 0; +- } else { +- xf86DrvMsg(pScrn->scrnIndex, X_WARNING, +- "No LVDS Info Table found in BIOS!\n"); +- return FALSE; +- } +- } else { ++ if (info->IsAtomBios) ++ return RADEONGetATOMLVDSInfo(output); ++ else { + + tmp = RADEON_BIOS16(info->ROMHeaderStart + 0x40); + +@@ -963,7 +1000,7 @@ Bool RADEONGetLVDSInfoFromBIOS (xf86OutputPtr output) + radeon_output->PanelYRes = RADEON_BIOS16(tmp+27); + xf86DrvMsg(0, X_INFO, "Panel Size from BIOS: %dx%d\n", + radeon_output->PanelXRes, radeon_output->PanelYRes); +- ++ + radeon_output->PanelPwrDly = RADEON_BIOS16(tmp+44); + if (radeon_output->PanelPwrDly > 2000 || radeon_output->PanelPwrDly < 0) + radeon_output->PanelPwrDly = 2000; +@@ -1118,6 +1155,50 @@ Bool RADEONGetTMDSInfoFromBIOS (xf86OutputPtr output) + return FALSE; + } + ++static RADEONI2CBusRec ++RADEONLookupI2CBlock(ScrnInfoPtr pScrn, int id) ++{ ++ RADEONInfoPtr info = RADEONPTR (pScrn); ++ int offset, blocks, i; ++ RADEONI2CBusRec i2c; ++ ++ memset(&i2c, 0, sizeof(RADEONI2CBusRec)); ++ i2c.valid = FALSE; ++ ++ offset = RADEON_BIOS16(info->ROMHeaderStart + 0x70); ++ if (offset) { ++ blocks = RADEON_BIOS8(offset + 2); ++ for (i = 0; i < blocks; i++) { ++ int i2c_id = RADEON_BIOS8(offset + 3 + (i * 5) + 0); ++ if (id == i2c_id) { ++ int reg = RADEON_BIOS16(offset + 3 + (i * 5) + 1) * 4; ++ int clock_shift = RADEON_BIOS8(offset + 3 + (i * 5) + 3); ++ int data_shift = RADEON_BIOS8(offset + 3 + (i * 5) + 4); ++ ++ i2c.mask_clk_mask = (1 << clock_shift); ++ i2c.mask_data_mask = (1 << data_shift); ++ i2c.a_clk_mask = (1 << clock_shift); ++ i2c.a_data_mask = (1 << data_shift); ++ i2c.put_clk_mask = (1 << clock_shift); ++ i2c.put_data_mask = (1 << data_shift); ++ i2c.get_clk_mask = (1 << clock_shift); ++ i2c.get_data_mask = (1 << data_shift); ++ i2c.mask_clk_reg = reg; ++ i2c.mask_data_reg = reg; ++ i2c.a_clk_reg = reg; ++ i2c.a_data_reg = reg; ++ i2c.put_clk_reg = reg; ++ i2c.put_data_reg = reg; ++ i2c.get_clk_reg = reg; ++ i2c.get_data_reg = reg; ++ i2c.valid = TRUE; ++ break; ++ } ++ } ++ } ++ return i2c; ++} ++ + Bool RADEONGetExtTMDSInfoFromBIOS (xf86OutputPtr output) + { + ScrnInfoPtr pScrn = output->scrn; +@@ -1129,6 +1210,52 @@ Bool RADEONGetExtTMDSInfoFromBIOS (xf86OutputPtr output) + + if (info->IsAtomBios) { + return FALSE; ++ } else if (info->IsIGP) { ++ /* RS4xx TMDS stuff is in the mobile table */ ++ offset = RADEON_BIOS16(info->ROMHeaderStart + 0x42); ++ if (offset) { ++ int rev = RADEON_BIOS8(offset); ++ if (rev >= 6) { ++ offset = RADEON_BIOS16(offset + 0x17); ++ if (offset) { ++ offset = RADEON_BIOS16(offset + 2); ++ rev = RADEON_BIOS8(offset); ++ if (offset && (rev > 1)) { ++ int blocks = RADEON_BIOS8(offset + 3); ++ int index = offset + 4; ++ radeon_output->dvo_i2c.valid = FALSE; ++ while (blocks > 0) { ++ int id = RADEON_BIOS16(index); ++ index += 2; ++ switch (id >> 13) { ++ case 0: ++ index += 6; ++ break; ++ case 2: ++ index += 10; ++ break; ++ case 3: ++ index += 2; ++ break; ++ case 4: ++ index += 2; ++ break; ++ case 6: ++ radeon_output->dvo_i2c_slave_addr = ++ RADEON_BIOS16(index) & 0xff; ++ index += 2; ++ radeon_output->dvo_i2c = ++ RADEONLookupI2CBlock(pScrn, RADEON_BIOS8(index)); ++ return TRUE; ++ default: ++ break; ++ } ++ blocks--; ++ } ++ } ++ } ++ } ++ } + } else { + offset = RADEON_BIOS16(info->ROMHeaderStart + 0x58); + if (offset) { +@@ -1148,10 +1275,11 @@ Bool RADEONGetExtTMDSInfoFromBIOS (xf86OutputPtr output) + radeon_output->dvo_i2c = legacy_setup_i2c_bus(RADEON_GPIO_VGA_DDC); + else if (gpio_reg == 4) + radeon_output->dvo_i2c = legacy_setup_i2c_bus(RADEON_GPIO_CRT2_DDC); +- else if (gpio_reg == 5) ++ else if (gpio_reg == 5) { + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "unsupported MM gpio_reg\n"); +- else { ++ return FALSE; ++ } else { + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "Unknown gpio reg: %d\n", gpio_reg); + return FALSE; +@@ -1179,12 +1307,82 @@ Bool RADEONInitExtTMDSInfoFromBIOS (xf86OutputPtr output) + unsigned char *RADEONMMIO = info->MMIO; + RADEONOutputPrivatePtr radeon_output = output->driver_private; + int offset, index, id; +- uint32_t val, reg, andmask, ormask; ++ uint32_t val, reg, and_mask, or_mask; + + if (!info->VBIOS) return FALSE; + + if (info->IsAtomBios) { + return FALSE; ++ } else if (info->IsIGP) { ++ /* RS4xx TMDS stuff is in the mobile table */ ++ offset = RADEON_BIOS16(info->ROMHeaderStart + 0x42); ++ if (offset) { ++ int rev = RADEON_BIOS8(offset); ++ if (rev >= 6) { ++ offset = RADEON_BIOS16(offset + 0x17); ++ if (offset) { ++ offset = RADEON_BIOS16(offset + 2); ++ rev = RADEON_BIOS8(offset); ++ if (offset && (rev > 1)) { ++ int blocks = RADEON_BIOS8(offset + 3); ++ index = offset + 4; ++ while (blocks > 0) { ++ id = RADEON_BIOS16(index); ++ index += 2; ++ switch (id >> 13) { ++ case 0: ++ reg = (id & 0x1fff) * 4; ++ val = RADEON_BIOS32(index); ++ index += 4; ++ ErrorF("MMIO: 0x%x 0x%x\n", ++ (unsigned)reg, (unsigned)val); ++ OUTREG(reg, val); ++ break; ++ case 2: ++ reg = (id & 0x1fff) * 4; ++ and_mask = RADEON_BIOS32(index); ++ index += 4; ++ or_mask = RADEON_BIOS32(index); ++ index += 4; ++ ErrorF("MMIO mask: 0x%x 0x%x 0x%x\n", ++ (unsigned)reg, (unsigned)and_mask, (unsigned)or_mask); ++ val = INREG(reg); ++ val = (val & and_mask) | or_mask; ++ OUTREG(reg, val); ++ break; ++ case 3: ++ val = RADEON_BIOS16(index); ++ index += 2; ++ ErrorF("delay: %u\n", (unsigned)val); ++ usleep(val); ++ break; ++ case 4: ++ val = RADEON_BIOS16(index); ++ index += 2; ++ ErrorF("delay: %u\n", (unsigned)val * 1000); ++ usleep(val * 1000); ++ break; ++ case 6: ++ index++; ++ reg = RADEON_BIOS8(index); ++ index++; ++ val = RADEON_BIOS8(index); ++ index++; ++ ErrorF("i2c write: 0x%x, 0x%x\n", (unsigned)reg, ++ (unsigned)val); ++ RADEONDVOWriteByte(radeon_output->DVOChip, reg, val); ++ break; ++ default: ++ ErrorF("unknown id %d\n", id>>13); ++ return FALSE; ++ } ++ blocks--; ++ } ++ return TRUE; ++ } ++ } ++ } ++ } + } else { + offset = RADEON_BIOS16(info->ROMHeaderStart + 0x58); + if (offset) { +@@ -1194,24 +1392,24 @@ Bool RADEONInitExtTMDSInfoFromBIOS (xf86OutputPtr output) + index += 2; + switch(id >> 13) { + case 0: +- reg = id & 0x1fff; ++ reg = (id & 0x1fff) * 4; + val = RADEON_BIOS32(index); + index += 4; +- ErrorF("WRITE INDEXED: 0x%x 0x%x\n", ++ ErrorF("MMIO: 0x%x 0x%x\n", + (unsigned)reg, (unsigned)val); +- /*OUTREG(reg, val);*/ ++ OUTREG(reg, val); + break; + case 2: +- reg = id & 0x1fff; +- andmask = RADEON_BIOS32(index); ++ reg = (id & 0x1fff) * 4; ++ and_mask = RADEON_BIOS32(index); + index += 4; +- ormask = RADEON_BIOS32(index); ++ or_mask = RADEON_BIOS32(index); + index += 4; + val = INREG(reg); +- val = (val & andmask) | ormask; +- ErrorF("MASK DIRECT: 0x%x 0x%x 0x%x\n", +- (unsigned)reg, (unsigned)andmask, (unsigned)ormask); +- /*OUTREG(reg, val);*/ ++ val = (val & and_mask) | or_mask; ++ ErrorF("MMIO mask: 0x%x 0x%x 0x%x\n", ++ (unsigned)reg, (unsigned)and_mask, (unsigned)or_mask); ++ OUTREG(reg, val); + break; + case 4: + val = RADEON_BIOS16(index); +@@ -1221,15 +1419,15 @@ Bool RADEONInitExtTMDSInfoFromBIOS (xf86OutputPtr output) + break; + case 5: + reg = id & 0x1fff; +- andmask = RADEON_BIOS32(index); ++ and_mask = RADEON_BIOS32(index); + index += 4; +- ormask = RADEON_BIOS32(index); ++ or_mask = RADEON_BIOS32(index); + index += 4; +- ErrorF("MASK PLL: 0x%x 0x%x 0x%x\n", +- (unsigned)reg, (unsigned)andmask, (unsigned)ormask); +- /*val = INPLL(pScrn, reg); +- val = (val & andmask) | ormask; +- OUTPLL(pScrn, reg, val);*/ ++ ErrorF("PLL mask: 0x%x 0x%x 0x%x\n", ++ (unsigned)reg, (unsigned)and_mask, (unsigned)or_mask); ++ val = INPLL(pScrn, reg); ++ val = (val & and_mask) | or_mask; ++ OUTPLL(pScrn, reg, val); + break; + case 6: + reg = id & 0x1fff; +diff --git a/src/radeon_chipinfo_gen.h b/src/radeon_chipinfo_gen.h +index ed3174a..daaf717 100644 +--- a/src/radeon_chipinfo_gen.h ++++ b/src/radeon_chipinfo_gen.h +@@ -1,6 +1,7 @@ + /* This file is autogenerated please do not edit */ + RADEONCardInfo RADEONCards[] = { + { 0x3150, CHIP_FAMILY_RV380, 1, 0, 0, 0, 0 }, ++ { 0x3151, CHIP_FAMILY_RV380, 0, 0, 0, 0, 0 }, + { 0x3152, CHIP_FAMILY_RV380, 1, 0, 0, 0, 0 }, + { 0x3154, CHIP_FAMILY_RV380, 1, 0, 0, 0, 0 }, + { 0x3E50, CHIP_FAMILY_RV380, 0, 0, 0, 0, 0 }, +@@ -250,6 +251,9 @@ RADEONCardInfo RADEONCards[] = { + { 0x940A, CHIP_FAMILY_R600, 0, 0, 0, 0, 0 }, + { 0x940B, CHIP_FAMILY_R600, 0, 0, 0, 0, 0 }, + { 0x940F, CHIP_FAMILY_R600, 0, 0, 0, 0, 0 }, ++ { 0x9440, CHIP_FAMILY_RV770, 0, 0, 0, 0, 0 }, ++ { 0x9441, CHIP_FAMILY_RV770, 0, 0, 0, 0, 0 }, ++ { 0x9442, CHIP_FAMILY_RV770, 0, 0, 0, 0, 0 }, + { 0x94C0, CHIP_FAMILY_RV610, 0, 0, 0, 0, 0 }, + { 0x94C1, CHIP_FAMILY_RV610, 0, 0, 0, 0, 0 }, + { 0x94C3, CHIP_FAMILY_RV610, 0, 0, 0, 0, 0 }, +@@ -267,6 +271,7 @@ RADEONCardInfo RADEONCards[] = { + { 0x9507, CHIP_FAMILY_RV670, 0, 0, 0, 0, 0 }, + { 0x950F, CHIP_FAMILY_RV670, 0, 0, 0, 0, 0 }, + { 0x9511, CHIP_FAMILY_RV670, 0, 0, 0, 0, 0 }, ++ { 0x9515, CHIP_FAMILY_RV670, 0, 0, 0, 0, 0 }, + { 0x9580, CHIP_FAMILY_RV630, 0, 0, 0, 0, 0 }, + { 0x9581, CHIP_FAMILY_RV630, 1, 0, 0, 0, 0 }, + { 0x9583, CHIP_FAMILY_RV630, 1, 0, 0, 0, 0 }, +diff --git a/src/radeon_chipset_gen.h b/src/radeon_chipset_gen.h +index d1761d2..79b094a 100644 +--- a/src/radeon_chipset_gen.h ++++ b/src/radeon_chipset_gen.h +@@ -1,6 +1,7 @@ + /* This file is autogenerated please do not edit */ + static SymTabRec RADEONChipsets[] = { + { PCI_CHIP_RV380_3150, "ATI Radeon Mobility X600 (M24) 3150 (PCIE)" }, ++ { PCI_CHIP_RV380_3151, "ATI FireMV 2400 (PCI)" }, + { PCI_CHIP_RV380_3152, "ATI Radeon Mobility X300 (M24) 3152 (PCIE)" }, + { PCI_CHIP_RV380_3154, "ATI FireGL M24 GL 3154 (PCIE)" }, + { PCI_CHIP_RV380_3E50, "ATI Radeon X600 (RV380) 3E50 (PCIE)" }, +@@ -250,6 +251,9 @@ static SymTabRec RADEONChipsets[] = { + { PCI_CHIP_R600_940A, "ATI FireGL V8650" }, + { PCI_CHIP_R600_940B, "ATI FireGL V8600" }, + { PCI_CHIP_R600_940F, "ATI FireGL V7600" }, ++ { PCI_CHIP_RV770_9440, "ATI Radeon 4800 Series" }, ++ { PCI_CHIP_RV770_9441, "ATI Radeon HD 4870 x2" }, ++ { PCI_CHIP_RV770_9442, "ATI Radeon 4800 Series" }, + { PCI_CHIP_RV610_94C0, "ATI RV610" }, + { PCI_CHIP_RV610_94C1, "ATI Radeon HD 2400 XT" }, + { PCI_CHIP_RV610_94C3, "ATI Radeon HD 2400 Pro" }, +@@ -267,6 +271,7 @@ static SymTabRec RADEONChipsets[] = { + { PCI_CHIP_RV670_9507, "ATI RV670" }, + { PCI_CHIP_RV670_950F, "ATI Radeon HD3870 X2" }, + { PCI_CHIP_RV670_9511, "ATI FireGL V7700" }, ++ { PCI_CHIP_RV670_9515, "ATI Radeon HD3850" }, + { PCI_CHIP_RV630_9580, "ATI RV630" }, + { PCI_CHIP_RV630_9581, "ATI Mobility Radeon HD 2600" }, + { PCI_CHIP_RV630_9583, "ATI Mobility Radeon HD 2600 XT" }, +diff --git a/src/radeon_common.h b/src/radeon_common.h +deleted file mode 100644 +index 193c1f9..0000000 +--- a/src/radeon_common.h ++++ /dev/null +@@ -1,496 +0,0 @@ +-/* radeon_common.h -- common header definitions for Radeon 2D/3D/DRM suite +- * +- * Copyright 2000 VA Linux Systems, Inc., Fremont, California. +- * Copyright 2002 Tungsten Graphics, Inc., Cedar Park, Texas. +- * All Rights Reserved. +- * +- * Permission is hereby granted, free of charge, to any person obtaining a +- * copy of this software and associated documentation files (the "Software"), +- * to deal in the Software without restriction, including without limitation +- * the rights to use, copy, modify, merge, publish, distribute, sublicense, +- * and/or sell copies of the Software, and to permit persons to whom the +- * Software is furnished to do so, subject to the following conditions: +- * +- * The above copyright notice and this permission notice (including the next +- * paragraph) shall be included in all copies or substantial portions of the +- * Software. +- * +- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +- * PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR +- * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +- * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +- * DEALINGS IN THE SOFTWARE. +- * +- * Author: +- * Gareth Hughes <gareth@valinux.com> +- * Kevin E. Martin <martin@valinux.com> +- * Keith Whitwell <keith@tungstengraphics.com> +- * +- * Converted to common header format: +- * Jens Owen <jens@tungstengraphics.com> +- * +- */ +- +-#ifndef _RADEON_COMMON_H_ +-#define _RADEON_COMMON_H_ +- +-#include <inttypes.h> +-#include "xf86drm.h" +- +-/* WARNING: If you change any of these defines, make sure to change +- * the kernel include file as well (radeon_drm.h) +- */ +- +-/* Driver specific DRM command indices +- * NOTE: these are not OS specific, but they are driver specific +- */ +-#define DRM_RADEON_CP_INIT 0x00 +-#define DRM_RADEON_CP_START 0x01 +-#define DRM_RADEON_CP_STOP 0x02 +-#define DRM_RADEON_CP_RESET 0x03 +-#define DRM_RADEON_CP_IDLE 0x04 +-#define DRM_RADEON_RESET 0x05 +-#define DRM_RADEON_FULLSCREEN 0x06 +-#define DRM_RADEON_SWAP 0x07 +-#define DRM_RADEON_CLEAR 0x08 +-#define DRM_RADEON_VERTEX 0x09 +-#define DRM_RADEON_INDICES 0x0a +-#define DRM_RADEON_STIPPLE 0x0c +-#define DRM_RADEON_INDIRECT 0x0d +-#define DRM_RADEON_TEXTURE 0x0e +-#define DRM_RADEON_VERTEX2 0x0f +-#define DRM_RADEON_CMDBUF 0x10 +-#define DRM_RADEON_GETPARAM 0x11 +-#define DRM_RADEON_FLIP 0x12 +-#define DRM_RADEON_ALLOC 0x13 +-#define DRM_RADEON_FREE 0x14 +-#define DRM_RADEON_INIT_HEAP 0x15 +-#define DRM_RADEON_IRQ_EMIT 0x16 +-#define DRM_RADEON_IRQ_WAIT 0x17 +-#define DRM_RADEON_CP_RESUME 0x18 +-#define DRM_RADEON_SETPARAM 0x19 +-#define DRM_RADEON_SURF_ALLOC 0x1a +-#define DRM_RADEON_SURF_FREE 0x1b +-#define DRM_RADEON_MAX_DRM_COMMAND_INDEX 0x39 +- +- +-#define RADEON_FRONT 0x1 +-#define RADEON_BACK 0x2 +-#define RADEON_DEPTH 0x4 +-#define RADEON_STENCIL 0x8 +- +-#define RADEON_CLEAR_X1 0 +-#define RADEON_CLEAR_Y1 1 +-#define RADEON_CLEAR_X2 2 +-#define RADEON_CLEAR_Y2 3 +-#define RADEON_CLEAR_DEPTH 4 +- +- +-typedef struct { +- enum { +- DRM_RADEON_INIT_CP = 0x01, +- DRM_RADEON_CLEANUP_CP = 0x02, +- DRM_RADEON_INIT_R200_CP = 0x03, +- DRM_RADEON_INIT_R300_CP = 0x04 +- } func; +- unsigned long sarea_priv_offset; +- int is_pci; +- int cp_mode; +- int gart_size; +- int ring_size; +- int usec_timeout; +- +- unsigned int fb_bpp; +- unsigned int front_offset, front_pitch; +- unsigned int back_offset, back_pitch; +- unsigned int depth_bpp; +- unsigned int depth_offset, depth_pitch; +- +- unsigned long fb_offset; +- unsigned long mmio_offset; +- unsigned long ring_offset; +- unsigned long ring_rptr_offset; +- unsigned long buffers_offset; +- unsigned long gart_textures_offset; +-} drmRadeonInit; +- +-typedef struct { +- int flush; +- int idle; +-} drmRadeonCPStop; +- +-typedef struct { +- int idx; +- int start; +- int end; +- int discard; +-} drmRadeonIndirect; +- +-typedef union drmRadeonClearR { +- float f[5]; +- unsigned int ui[5]; +-} drmRadeonClearRect; +- +-typedef struct drmRadeonClearT { +- unsigned int flags; +- unsigned int clear_color; +- unsigned int clear_depth; +- unsigned int color_mask; +- unsigned int depth_mask; /* misnamed field: should be stencil */ +- drmRadeonClearRect *depth_boxes; +-} drmRadeonClearType; +- +-typedef struct drmRadeonFullscreenT { +- enum { +- RADEON_INIT_FULLSCREEN = 0x01, +- RADEON_CLEANUP_FULLSCREEN = 0x02 +- } func; +-} drmRadeonFullscreenType; +- +-typedef struct { +- unsigned int *mask; +-} drmRadeonStipple; +- +-typedef struct { +- unsigned int x; +- unsigned int y; +- unsigned int width; +- unsigned int height; +- const void *data; +-} drmRadeonTexImage; +- +-typedef struct { +- unsigned int offset; +- int pitch; +- int format; +- int width; /* Texture image coordinates */ +- int height; +- drmRadeonTexImage *image; +-} drmRadeonTexture; +- +- +-#define RADEON_MAX_TEXTURE_UNITS 3 +- +-/* Layout matches drm_radeon_state_t in linux drm_radeon.h. +- */ +-typedef struct { +- struct { +- unsigned int pp_misc; /* 0x1c14 */ +- unsigned int pp_fog_color; +- unsigned int re_solid_color; +- unsigned int rb3d_blendcntl; +- unsigned int rb3d_depthoffset; +- unsigned int rb3d_depthpitch; +- unsigned int rb3d_zstencilcntl; +- unsigned int pp_cntl; /* 0x1c38 */ +- unsigned int rb3d_cntl; +- unsigned int rb3d_coloroffset; +- unsigned int re_width_height; +- unsigned int rb3d_colorpitch; +- } context; +- struct { +- unsigned int se_cntl; +- } setup1; +- struct { +- unsigned int se_coord_fmt; /* 0x1c50 */ +- } vertex; +- struct { +- unsigned int re_line_pattern; /* 0x1cd0 */ +- unsigned int re_line_state; +- unsigned int se_line_width; /* 0x1db8 */ +- } line; +- struct { +- unsigned int pp_lum_matrix; /* 0x1d00 */ +- unsigned int pp_rot_matrix_0; /* 0x1d58 */ +- unsigned int pp_rot_matrix_1; +- } bumpmap; +- struct { +- unsigned int rb3d_stencilrefmask; /* 0x1d7c */ +- unsigned int rb3d_ropcntl; +- unsigned int rb3d_planemask; +- } mask; +- struct { +- unsigned int se_vport_xscale; /* 0x1d98 */ +- unsigned int se_vport_xoffset; +- unsigned int se_vport_yscale; +- unsigned int se_vport_yoffset; +- unsigned int se_vport_zscale; +- unsigned int se_vport_zoffset; +- } viewport; +- struct { +- unsigned int se_cntl_status; /* 0x2140 */ +- } setup2; +- struct { +- unsigned int re_top_left; /*ignored*/ /* 0x26c0 */ +- unsigned int re_misc; +- } misc; +- struct { +- unsigned int pp_txfilter; +- unsigned int pp_txformat; +- unsigned int pp_txoffset; +- unsigned int pp_txcblend; +- unsigned int pp_txablend; +- unsigned int pp_tfactor; +- unsigned int pp_border_color; +- } texture[RADEON_MAX_TEXTURE_UNITS]; +- struct { +- unsigned int se_zbias_factor; +- unsigned int se_zbias_constant; +- } zbias; +- unsigned int dirty; +-} drmRadeonState; +- +-/* 1.1 vertex ioctl. Used in compatibility modes. +- */ +-typedef struct { +- int prim; +- int idx; /* Index of vertex buffer */ +- int count; /* Number of vertices in buffer */ +- int discard; /* Client finished with buffer? */ +-} drmRadeonVertex; +- +-typedef struct { +- unsigned int start; +- unsigned int finish; +- unsigned int prim:8; +- unsigned int stateidx:8; +- unsigned int numverts:16; /* overloaded as offset/64 for elt prims */ +- unsigned int vc_format; +-} drmRadeonPrim; +- +-typedef struct { +- int idx; /* Index of vertex buffer */ +- int discard; /* Client finished with buffer? */ +- int nr_states; +- drmRadeonState *state; +- int nr_prims; +- drmRadeonPrim *prim; +-} drmRadeonVertex2; +- +-#define RADEON_MAX_STATES 16 +-#define RADEON_MAX_PRIMS 64 +- +-/* Command buffer. Replace with true dma stream? +- */ +-typedef struct { +- int bufsz; +- char *buf; +- int nbox; +- drm_clip_rect_t *boxes; +-} drmRadeonCmdBuffer; +- +-/* New style per-packet identifiers for use in cmd_buffer ioctl with +- * the RADEON_EMIT_PACKET command. Comments relate new packets to old +- * state bits and the packet size: +- */ +-#define RADEON_EMIT_PP_MISC 0 /* context/7 */ +-#define RADEON_EMIT_PP_CNTL 1 /* context/3 */ +-#define RADEON_EMIT_RB3D_COLORPITCH 2 /* context/1 */ +-#define RADEON_EMIT_RE_LINE_PATTERN 3 /* line/2 */ +-#define RADEON_EMIT_SE_LINE_WIDTH 4 /* line/1 */ +-#define RADEON_EMIT_PP_LUM_MATRIX 5 /* bumpmap/1 */ +-#define RADEON_EMIT_PP_ROT_MATRIX_0 6 /* bumpmap/2 */ +-#define RADEON_EMIT_RB3D_STENCILREFMASK 7 /* masks/3 */ +-#define RADEON_EMIT_SE_VPORT_XSCALE 8 /* viewport/6 */ +-#define RADEON_EMIT_SE_CNTL 9 /* setup/2 */ +-#define RADEON_EMIT_SE_CNTL_STATUS 10 /* setup/1 */ +-#define RADEON_EMIT_RE_MISC 11 /* misc/1 */ +-#define RADEON_EMIT_PP_TXFILTER_0 12 /* tex0/6 */ +-#define RADEON_EMIT_PP_BORDER_COLOR_0 13 /* tex0/1 */ +-#define RADEON_EMIT_PP_TXFILTER_1 14 /* tex1/6 */ +-#define RADEON_EMIT_PP_BORDER_COLOR_1 15 /* tex1/1 */ +-#define RADEON_EMIT_PP_TXFILTER_2 16 /* tex2/6 */ +-#define RADEON_EMIT_PP_BORDER_COLOR_2 17 /* tex2/1 */ +-#define RADEON_EMIT_SE_ZBIAS_FACTOR 18 /* zbias/2 */ +-#define RADEON_EMIT_SE_TCL_OUTPUT_VTX_FMT 19 /* tcl/11 */ +-#define RADEON_EMIT_SE_TCL_MATERIAL_EMMISSIVE_RED 20 /* material/17 */ +-#define R200_EMIT_PP_TXCBLEND_0 21 /* tex0/4 */ +-#define R200_EMIT_PP_TXCBLEND_1 22 /* tex1/4 */ +-#define R200_EMIT_PP_TXCBLEND_2 23 /* tex2/4 */ +-#define R200_EMIT_PP_TXCBLEND_3 24 /* tex3/4 */ +-#define R200_EMIT_PP_TXCBLEND_4 25 /* tex4/4 */ +-#define R200_EMIT_PP_TXCBLEND_5 26 /* tex5/4 */ +-#define R200_EMIT_PP_TXCBLEND_6 27 /* /4 */ +-#define R200_EMIT_PP_TXCBLEND_7 28 /* /4 */ +-#define R200_EMIT_TCL_LIGHT_MODEL_CTL_0 29 /* tcl/6 */ +-#define R200_EMIT_TFACTOR_0 30 /* tf/6 */ +-#define R200_EMIT_VTX_FMT_0 31 /* vtx/4 */ +-#define R200_EMIT_VAP_CTL 32 /* vap/1 */ +-#define R200_EMIT_MATRIX_SELECT_0 33 /* msl/5 */ +-#define R200_EMIT_TEX_PROC_CTL_2 34 /* tcg/5 */ +-#define R200_EMIT_TCL_UCP_VERT_BLEND_CTL 35 /* tcl/1 */ +-#define R200_EMIT_PP_TXFILTER_0 36 /* tex0/6 */ +-#define R200_EMIT_PP_TXFILTER_1 37 /* tex1/6 */ +-#define R200_EMIT_PP_TXFILTER_2 38 /* tex2/6 */ +-#define R200_EMIT_PP_TXFILTER_3 39 /* tex3/6 */ +-#define R200_EMIT_PP_TXFILTER_4 40 /* tex4/6 */ +-#define R200_EMIT_PP_TXFILTER_5 41 /* tex5/6 */ +-#define R200_EMIT_PP_TXOFFSET_0 42 /* tex0/1 */ +-#define R200_EMIT_PP_TXOFFSET_1 43 /* tex1/1 */ +-#define R200_EMIT_PP_TXOFFSET_2 44 /* tex2/1 */ +-#define R200_EMIT_PP_TXOFFSET_3 45 /* tex3/1 */ +-#define R200_EMIT_PP_TXOFFSET_4 46 /* tex4/1 */ +-#define R200_EMIT_PP_TXOFFSET_5 47 /* tex5/1 */ +-#define R200_EMIT_VTE_CNTL 48 /* vte/1 */ +-#define R200_EMIT_OUTPUT_VTX_COMP_SEL 49 /* vtx/1 */ +-#define R200_EMIT_PP_TAM_DEBUG3 50 /* tam/1 */ +-#define R200_EMIT_PP_CNTL_X 51 /* cst/1 */ +-#define R200_EMIT_RB3D_DEPTHXY_OFFSET 52 /* cst/1 */ +-#define R200_EMIT_RE_AUX_SCISSOR_CNTL 53 /* cst/1 */ +-#define R200_EMIT_RE_SCISSOR_TL_0 54 /* cst/2 */ +-#define R200_EMIT_RE_SCISSOR_TL_1 55 /* cst/2 */ +-#define R200_EMIT_RE_SCISSOR_TL_2 56 /* cst/2 */ +-#define R200_EMIT_SE_VAP_CNTL_STATUS 57 /* cst/1 */ +-#define R200_EMIT_SE_VTX_STATE_CNTL 58 /* cst/1 */ +-#define R200_EMIT_RE_POINTSIZE 59 /* cst/1 */ +-#define R200_EMIT_TCL_INPUT_VTX_VECTOR_ADDR_0 60 /* cst/4 */ +-#define R200_EMIT_PP_CUBIC_FACES_0 61 +-#define R200_EMIT_PP_CUBIC_OFFSETS_0 62 +-#define R200_EMIT_PP_CUBIC_FACES_1 63 +-#define R200_EMIT_PP_CUBIC_OFFSETS_1 64 +-#define R200_EMIT_PP_CUBIC_FACES_2 65 +-#define R200_EMIT_PP_CUBIC_OFFSETS_2 66 +-#define R200_EMIT_PP_CUBIC_FACES_3 67 +-#define R200_EMIT_PP_CUBIC_OFFSETS_3 68 +-#define R200_EMIT_PP_CUBIC_FACES_4 69 +-#define R200_EMIT_PP_CUBIC_OFFSETS_4 70 +-#define R200_EMIT_PP_CUBIC_FACES_5 71 +-#define R200_EMIT_PP_CUBIC_OFFSETS_5 72 +-#define RADEON_EMIT_PP_TEX_SIZE_0 73 +-#define RADEON_EMIT_PP_TEX_SIZE_1 74 +-#define RADEON_EMIT_PP_TEX_SIZE_2 75 +-#define R200_EMIT_RB3D_BLENDCOLOR 76 +-#define RADEON_MAX_STATE_PACKETS 77 +- +- +-/* Commands understood by cmd_buffer ioctl. More can be added but +- * obviously these can't be removed or changed: +- */ +-#define RADEON_CMD_PACKET 1 /* emit one of the register packets above */ +-#define RADEON_CMD_SCALARS 2 /* emit scalar data */ +-#define RADEON_CMD_VECTORS 3 /* emit vector data */ +-#define RADEON_CMD_DMA_DISCARD 4 /* discard current dma buf */ +-#define RADEON_CMD_PACKET3 5 /* emit hw packet */ +-#define RADEON_CMD_PACKET3_CLIP 6 /* emit hw packet wrapped in cliprects */ +-#define RADEON_CMD_SCALARS2 7 /* R200 stopgap */ +-#define RADEON_CMD_WAIT 8 /* synchronization */ +- +-typedef union { +- int i; +- struct { +- unsigned char cmd_type, pad0, pad1, pad2; +- } header; +- struct { +- unsigned char cmd_type, packet_id, pad0, pad1; +- } packet; +- struct { +- unsigned char cmd_type, offset, stride, count; +- } scalars; +- struct { +- unsigned char cmd_type, offset, stride, count; +- } vectors; +- struct { +- unsigned char cmd_type, buf_idx, pad0, pad1; +- } dma; +- struct { +- unsigned char cmd_type, flags, pad0, pad1; +- } wait; +-} drmRadeonCmdHeader; +- +- +-#define RADEON_WAIT_2D 0x1 +-#define RADEON_WAIT_3D 0x2 +- +- +-/* 1.3: An ioctl to get parameters that aren't available to the 3d +- * client any other way. +- */ +-#define RADEON_PARAM_GART_BUFFER_OFFSET 1 /* card offset of 1st GART buffer */ +-#define RADEON_PARAM_LAST_FRAME 2 +-#define RADEON_PARAM_LAST_DISPATCH 3 +-#define RADEON_PARAM_LAST_CLEAR 4 +-/* Added with DRM version 1.6. */ +-#define RADEON_PARAM_IRQ_NR 5 +-#define RADEON_PARAM_GART_BASE 6 /* card offset of GART base */ +-/* Added with DRM version 1.8. */ +-#define RADEON_PARAM_REGISTER_HANDLE 7 /* for drmMap() */ +-#define RADEON_PARAM_STATUS_HANDLE 8 +-#define RADEON_PARAM_SAREA_HANDLE 9 +-#define RADEON_PARAM_GART_TEX_HANDLE 10 +-#define RADEON_PARAM_SCRATCH_OFFSET 11 +-#define RADEON_PARAM_CARD_TYPE 12 +-#define RADEON_PARAM_VBLANK_CRTC 13 /* VBLANK CRTC */ +-#define RADEON_PARAM_FB_LOCATION 14 /* FB location */ +-#define RADEON_PARAM_NUM_GB_PIPES 15 +- +-typedef struct drm_radeon_getparam { +- int param; +- int *value; +-} drmRadeonGetParam; +- +- +-#define RADEON_MEM_REGION_GART 1 +-#define RADEON_MEM_REGION_FB 2 +- +-typedef struct drm_radeon_mem_alloc { +- int region; +- int alignment; +- int size; +- int *region_offset; /* offset from start of fb or GART */ +-} drmRadeonMemAlloc; +- +-typedef struct drm_radeon_mem_free { +- int region; +- int region_offset; +-} drmRadeonMemFree; +- +-typedef struct drm_radeon_mem_init_heap { +- int region; +- int size; +- int start; +-} drmRadeonMemInitHeap; +- +-/* 1.6: Userspace can request & wait on irq's: +- */ +-typedef struct drm_radeon_irq_emit { +- int *irq_seq; +-} drmRadeonIrqEmit; +- +-typedef struct drm_radeon_irq_wait { +- int irq_seq; +-} drmRadeonIrqWait; +- +- +-/* 1.10: Clients tell the DRM where they think the framebuffer is located in +- * the card's address space, via a new generic ioctl to set parameters +- */ +- +-typedef struct drm_radeon_set_param { +- unsigned int param; +- int64_t value; +-} drmRadeonSetParam; +- +-#define RADEON_SETPARAM_FB_LOCATION 1 +-#define RADEON_SETPARAM_SWITCH_TILING 2 +-#define RADEON_SETPARAM_PCIGART_LOCATION 3 +-#define RADEON_SETPARAM_NEW_MEMMAP 4 +-#define RADEON_SETPARAM_PCIGART_TABLE_SIZE 5 +-#define RADEON_SETPARAM_VBLANK_CRTC 6 /* VBLANK CRTC */ +-/* 1.14: Clients can allocate/free a surface +- */ +-typedef struct drm_radeon_surface_alloc { +- unsigned int address; +- unsigned int size; +- unsigned int flags; +-} drmRadeonSurfaceAlloc; +- +-typedef struct drm_radeon_surface_free { +- unsigned int address; +-} drmRadeonSurfaceFree; +- +-#define DRM_RADEON_VBLANK_CRTC1 1 +-#define DRM_RADEON_VBLANK_CRTC2 2 +- +-#endif +diff --git a/src/radeon_commonfuncs.c b/src/radeon_commonfuncs.c +index 58fe306..dba197e 100644 +--- a/src/radeon_commonfuncs.c ++++ b/src/radeon_commonfuncs.c +@@ -58,7 +58,8 @@ static void FUNC_NAME(RADEONInit3DEngine)(ScrnInfoPtr pScrn) + uint32_t gb_tile_config, su_reg_dest, vap_cntl; + ACCEL_PREAMBLE(); + +- info->texW[0] = info->texH[0] = info->texW[1] = info->texH[1] = 1; ++ info->accel_state->texW[0] = info->accel_state->texH[0] = ++ info->accel_state->texW[1] = info->accel_state->texH[1] = 1; + + if (IS_R300_3D || IS_R500_3D) { + +@@ -70,7 +71,7 @@ static void FUNC_NAME(RADEONInit3DEngine)(ScrnInfoPtr pScrn) + + gb_tile_config = (R300_ENABLE_TILING | R300_TILE_SIZE_16 | R300_SUBPIXEL_1_16); + +- switch(info->num_gb_pipes) { ++ switch(info->accel_state->num_gb_pipes) { + case 2: gb_tile_config |= R300_PIPE_COUNT_R300; break; + case 3: gb_tile_config |= R300_PIPE_COUNT_R420_3P; break; + case 4: gb_tile_config |= R300_PIPE_COUNT_R420; break; +@@ -87,7 +88,7 @@ static void FUNC_NAME(RADEONInit3DEngine)(ScrnInfoPtr pScrn) + FINISH_ACCEL(); + + if (IS_R500_3D) { +- su_reg_dest = ((1 << info->num_gb_pipes) - 1); ++ su_reg_dest = ((1 << info->accel_state->num_gb_pipes) - 1); + BEGIN_ACCEL(2); + OUT_ACCEL_REG(R500_SU_REG_DEST, su_reg_dest); + OUT_ACCEL_REG(R500_VAP_INDEX_OFFSET, 0); +@@ -146,7 +147,7 @@ static void FUNC_NAME(RADEONInit3DEngine)(ScrnInfoPtr pScrn) + FINISH_ACCEL(); + + /* setup the VAP */ +- if (info->has_tcl) ++ if (info->accel_state->has_tcl) + vap_cntl = ((5 << R300_PVS_NUM_SLOTS_SHIFT) | + (5 << R300_PVS_NUM_CNTLRS_SHIFT) | + (9 << R300_VF_MAX_VTX_NUM_SHIFT)); +@@ -158,25 +159,26 @@ static void FUNC_NAME(RADEONInit3DEngine)(ScrnInfoPtr pScrn) + if (info->ChipFamily == CHIP_FAMILY_RV515) + vap_cntl |= (2 << R300_PVS_NUM_FPUS_SHIFT); + else if ((info->ChipFamily == CHIP_FAMILY_RV530) || +- (info->ChipFamily == CHIP_FAMILY_RV560)) ++ (info->ChipFamily == CHIP_FAMILY_RV560) || ++ (info->ChipFamily == CHIP_FAMILY_RV570)) + vap_cntl |= (5 << R300_PVS_NUM_FPUS_SHIFT); +- else if (info->ChipFamily == CHIP_FAMILY_R420) ++ else if ((info->ChipFamily == CHIP_FAMILY_RV410) || ++ (info->ChipFamily == CHIP_FAMILY_R420)) + vap_cntl |= (6 << R300_PVS_NUM_FPUS_SHIFT); + else if ((info->ChipFamily == CHIP_FAMILY_R520) || +- (info->ChipFamily == CHIP_FAMILY_R580) || +- (info->ChipFamily == CHIP_FAMILY_RV570)) ++ (info->ChipFamily == CHIP_FAMILY_R580)) + vap_cntl |= (8 << R300_PVS_NUM_FPUS_SHIFT); + else + vap_cntl |= (4 << R300_PVS_NUM_FPUS_SHIFT); + +- if (info->has_tcl) ++ if (info->accel_state->has_tcl) + BEGIN_ACCEL(15); + else + BEGIN_ACCEL(9); + OUT_ACCEL_REG(R300_VAP_VTX_STATE_CNTL, 0); + OUT_ACCEL_REG(R300_VAP_PVS_STATE_FLUSH_REG, 0); + +- if (info->has_tcl) ++ if (info->accel_state->has_tcl) + OUT_ACCEL_REG(R300_VAP_CNTL_STATUS, 0); + else + OUT_ACCEL_REG(R300_VAP_CNTL_STATUS, R300_PVS_BYPASS); +@@ -206,7 +208,7 @@ static void FUNC_NAME(RADEONInit3DEngine)(ScrnInfoPtr pScrn) + ((R300_WRITE_ENA_X | R300_WRITE_ENA_Y | R300_WRITE_ENA_Z | R300_WRITE_ENA_W) + << R300_WRITE_ENA_2_SHIFT))); + +- if (info->has_tcl) { ++ if (info->accel_state->has_tcl) { + OUT_ACCEL_REG(R300_VAP_PVS_FLOW_CNTL_OPC, 0); + OUT_ACCEL_REG(R300_VAP_GB_VERT_CLIP_ADJ, 0x3f800000); + OUT_ACCEL_REG(R300_VAP_GB_VERT_DISC_ADJ, 0x3f800000); +@@ -217,8 +219,8 @@ static void FUNC_NAME(RADEONInit3DEngine)(ScrnInfoPtr pScrn) + FINISH_ACCEL(); + + /* pre-load the vertex shaders */ +- if (info->has_tcl) { +- /* exa mask shader program */ ++ if (info->accel_state->has_tcl) { ++ /* exa mask/Xv bicubic shader program */ + BEGIN_ACCEL(13); + OUT_ACCEL_REG(R300_VAP_PVS_VECTOR_INDX_REG, 0); + /* PVS inst 0 */ +@@ -498,14 +500,14 @@ static void FUNC_NAME(RADEONInit3DEngine)(ScrnInfoPtr pScrn) + if (IS_R300_3D) { + BEGIN_ACCEL(2); + /* tex inst for src texture */ +- OUT_ACCEL_REG(R300_US_TEX_INST_0, ++ OUT_ACCEL_REG(R300_US_TEX_INST(0), + (R300_TEX_SRC_ADDR(0) | + R300_TEX_DST_ADDR(0) | + R300_TEX_ID(0) | + R300_TEX_INST(R300_TEX_INST_LD))); + + /* tex inst for mask texture */ +- OUT_ACCEL_REG(R300_US_TEX_INST_1, ++ OUT_ACCEL_REG(R300_US_TEX_INST(1), + (R300_TEX_SRC_ADDR(1) | + R300_TEX_DST_ADDR(1) | + R300_TEX_ID(1) | +@@ -514,9 +516,8 @@ static void FUNC_NAME(RADEONInit3DEngine)(ScrnInfoPtr pScrn) + } + + if (IS_R300_3D) { +- BEGIN_ACCEL(9); ++ BEGIN_ACCEL(8); + OUT_ACCEL_REG(R300_US_CONFIG, (0 << R300_NLEVEL_SHIFT) | R300_FIRST_TEX); +- OUT_ACCEL_REG(R300_US_PIXSIZE, 1); /* highest temp used */ + OUT_ACCEL_REG(R300_US_CODE_ADDR_0, + (R300_ALU_START(0) | + R300_ALU_SIZE(0) | +@@ -533,9 +534,8 @@ static void FUNC_NAME(RADEONInit3DEngine)(ScrnInfoPtr pScrn) + R300_TEX_START(0) | + R300_TEX_SIZE(0))); + } else { +- BEGIN_ACCEL(7); ++ BEGIN_ACCEL(6); + OUT_ACCEL_REG(R300_US_CONFIG, R500_ZERO_TIMES_ANYTHING_EQUALS_ZERO); +- OUT_ACCEL_REG(R300_US_PIXSIZE, 1); /* highest temp used */ + OUT_ACCEL_REG(R500_US_FC_CTRL, 0); + } + OUT_ACCEL_REG(R300_US_W_FMT, 0); +@@ -687,14 +687,14 @@ void FUNC_NAME(RADEONWaitForIdle)(ScrnInfoPtr pScrn) + + #ifdef ACCEL_CP + /* Make sure the CP is idle first */ +- if (info->CPStarted) { ++ if (info->cp->CPStarted) { + int ret; + + FLUSH_RING(); + + for (;;) { + do { +- ret = drmCommandNone(info->drmFD, DRM_RADEON_CP_IDLE); ++ ret = drmCommandNone(info->dri->drmFD, DRM_RADEON_CP_IDLE); + if (ret && ret != -EBUSY) { + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "%s: CP idle %d\n", __FUNCTION__, ret); +diff --git a/src/radeon_crtc.c b/src/radeon_crtc.c +index c63b650..9040bae 100644 +--- a/src/radeon_crtc.c ++++ b/src/radeon_crtc.c +@@ -48,8 +48,7 @@ + + #ifdef XF86DRI + #define _XF86DRI_SERVER_ +-#include "radeon_dri.h" +-#include "radeon_sarea.h" ++#include "radeon_drm.h" + #include "sarea.h" + #endif + +@@ -58,6 +57,14 @@ extern void atombios_crtc_mode_set(xf86CrtcPtr crtc, + DisplayModePtr adjusted_mode, + int x, int y); + extern void atombios_crtc_dpms(xf86CrtcPtr crtc, int mode); ++extern void ++RADEONInitDispBandwidthLegacy(ScrnInfoPtr pScrn, ++ DisplayModePtr mode1, int pixel_bytes1, ++ DisplayModePtr mode2, int pixel_bytes2); ++extern void ++RADEONInitDispBandwidthAVIVO(ScrnInfoPtr pScrn, ++ DisplayModePtr mode1, int pixel_bytes1, ++ DisplayModePtr mode2, int pixel_bytes2); + + void + radeon_crtc_dpms(xf86CrtcPtr crtc, int mode) +@@ -220,7 +227,12 @@ RADEONComputePLL(RADEONPLLPtr pll, + best_freq = current_freq; + best_error = error; + best_vco_diff = vco_diff; +- } else if ((flags & RADEON_PLL_PREFER_LOW_REF_DIV) && (ref_div < best_ref_div)) { ++ } else if (((flags & RADEON_PLL_PREFER_LOW_REF_DIV) && (ref_div < best_ref_div)) || ++ ((flags & RADEON_PLL_PREFER_HIGH_REF_DIV) && (ref_div > best_ref_div)) || ++ ((flags & RADEON_PLL_PREFER_LOW_FB_DIV) && (feedback_div < best_feedback_div)) || ++ ((flags & RADEON_PLL_PREFER_HIGH_FB_DIV) && (feedback_div > best_feedback_div)) || ++ ((flags & RADEON_PLL_PREFER_LOW_POST_DIV) && (post_div < best_post_div)) || ++ ((flags & RADEON_PLL_PREFER_HIGH_POST_DIV) && (post_div > best_post_div))) { + best_post_div = post_div; + best_ref_div = ref_div; + best_feedback_div = feedback_div; +@@ -354,7 +366,7 @@ radeon_crtc_lock(xf86CrtcPtr crtc) + RADEONInfoPtr info = RADEONPTR(pScrn); + + #ifdef XF86DRI +- if (info->CPStarted && pScrn->pScreen) { ++ if (info->cp->CPStarted && pScrn->pScreen) { + DRILock(pScrn->pScreen, 0); + if (info->accelOn) + RADEON_SYNC(info, pScrn); +@@ -375,51 +387,13 @@ radeon_crtc_unlock(xf86CrtcPtr crtc) + RADEONInfoPtr info = RADEONPTR(pScrn); + + #ifdef XF86DRI +- if (info->CPStarted && pScrn->pScreen) DRIUnlock(pScrn->pScreen); ++ if (info->cp->CPStarted && pScrn->pScreen) DRIUnlock(pScrn->pScreen); + #endif + + if (info->accelOn) + RADEON_SYNC(info, pScrn); + } + +-#ifdef USE_XAA +-/** +- * Allocates memory from the XF86 linear allocator, but also purges +- * memory if possible to cause the allocation to succeed. +- */ +-static FBLinearPtr +-radeon_xf86AllocateOffscreenLinear(ScreenPtr pScreen, int length, +- int granularity, +- MoveLinearCallbackProcPtr moveCB, +- RemoveLinearCallbackProcPtr removeCB, +- pointer privData) +-{ +- FBLinearPtr linear; +- int max_size; +- +- linear = xf86AllocateOffscreenLinear(pScreen, length, granularity, moveCB, +- removeCB, privData); +- if (linear != NULL) +- return linear; +- +- /* The above allocation didn't succeed, so purge unlocked stuff and try +- * again. +- */ +- xf86QueryLargestOffscreenLinear(pScreen, &max_size, granularity, +- PRIORITY_EXTREME); +- +- if (max_size < length) +- return NULL; +- +- xf86PurgeUnlockedOffscreenAreas(pScreen); +- +- linear = xf86AllocateOffscreenLinear(pScreen, length, granularity, moveCB, +- removeCB, privData); +- +- return linear; +-} +-#endif +- + /** + * Allocates memory for a locked-in-framebuffer shadow of the given + * width and height for this CRTC's rotated shadow framebuffer. +@@ -429,8 +403,6 @@ static void * + radeon_crtc_shadow_allocate (xf86CrtcPtr crtc, int width, int height) + { + ScrnInfoPtr pScrn = crtc->scrn; +- /* if this is called during ScreenInit() we don't have pScrn->pScreen yet */ +- ScreenPtr pScreen = screenInfo.screens[pScrn->scrnIndex]; + RADEONInfoPtr info = RADEONPTR(pScrn); + RADEONCrtcPrivatePtr radeon_crtc = crtc->driver_private; + unsigned long rotate_pitch; +@@ -441,49 +413,14 @@ radeon_crtc_shadow_allocate (xf86CrtcPtr crtc, int width, int height) + rotate_pitch = pScrn->displayWidth * cpp; + size = rotate_pitch * height; + +-#ifdef USE_EXA + /* We could get close to what we want here by just creating a pixmap like + * normal, but we have to lock it down in framebuffer, and there is no + * setter for offscreen area locking in EXA currently. So, we just + * allocate offscreen memory and fake up a pixmap header for it. + */ +- if (info->useEXA) { +- assert(radeon_crtc->rotate_mem_exa == NULL); +- +- radeon_crtc->rotate_mem_exa = exaOffscreenAlloc(pScreen, size, align, +- TRUE, NULL, NULL); +- if (radeon_crtc->rotate_mem_exa == NULL) { +- xf86DrvMsg(pScrn->scrnIndex, X_ERROR, +- "Couldn't allocate shadow memory for rotated CRTC\n"); +- return NULL; +- } +- rotate_offset = radeon_crtc->rotate_mem_exa->offset; +- } +-#endif /* USE_EXA */ +-#ifdef USE_XAA +- if (!info->useEXA) { +- /* The XFree86 linear allocator operates in units of screen pixels, +- * sadly. +- */ +- size = (size + cpp - 1) / cpp; +- align = (align + cpp - 1) / cpp; +- +- assert(radeon_crtc->rotate_mem_xaa == NULL); +- +- radeon_crtc->rotate_mem_xaa = +- radeon_xf86AllocateOffscreenLinear(pScreen, size, align, +- NULL, NULL, NULL); +- if (radeon_crtc->rotate_mem_xaa == NULL) { +- xf86DrvMsg(pScrn->scrnIndex, X_ERROR, +- "Couldn't allocate shadow memory for rotated CRTC\n"); +- return NULL; +- } +-#ifdef XF86DRI +- rotate_offset = info->frontOffset + +- radeon_crtc->rotate_mem_xaa->offset * cpp; +-#endif +- } +-#endif /* USE_XAA */ ++ rotate_offset = radeon_legacy_allocate_memory(pScrn, &radeon_crtc->crtc_rotate_mem, size, align); ++ if (rotate_offset == 0) ++ return NULL; + + return info->FB + rotate_offset; + } +@@ -523,26 +460,16 @@ static void + radeon_crtc_shadow_destroy(xf86CrtcPtr crtc, PixmapPtr rotate_pixmap, void *data) + { + ScrnInfoPtr pScrn = crtc->scrn; +- RADEONInfoPtr info = RADEONPTR(pScrn); + RADEONCrtcPrivatePtr radeon_crtc = crtc->driver_private; + + if (rotate_pixmap) + FreeScratchPixmapHeader(rotate_pixmap); +- ++ + if (data) { +-#ifdef USE_EXA +- if (info->useEXA && radeon_crtc->rotate_mem_exa != NULL) { +- exaOffscreenFree(pScrn->pScreen, radeon_crtc->rotate_mem_exa); +- radeon_crtc->rotate_mem_exa = NULL; +- } +-#endif /* USE_EXA */ +-#ifdef USE_XAA +- if (!info->useEXA) { +- xf86FreeOffscreenLinear(radeon_crtc->rotate_mem_xaa); +- radeon_crtc->rotate_mem_xaa = NULL; +- } +-#endif /* USE_XAA */ ++ radeon_legacy_free_memory(pScrn, radeon_crtc->crtc_rotate_mem); ++ radeon_crtc->crtc_rotate_mem = NULL; + } ++ + } + + static const xf86CrtcFuncsRec radeon_crtc_funcs = { +@@ -567,6 +494,43 @@ static const xf86CrtcFuncsRec radeon_crtc_funcs = { + .destroy = NULL, /* XXX */ + }; + ++void ++RADEONInitDispBandwidth(ScrnInfoPtr pScrn) ++{ ++ RADEONInfoPtr info = RADEONPTR(pScrn); ++ xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(pScrn); ++ DisplayModePtr mode1 = NULL, mode2 = NULL; ++ int pixel_bytes1 = info->CurrentLayout.pixel_bytes; ++ int pixel_bytes2 = info->CurrentLayout.pixel_bytes; ++ ++ if (xf86_config->num_crtc == 2) { ++ if (xf86_config->crtc[1]->enabled && ++ xf86_config->crtc[0]->enabled) { ++ mode1 = &xf86_config->crtc[0]->mode; ++ mode2 = &xf86_config->crtc[1]->mode; ++ } else if (xf86_config->crtc[0]->enabled) { ++ mode1 = &xf86_config->crtc[0]->mode; ++ } else if (xf86_config->crtc[1]->enabled) { ++ mode2 = &xf86_config->crtc[1]->mode; ++ } else ++ return; ++ } else { ++ if (info->IsPrimary) ++ mode1 = &xf86_config->crtc[0]->mode; ++ else if (info->IsSecondary) ++ mode2 = &xf86_config->crtc[0]->mode; ++ else if (xf86_config->crtc[0]->enabled) ++ mode1 = &xf86_config->crtc[0]->mode; ++ else ++ return; ++ } ++ ++ if (IS_AVIVO_VARIANT) ++ RADEONInitDispBandwidthAVIVO(pScrn, mode1, pixel_bytes1, mode2, pixel_bytes2); ++ else ++ RADEONInitDispBandwidthLegacy(pScrn, mode1, pixel_bytes1, mode2, pixel_bytes2); ++} ++ + Bool RADEONAllocateControllers(ScrnInfoPtr pScrn, int mask) + { + RADEONEntPtr pRADEONEnt = RADEONEntPriv(pScrn); +@@ -791,7 +755,7 @@ RADEONSetTiling(ScrnInfoPtr pScrn) + + #ifdef XF86DRI + if (info->directRenderingEnabled && (info->tilingEnabled != can_tile)) { +- RADEONSAREAPrivPtr pSAREAPriv; ++ drm_radeon_sarea_t *pSAREAPriv; + if (RADEONDRISetParam(pScrn, RADEON_SETPARAM_SWITCH_TILING, (can_tile ? 1 : 0)) < 0) + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "[drm] failed changing tiling status\n"); +diff --git a/src/radeon_cursor.c b/src/radeon_cursor.c +index c4472db..08bfddf 100644 +--- a/src/radeon_cursor.c ++++ b/src/radeon_cursor.c +@@ -209,21 +209,23 @@ radeon_crtc_set_cursor_position (xf86CrtcPtr crtc, int x, int y) + if (xorigin >= CURSOR_WIDTH) xorigin = CURSOR_WIDTH - 1; + if (yorigin >= CURSOR_HEIGHT) yorigin = CURSOR_HEIGHT - 1; + +- if (mode->Flags & V_INTERLACE) +- y /= 2; +- else if (mode->Flags & V_DBLSCAN) +- y *= 2; +- + if (IS_AVIVO_VARIANT) { + /* avivo cursor spans the full fb width */ +- x += crtc->x; +- y += crtc->y; ++ if (crtc->rotatedData == NULL) { ++ x += crtc->x; ++ y += crtc->y; ++ } + avivo_lock_cursor(crtc, TRUE); + OUTREG(AVIVO_D1CUR_POSITION + radeon_crtc->crtc_offset, ((xorigin ? 0 : x) << 16) + | (yorigin ? 0 : y)); + OUTREG(AVIVO_D1CUR_HOT_SPOT + radeon_crtc->crtc_offset, (xorigin << 16) | yorigin); + avivo_lock_cursor(crtc, FALSE); + } else { ++ if (mode->Flags & V_INTERLACE) ++ y /= 2; ++ else if (mode->Flags & V_DBLSCAN) ++ y *= 2; ++ + if (crtc_id == 0) { + OUTREG(RADEON_CUR_HORZ_VERT_OFF, (RADEON_CUR_LOCK + | (xorigin << 16) +@@ -325,49 +327,32 @@ Bool RADEONCursorInit(ScreenPtr pScreen) + int width_bytes; + int height; + int size_bytes; +- uint32_t cursor_offset = 0; + int c; + + size_bytes = CURSOR_WIDTH * 4 * CURSOR_HEIGHT; + width = pScrn->displayWidth; + width_bytes = width * (pScrn->bitsPerPixel / 8); + height = ((size_bytes * xf86_config->num_crtc) + width_bytes - 1) / width_bytes; ++ int align = IS_AVIVO_VARIANT ? 4096 : 256; + +-#ifdef USE_XAA + if (!info->useEXA) { +- int align = IS_AVIVO_VARIANT ? 4096 : 256; +- FBAreaPtr fbarea; +- +- fbarea = xf86AllocateOffscreenArea(pScreen, width, height, +- align, NULL, NULL, NULL); +- +- if (!fbarea) { +- cursor_offset = 0; +- xf86DrvMsg(pScrn->scrnIndex, X_WARNING, +- "Hardware cursor disabled" +- " due to insufficient offscreen memory\n"); +- return FALSE; +- } else { +- cursor_offset = RADEON_ALIGN((fbarea->box.x1 + +- fbarea->box.y1 * width) * +- info->CurrentLayout.pixel_bytes, +- align); +- +- for (c = 0; c < xf86_config->num_crtc; c++) { +- xf86CrtcPtr crtc = xf86_config->crtc[c]; +- RADEONCrtcPrivatePtr radeon_crtc = crtc->driver_private; +- +- radeon_crtc->cursor_offset = cursor_offset + (c * size_bytes); +- +- xf86DrvMsg(pScrn->scrnIndex, X_INFO, +- "Using hardware cursor %d (scanline %u)\n", c, +- (unsigned)(radeon_crtc->cursor_offset / pScrn->displayWidth +- / info->CurrentLayout.pixel_bytes)); +- } ++ for (c = 0; c < xf86_config->num_crtc; c++) { ++ xf86CrtcPtr crtc = xf86_config->crtc[c]; ++ RADEONCrtcPrivatePtr radeon_crtc = crtc->driver_private; + ++ radeon_crtc->cursor_offset = ++ radeon_legacy_allocate_memory(pScrn, &radeon_crtc->cursor_mem, size_bytes, align); ++ ++ if (radeon_crtc->cursor_offset == 0) ++ return FALSE; ++ ++ xf86DrvMsg(pScrn->scrnIndex, X_INFO, ++ "Will use %d kb for hardware cursor %d at offset 0x%08x\n", ++ (size_bytes * xf86_config->num_crtc) / 1024, ++ c, ++ (unsigned int)radeon_crtc->cursor_offset); + } + } +-#endif + + return xf86_cursors_init (pScreen, CURSOR_WIDTH, CURSOR_HEIGHT, + (HARDWARE_CURSOR_TRUECOLOR_AT_8BPP | +diff --git a/src/radeon_dga.c b/src/radeon_dga.c +index d623fe4..6b0fabe 100644 +--- a/src/radeon_dga.c ++++ b/src/radeon_dga.c +@@ -47,6 +47,9 @@ + /* Driver data structures */ + #include "radeon.h" + #include "radeon_probe.h" ++#ifdef XF86DRI ++#include "radeon_drm.h" ++#endif + + /* X and server generic header files */ + #include "xf86.h" +@@ -126,12 +129,12 @@ SECOND_PASS: + } + #endif /* USE_EXA */ + #ifdef USE_XAA +- if (!info->useEXA && info->accel) { +- if (info->accel->SetupForSolidFill && +- info->accel->SubsequentSolidFillRect) ++ if (!info->useEXA && info->accel_state->accel) { ++ if (info->accel_state->accel->SetupForSolidFill && ++ info->accel_state->accel->SubsequentSolidFillRect) + currentMode->flags |= DGA_FILL_RECT; +- if (info->accel->SetupForScreenToScreenCopy && +- info->accel->SubsequentScreenToScreenCopy) ++ if (info->accel_state->accel->SetupForScreenToScreenCopy && ++ info->accel_state->accel->SubsequentScreenToScreenCopy) + currentMode->flags |= DGA_BLIT_RECT | DGA_BLIT_RECT_TRANS; + if (currentMode->flags & + (DGA_PIXMAP_AVAILABLE | DGA_FILL_RECT | +@@ -265,13 +268,13 @@ Bool RADEONDGAInit(ScreenPtr pScreen) + } + #endif /* USE_EXA */ + #ifdef USE_XAA +- if (!info->useEXA && info->accel) { +- info->DGAFuncs.Sync = info->accel->Sync; +- if (info->accel->SetupForSolidFill && +- info->accel->SubsequentSolidFillRect) ++ if (!info->useEXA && info->accel_state->accel) { ++ info->DGAFuncs.Sync = info->accel_state->accel->Sync; ++ if (info->accel_state->accel->SetupForSolidFill && ++ info->accel_state->accel->SubsequentSolidFillRect) + info->DGAFuncs.FillRect = RADEON_FillRect; +- if (info->accel->SetupForScreenToScreenCopy && +- info->accel->SubsequentScreenToScreenCopy) { ++ if (info->accel_state->accel->SetupForScreenToScreenCopy && ++ info->accel_state->accel->SubsequentScreenToScreenCopy) { + info->DGAFuncs.BlitRect = RADEON_BlitRect; + info->DGAFuncs.BlitTransRect = RADEON_BlitTransRect; + } +@@ -383,8 +386,8 @@ static void RADEON_FillRect(ScrnInfoPtr pScrn, + #endif /* USE_EXA */ + #ifdef USE_XAA + if (!info->useEXA) { +- (*info->accel->SetupForSolidFill)(pScrn, color, GXcopy, (uint32_t)(~0)); +- (*info->accel->SubsequentSolidFillRect)(pScrn, x, y, w, h); ++ (*info->accel_state->accel->SetupForSolidFill)(pScrn, color, GXcopy, (uint32_t)(~0)); ++ (*info->accel_state->accel->SubsequentSolidFillRect)(pScrn, x, y, w, h); + if (pScrn->bitsPerPixel == info->CurrentLayout.bitsPerPixel) + RADEON_MARK_SYNC(info, pScrn); + } +@@ -413,10 +416,10 @@ static void RADEON_BlitRect(ScrnInfoPtr pScrn, + #endif /* USE_EXA */ + #ifdef USE_XAA + if (!info->useEXA) { +- (*info->accel->SetupForScreenToScreenCopy)(pScrn, xdir, ydir, +- GXcopy, (uint32_t)(~0), -1); +- (*info->accel->SubsequentScreenToScreenCopy)(pScrn, srcx, srcy, +- dstx, dsty, w, h); ++ (*info->accel_state->accel->SetupForScreenToScreenCopy)(pScrn, xdir, ydir, ++ GXcopy, (uint32_t)(~0), -1); ++ (*info->accel_state->accel->SubsequentScreenToScreenCopy)(pScrn, srcx, srcy, ++ dstx, dsty, w, h); + if (pScrn->bitsPerPixel == info->CurrentLayout.bitsPerPixel) + RADEON_MARK_SYNC(info, pScrn); + } +@@ -431,14 +434,14 @@ static void RADEON_BlitTransRect(ScrnInfoPtr pScrn, + int xdir = ((srcx < dstx) && (srcy == dsty)) ? -1 : 1; + int ydir = (srcy < dsty) ? -1 : 1; + +- info->XAAForceTransBlit = TRUE; +- (*info->accel->SetupForScreenToScreenCopy)(pScrn, xdir, ydir, +- GXcopy, (uint32_t)(~0), color); ++ info->accel_state->XAAForceTransBlit = TRUE; ++ (*info->accel_state->accel->SetupForScreenToScreenCopy)(pScrn, xdir, ydir, ++ GXcopy, (uint32_t)(~0), color); + +- info->XAAForceTransBlit = FALSE; ++ info->accel_state->XAAForceTransBlit = FALSE; + +- (*info->accel->SubsequentScreenToScreenCopy)(pScrn, srcx, srcy, +- dstx, dsty, w, h); ++ (*info->accel_state->accel->SubsequentScreenToScreenCopy)(pScrn, srcx, srcy, ++ dstx, dsty, w, h); + + if (pScrn->bitsPerPixel == info->CurrentLayout.bitsPerPixel) + RADEON_MARK_SYNC(info, pScrn); +diff --git a/src/radeon_dri.c b/src/radeon_dri.c +index 0fc03e4..5542d2b 100644 +--- a/src/radeon_dri.c ++++ b/src/radeon_dri.c +@@ -46,6 +46,7 @@ + #include "radeon_video.h" + #include "radeon_reg.h" + #include "radeon_macros.h" ++#include "radeon_drm.h" + #include "radeon_dri.h" + #include "radeon_version.h" + +@@ -58,10 +59,13 @@ + #define _XF86DRI_SERVER_ + #include "GL/glxtokens.h" + #include "sarea.h" +-#include "radeon_sarea.h" + + static size_t radeon_drm_page_size; + ++#define RADEON_MAX_DRAWABLES 256 ++ ++extern void GlxSetVisualConfigs(int nconfigs, __GLXvisualConfig *configs, ++ void **configprivs); + + static void RADEONDRITransitionTo2d(ScreenPtr pScreen); + static void RADEONDRITransitionTo3d(ScreenPtr pScreen); +@@ -92,7 +96,7 @@ static Bool RADEONInitVisualConfigs(ScreenPtr pScreen) + RADEONConfigPrivPtr *pRADEONConfigPtrs = 0; + int i, accum, stencil, db, use_db; + +- use_db = !info->noBackBuffer ? 1 : 0; ++ use_db = !info->dri->noBackBuffer ? 1 : 0; + + switch (info->CurrentLayout.pixel_code) { + case 8: /* 8bpp mode is not support */ +@@ -166,7 +170,7 @@ static Bool RADEONInitVisualConfigs(ScreenPtr pScreen) + pConfigs[i].doubleBuffer = FALSE; + pConfigs[i].stereo = FALSE; + pConfigs[i].bufferSize = 16; +- pConfigs[i].depthSize = info->depthBits; ++ pConfigs[i].depthSize = info->dri->depthBits; + if (pConfigs[i].depthSize == 24 ? (RADEON_USE_STENCIL - stencil) + : stencil) { + pConfigs[i].stencilSize = 8; +@@ -252,7 +256,7 @@ static Bool RADEONInitVisualConfigs(ScreenPtr pScreen) + pConfigs[i].doubleBuffer = FALSE; + pConfigs[i].stereo = FALSE; + pConfigs[i].bufferSize = 32; +- pConfigs[i].depthSize = info->depthBits; ++ pConfigs[i].depthSize = info->dri->depthBits; + if (pConfigs[i].depthSize == 24 ? (RADEON_USE_STENCIL - stencil) + : stencil) { + pConfigs[i].stencilSize = 8; +@@ -280,9 +284,9 @@ static Bool RADEONInitVisualConfigs(ScreenPtr pScreen) + break; + } + +- info->numVisualConfigs = numConfigs; +- info->pVisualConfigs = pConfigs; +- info->pVisualConfigsPriv = pRADEONConfigs; ++ info->dri->numVisualConfigs = numConfigs; ++ info->dri->pVisualConfigs = pConfigs; ++ info->dri->pVisualConfigsPriv = pRADEONConfigs; + GlxSetVisualConfigs(numConfigs, pConfigs, (void**)pRADEONConfigPtrs); + return TRUE; + } +@@ -300,8 +304,8 @@ static Bool RADEONCreateContext(ScreenPtr pScreen, VisualPtr visual, + ctx_info = (RADEONDRIContextPtr)contextStore; + if (!ctx_info) return FALSE; + +- if (drmAddMap(info->drmFD, 0, +- info->perctx_sarea_size, ++ if (drmAddMap(info->dri->drmFD, 0, ++ info->dri->perctx_sarea_size, + DRM_SHM, + DRM_REMOVABLE, + &ctx_info->sarea_handle) < 0) { +@@ -311,12 +315,12 @@ static Bool RADEONCreateContext(ScreenPtr pScreen, VisualPtr visual, + return FALSE; + } + +- if (drmAddContextPrivateMapping(info->drmFD, hwContext, ++ if (drmAddContextPrivateMapping(info->dri->drmFD, hwContext, + ctx_info->sarea_handle) < 0) { + xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "[dri] could not associate private sarea to ctx id (%d)\n", + (int)hwContext); +- drmRmMap(info->drmFD, ctx_info->sarea_handle); ++ drmRmMap(info->dri->drmFD, ctx_info->sarea_handle); + return FALSE; + } + +@@ -337,7 +341,7 @@ static void RADEONDestroyContext(ScreenPtr pScreen, drm_context_t hwContext, + ctx_info = (RADEONDRIContextPtr)contextStore; + if (!ctx_info) return; + +- if (drmRmMap(info->drmFD, ctx_info->sarea_handle) < 0) { ++ if (drmRmMap(info->dri->drmFD, ctx_info->sarea_handle) < 0) { + xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "[dri] could not remove private sarea for ctx id (%d)\n", + (int)hwContext); +@@ -356,29 +360,29 @@ static void RADEONEnterServer(ScreenPtr pScreen) + { + ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; + RADEONInfoPtr info = RADEONPTR(pScrn); +- RADEONSAREAPrivPtr pSAREAPriv; ++ drm_radeon_sarea_t *pSAREAPriv; + + + RADEON_MARK_SYNC(info, pScrn); + + pSAREAPriv = DRIGetSAREAPrivate(pScrn->pScreen); +- if (pSAREAPriv->ctxOwner != DRIGetContext(pScrn->pScreen)) { +- info->XInited3D = FALSE; +- info->needCacheFlush = (info->ChipFamily >= CHIP_FAMILY_R300); ++ if (pSAREAPriv->ctx_owner != DRIGetContext(pScrn->pScreen)) { ++ info->accel_state->XInited3D = FALSE; ++ info->cp->needCacheFlush = (info->ChipFamily >= CHIP_FAMILY_R300); + } + + #ifdef DAMAGE +- if (!info->pDamage && info->allowPageFlip) { ++ if (!info->dri->pDamage && info->dri->allowPageFlip) { + PixmapPtr pPix = pScreen->GetScreenPixmap(pScreen); +- info->pDamage = DamageCreate(NULL, NULL, DamageReportNone, TRUE, +- pScreen, pPix); ++ info->dri->pDamage = DamageCreate(NULL, NULL, DamageReportNone, TRUE, ++ pScreen, pPix); + +- if (info->pDamage == NULL) { ++ if (info->dri->pDamage == NULL) { + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "No screen damage record, page flipping disabled\n"); +- info->allowPageFlip = 0; ++ info->dri->allowPageFlip = 0; + } else { +- DamageRegister(&pPix->drawable, info->pDamage); ++ DamageRegister(&pPix->drawable, info->dri->pDamage); + + xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "Damage tracking initialized for page flipping\n"); +@@ -401,8 +405,8 @@ static void RADEONLeaveServer(ScreenPtr pScreen) + RING_LOCALS; + + #ifdef DAMAGE +- if (info->pDamage) { +- RegionPtr pDamageReg = DamageRegion(info->pDamage); ++ if (info->dri->pDamage) { ++ RegionPtr pDamageReg = DamageRegion(info->dri->pDamage); + int nrects = pDamageReg ? REGION_NUM_RECTS(pDamageReg) : 0; + + if (nrects) { +@@ -417,7 +421,7 @@ static void RADEONLeaveServer(ScreenPtr pScreen) + RADEONCP_RELEASE(pScrn, info); + + #ifdef USE_EXA +- info->engineMode = EXA_ENGINEMODE_UNKNOWN; ++ info->accel_state->engineMode = EXA_ENGINEMODE_UNKNOWN; + #endif + } + +@@ -451,17 +455,17 @@ static void RADEONDRISwapContext(ScreenPtr pScreen, DRISyncType syncType, + + /* 16-bit depth buffer functions */ + #define WRITE_DEPTH16(_x, _y, d) \ +- *(uint16_t *)(pointer)(buf + 2*(_x + _y*info->frontPitch)) = (d) ++ *(uint16_t *)(pointer)(buf + 2*(_x + _y*info->dri->frontPitch)) = (d) + + #define READ_DEPTH16(d, _x, _y) \ +- (d) = *(uint16_t *)(pointer)(buf + 2*(_x + _y*info->frontPitch)) ++ (d) = *(uint16_t *)(pointer)(buf + 2*(_x + _y*info->dri->frontPitch)) + + /* 32-bit depth buffer (stencil and depth simultaneously) functions */ + #define WRITE_DEPTHSTENCIL32(_x, _y, d) \ +- *(uint32_t *)(pointer)(buf + 4*(_x + _y*info->frontPitch)) = (d) ++ *(uint32_t *)(pointer)(buf + 4*(_x + _y*info->dri->frontPitch)) = (d) + + #define READ_DEPTHSTENCIL32(d, _x, _y) \ +- (d) = *(uint32_t *)(pointer)(buf + 4*(_x + _y*info->frontPitch)) ++ (d) = *(uint32_t *)(pointer)(buf + 4*(_x + _y*info->dri->frontPitch)) + + /* Screen to screen copy of data in the depth buffer */ + static void RADEONScreenToScreenCopyDepth(ScrnInfoPtr pScrn, +@@ -470,7 +474,7 @@ static void RADEONScreenToScreenCopyDepth(ScrnInfoPtr pScrn, + int w, int h) + { + RADEONInfoPtr info = RADEONPTR(pScrn); +- unsigned char *buf = info->FB + info->depthOffset; ++ unsigned char *buf = info->FB + info->dri->depthOffset; + int xstart, xend, xdir; + int ystart, yend, ydir; + int x, y, d; +@@ -641,12 +645,12 @@ static void RADEONDRIMoveBuffers(WindowPtr pParent, DDXPointRec ptOldOrg, + } + + /* pretty much a hack. */ +- info->dst_pitch_offset = info->backPitchOffset; ++ info->accel_state->dst_pitch_offset = info->dri->backPitchOffset; + if (info->tilingEnabled) +- info->dst_pitch_offset |= RADEON_DST_TILE_MACRO; ++ info->accel_state->dst_pitch_offset |= RADEON_DST_TILE_MACRO; + +- (*info->accel->SetupForScreenToScreenCopy)(pScrn, xdir, ydir, GXcopy, +- (uint32_t)(-1), -1); ++ (*info->accel_state->accel->SetupForScreenToScreenCopy)(pScrn, xdir, ydir, GXcopy, ++ (uint32_t)(-1), -1); + + for (; nbox-- ; pbox++) { + int xa = pbox->x1; +@@ -664,12 +668,12 @@ static void RADEONDRIMoveBuffers(WindowPtr pParent, DDXPointRec ptOldOrg, + if (w <= 0) continue; + if (h <= 0) continue; + +- (*info->accel->SubsequentScreenToScreenCopy)(pScrn, +- xa, ya, +- destx, desty, +- w, h); ++ (*info->accel_state->accel->SubsequentScreenToScreenCopy)(pScrn, ++ xa, ya, ++ destx, desty, ++ w, h); + +- if (info->depthMoves) { ++ if (info->dri->depthMoves) { + RADEONScreenToScreenCopyDepth(pScrn, + xa, ya, + destx, desty, +@@ -677,14 +681,14 @@ static void RADEONDRIMoveBuffers(WindowPtr pParent, DDXPointRec ptOldOrg, + } + } + +- info->dst_pitch_offset = info->frontPitchOffset;; ++ info->accel_state->dst_pitch_offset = info->dri->frontPitchOffset;; + + xfree(pptNew2); + xfree(pboxNew2); + xfree(pptNew1); + xfree(pboxNew1); + +- info->accel->NeedToSync = TRUE; ++ info->accel_state->accel->NeedToSync = TRUE; + #endif /* USE_XAA */ + } + +@@ -692,36 +696,36 @@ static void RADEONDRIInitGARTValues(RADEONInfoPtr info) + { + int s, l; + +- info->gartOffset = 0; ++ info->dri->gartOffset = 0; + + /* Initialize the CP ring buffer data */ +- info->ringStart = info->gartOffset; +- info->ringMapSize = info->ringSize*1024*1024 + radeon_drm_page_size; +- info->ringSizeLog2QW = RADEONMinBits(info->ringSize*1024*1024/8)-1; ++ info->dri->ringStart = info->dri->gartOffset; ++ info->dri->ringMapSize = info->dri->ringSize*1024*1024 + radeon_drm_page_size; ++ info->dri->ringSizeLog2QW = RADEONMinBits(info->dri->ringSize*1024*1024/8)-1; + +- info->ringReadOffset = info->ringStart + info->ringMapSize; +- info->ringReadMapSize = radeon_drm_page_size; ++ info->dri->ringReadOffset = info->dri->ringStart + info->dri->ringMapSize; ++ info->dri->ringReadMapSize = radeon_drm_page_size; + + /* Reserve space for vertex/indirect buffers */ +- info->bufStart = info->ringReadOffset + info->ringReadMapSize; +- info->bufMapSize = info->bufSize*1024*1024; ++ info->dri->bufStart = info->dri->ringReadOffset + info->dri->ringReadMapSize; ++ info->dri->bufMapSize = info->dri->bufSize*1024*1024; + + /* Reserve the rest for GART textures */ +- info->gartTexStart = info->bufStart + info->bufMapSize; +- s = (info->gartSize*1024*1024 - info->gartTexStart); ++ info->dri->gartTexStart = info->dri->bufStart + info->dri->bufMapSize; ++ s = (info->dri->gartSize*1024*1024 - info->dri->gartTexStart); + l = RADEONMinBits((s-1) / RADEON_NR_TEX_REGIONS); + if (l < RADEON_LOG_TEX_GRANULARITY) l = RADEON_LOG_TEX_GRANULARITY; +- info->gartTexMapSize = (s >> l) << l; +- info->log2GARTTexGran = l; ++ info->dri->gartTexMapSize = (s >> l) << l; ++ info->dri->log2GARTTexGran = l; + } + + /* Set AGP transfer mode according to requests and constraints */ + static Bool RADEONSetAgpMode(RADEONInfoPtr info, ScreenPtr pScreen) + { + unsigned char *RADEONMMIO = info->MMIO; +- unsigned long mode = drmAgpGetMode(info->drmFD); /* Default mode */ +- unsigned int vendor = drmAgpVendorId(info->drmFD); +- unsigned int device = drmAgpDeviceId(info->drmFD); ++ unsigned long mode = drmAgpGetMode(info->dri->drmFD); /* Default mode */ ++ unsigned int vendor = drmAgpVendorId(info->dri->drmFD); ++ unsigned int device = drmAgpDeviceId(info->dri->drmFD); + /* ignore agp 3.0 mode bit from the chip as it's buggy on some cards with + pcie-agp rialto bridge chip - use the one from bridge which must match */ + uint32_t agp_status = (INREG(RADEON_AGP_STATUS) | RADEON_AGPv3_MODE) & mode; +@@ -739,26 +743,26 @@ static Bool RADEONSetAgpMode(RADEONInfoPtr info, ScreenPtr pScreen) + + from = X_DEFAULT; + +- if (xf86GetOptValInteger(info->Options, OPTION_AGP_MODE, &info->agpMode)) { +- if ((info->agpMode < (is_v3 ? 4 : 1)) || +- (info->agpMode > (is_v3 ? 8 : 4)) || +- (info->agpMode & (info->agpMode - 1))) { ++ if (xf86GetOptValInteger(info->Options, OPTION_AGP_MODE, &info->dri->agpMode)) { ++ if ((info->dri->agpMode < (is_v3 ? 4 : 1)) || ++ (info->dri->agpMode > (is_v3 ? 8 : 4)) || ++ (info->dri->agpMode & (info->dri->agpMode - 1))) { + xf86DrvMsg(pScreen->myNum, X_ERROR, + "Illegal AGP Mode: %d (valid values: %s), leaving at " +- "%dx\n", info->agpMode, is_v3 ? "4, 8" : "1, 2, 4", ++ "%dx\n", info->dri->agpMode, is_v3 ? "4, 8" : "1, 2, 4", + defaultMode); +- info->agpMode = defaultMode; ++ info->dri->agpMode = defaultMode; + } else + from = X_CONFIG; + } else +- info->agpMode = defaultMode; ++ info->dri->agpMode = defaultMode; + +- xf86DrvMsg(pScreen->myNum, from, "Using AGP %dx\n", info->agpMode); ++ xf86DrvMsg(pScreen->myNum, from, "Using AGP %dx\n", info->dri->agpMode); + + mode &= ~RADEON_AGP_MODE_MASK; + if (is_v3) { + /* only set one mode bit for AGPv3 */ +- switch (info->agpMode) { ++ switch (info->dri->agpMode) { + case 8: mode |= RADEON_AGPv3_8X_MODE; break; + case 4: default: mode |= RADEON_AGPv3_4X_MODE; + } +@@ -766,7 +770,7 @@ static Bool RADEONSetAgpMode(RADEONInfoPtr info, ScreenPtr pScreen) + * currently these bits are not used in all tested cards. + */ + } else { +- switch (info->agpMode) { ++ switch (info->dri->agpMode) { + case 4: mode |= RADEON_AGP_4X_MODE; + case 2: mode |= RADEON_AGP_2X_MODE; + case 1: default: mode |= RADEON_AGP_1X_MODE; +@@ -800,9 +804,9 @@ static Bool RADEONSetAgpMode(RADEONInfoPtr info, ScreenPtr pScreen) + PCI_DEV_VENDOR_ID(info->PciInfo), + PCI_DEV_DEVICE_ID(info->PciInfo)); + +- if (drmAgpEnable(info->drmFD, mode) < 0) { ++ if (drmAgpEnable(info->dri->drmFD, mode) < 0) { + xf86DrvMsg(pScreen->myNum, X_ERROR, "[agp] AGP not enabled\n"); +- drmAgpRelease(info->drmFD); ++ drmAgpRelease(info->dri->drmFD); + return FALSE; + } + +@@ -829,15 +833,15 @@ static void RADEONSetAgpBase(RADEONInfoPtr info, ScreenPtr pScreen) + * agp_base_2 ? + */ + if (info->ChipFamily == CHIP_FAMILY_RV515) +- OUTMC(pScrn, RV515_MC_AGP_BASE, drmAgpBase(info->drmFD)); ++ OUTMC(pScrn, RV515_MC_AGP_BASE, drmAgpBase(info->dri->drmFD)); + else if ((info->ChipFamily >= CHIP_FAMILY_R520) && + (info->ChipFamily <= CHIP_FAMILY_RV570)) +- OUTMC(pScrn, R520_MC_AGP_BASE, drmAgpBase(info->drmFD)); ++ OUTMC(pScrn, R520_MC_AGP_BASE, drmAgpBase(info->dri->drmFD)); + else if ((info->ChipFamily == CHIP_FAMILY_RS690) || + (info->ChipFamily == CHIP_FAMILY_RS740)) +- OUTMC(pScrn, RS690_MC_AGP_BASE, drmAgpBase(info->drmFD)); ++ OUTMC(pScrn, RS690_MC_AGP_BASE, drmAgpBase(info->dri->drmFD)); + else if (info->ChipFamily < CHIP_FAMILY_RV515) +- OUTREG(RADEON_AGP_BASE, drmAgpBase(info->drmFD)); ++ OUTREG(RADEON_AGP_BASE, drmAgpBase(info->dri->drmFD)); + } + + /* Initialize the AGP state. Request memory for use in AGP space, and +@@ -847,7 +851,7 @@ static Bool RADEONDRIAgpInit(RADEONInfoPtr info, ScreenPtr pScreen) + { + int ret; + +- if (drmAgpAcquire(info->drmFD) < 0) { ++ if (drmAgpAcquire(info->dri->drmFD) < 0) { + xf86DrvMsg(pScreen->myNum, X_WARNING, "[agp] AGP not available\n"); + return FALSE; + } +@@ -857,101 +861,101 @@ static Bool RADEONDRIAgpInit(RADEONInfoPtr info, ScreenPtr pScreen) + + RADEONDRIInitGARTValues(info); + +- if ((ret = drmAgpAlloc(info->drmFD, info->gartSize*1024*1024, 0, NULL, +- &info->agpMemHandle)) < 0) { ++ if ((ret = drmAgpAlloc(info->dri->drmFD, info->dri->gartSize*1024*1024, 0, NULL, ++ &info->dri->agpMemHandle)) < 0) { + xf86DrvMsg(pScreen->myNum, X_ERROR, "[agp] Out of memory (%d)\n", ret); +- drmAgpRelease(info->drmFD); ++ drmAgpRelease(info->dri->drmFD); + return FALSE; + } + xf86DrvMsg(pScreen->myNum, X_INFO, + "[agp] %d kB allocated with handle 0x%08x\n", +- info->gartSize*1024, info->agpMemHandle); ++ info->dri->gartSize*1024, info->dri->agpMemHandle); + +- if (drmAgpBind(info->drmFD, +- info->agpMemHandle, info->gartOffset) < 0) { ++ if (drmAgpBind(info->dri->drmFD, ++ info->dri->agpMemHandle, info->dri->gartOffset) < 0) { + xf86DrvMsg(pScreen->myNum, X_ERROR, "[agp] Could not bind\n"); +- drmAgpFree(info->drmFD, info->agpMemHandle); +- drmAgpRelease(info->drmFD); ++ drmAgpFree(info->dri->drmFD, info->dri->agpMemHandle); ++ drmAgpRelease(info->dri->drmFD); + return FALSE; + } + +- if (drmAddMap(info->drmFD, info->ringStart, info->ringMapSize, +- DRM_AGP, DRM_READ_ONLY, &info->ringHandle) < 0) { ++ if (drmAddMap(info->dri->drmFD, info->dri->ringStart, info->dri->ringMapSize, ++ DRM_AGP, DRM_READ_ONLY, &info->dri->ringHandle) < 0) { + xf86DrvMsg(pScreen->myNum, X_ERROR, + "[agp] Could not add ring mapping\n"); + return FALSE; + } + xf86DrvMsg(pScreen->myNum, X_INFO, +- "[agp] ring handle = 0x%08x\n", info->ringHandle); ++ "[agp] ring handle = 0x%08x\n", info->dri->ringHandle); + +- if (drmMap(info->drmFD, info->ringHandle, info->ringMapSize, +- &info->ring) < 0) { ++ if (drmMap(info->dri->drmFD, info->dri->ringHandle, info->dri->ringMapSize, ++ &info->dri->ring) < 0) { + xf86DrvMsg(pScreen->myNum, X_ERROR, "[agp] Could not map ring\n"); + return FALSE; + } + xf86DrvMsg(pScreen->myNum, X_INFO, + "[agp] Ring mapped at 0x%08lx\n", +- (unsigned long)info->ring); ++ (unsigned long)info->dri->ring); + +- if (drmAddMap(info->drmFD, info->ringReadOffset, info->ringReadMapSize, +- DRM_AGP, DRM_READ_ONLY, &info->ringReadPtrHandle) < 0) { ++ if (drmAddMap(info->dri->drmFD, info->dri->ringReadOffset, info->dri->ringReadMapSize, ++ DRM_AGP, DRM_READ_ONLY, &info->dri->ringReadPtrHandle) < 0) { + xf86DrvMsg(pScreen->myNum, X_ERROR, + "[agp] Could not add ring read ptr mapping\n"); + return FALSE; + } + xf86DrvMsg(pScreen->myNum, X_INFO, + "[agp] ring read ptr handle = 0x%08x\n", +- info->ringReadPtrHandle); ++ info->dri->ringReadPtrHandle); + +- if (drmMap(info->drmFD, info->ringReadPtrHandle, info->ringReadMapSize, +- &info->ringReadPtr) < 0) { ++ if (drmMap(info->dri->drmFD, info->dri->ringReadPtrHandle, info->dri->ringReadMapSize, ++ &info->dri->ringReadPtr) < 0) { + xf86DrvMsg(pScreen->myNum, X_ERROR, + "[agp] Could not map ring read ptr\n"); + return FALSE; + } + xf86DrvMsg(pScreen->myNum, X_INFO, + "[agp] Ring read ptr mapped at 0x%08lx\n", +- (unsigned long)info->ringReadPtr); ++ (unsigned long)info->dri->ringReadPtr); + +- if (drmAddMap(info->drmFD, info->bufStart, info->bufMapSize, +- DRM_AGP, 0, &info->bufHandle) < 0) { ++ if (drmAddMap(info->dri->drmFD, info->dri->bufStart, info->dri->bufMapSize, ++ DRM_AGP, 0, &info->dri->bufHandle) < 0) { + xf86DrvMsg(pScreen->myNum, X_ERROR, + "[agp] Could not add vertex/indirect buffers mapping\n"); + return FALSE; + } + xf86DrvMsg(pScreen->myNum, X_INFO, + "[agp] vertex/indirect buffers handle = 0x%08x\n", +- info->bufHandle); ++ info->dri->bufHandle); + +- if (drmMap(info->drmFD, info->bufHandle, info->bufMapSize, +- &info->buf) < 0) { ++ if (drmMap(info->dri->drmFD, info->dri->bufHandle, info->dri->bufMapSize, ++ &info->dri->buf) < 0) { + xf86DrvMsg(pScreen->myNum, X_ERROR, + "[agp] Could not map vertex/indirect buffers\n"); + return FALSE; + } + xf86DrvMsg(pScreen->myNum, X_INFO, + "[agp] Vertex/indirect buffers mapped at 0x%08lx\n", +- (unsigned long)info->buf); ++ (unsigned long)info->dri->buf); + +- if (drmAddMap(info->drmFD, info->gartTexStart, info->gartTexMapSize, +- DRM_AGP, 0, &info->gartTexHandle) < 0) { ++ if (drmAddMap(info->dri->drmFD, info->dri->gartTexStart, info->dri->gartTexMapSize, ++ DRM_AGP, 0, &info->dri->gartTexHandle) < 0) { + xf86DrvMsg(pScreen->myNum, X_ERROR, + "[agp] Could not add GART texture map mapping\n"); + return FALSE; + } + xf86DrvMsg(pScreen->myNum, X_INFO, + "[agp] GART texture map handle = 0x%08x\n", +- info->gartTexHandle); ++ info->dri->gartTexHandle); + +- if (drmMap(info->drmFD, info->gartTexHandle, info->gartTexMapSize, +- &info->gartTex) < 0) { ++ if (drmMap(info->dri->drmFD, info->dri->gartTexHandle, info->dri->gartTexMapSize, ++ &info->dri->gartTex) < 0) { + xf86DrvMsg(pScreen->myNum, X_ERROR, + "[agp] Could not map GART texture map\n"); + return FALSE; + } + xf86DrvMsg(pScreen->myNum, X_INFO, + "[agp] GART Texture map mapped at 0x%08lx\n", +- (unsigned long)info->gartTex); ++ (unsigned long)info->dri->gartTex); + + RADEONSetAgpBase(info, pScreen); + +@@ -966,104 +970,104 @@ static Bool RADEONDRIPciInit(RADEONInfoPtr info, ScreenPtr pScreen) + int ret; + int flags = DRM_READ_ONLY | DRM_LOCKED | DRM_KERNEL; + +- ret = drmScatterGatherAlloc(info->drmFD, info->gartSize*1024*1024, +- &info->pciMemHandle); ++ ret = drmScatterGatherAlloc(info->dri->drmFD, info->dri->gartSize*1024*1024, ++ &info->dri->pciMemHandle); + if (ret < 0) { + xf86DrvMsg(pScreen->myNum, X_ERROR, "[pci] Out of memory (%d)\n", ret); + return FALSE; + } + xf86DrvMsg(pScreen->myNum, X_INFO, + "[pci] %d kB allocated with handle 0x%08x\n", +- info->gartSize*1024, info->pciMemHandle); ++ info->dri->gartSize*1024, info->dri->pciMemHandle); + + RADEONDRIInitGARTValues(info); + +- if (drmAddMap(info->drmFD, info->ringStart, info->ringMapSize, +- DRM_SCATTER_GATHER, flags, &info->ringHandle) < 0) { ++ if (drmAddMap(info->dri->drmFD, info->dri->ringStart, info->dri->ringMapSize, ++ DRM_SCATTER_GATHER, flags, &info->dri->ringHandle) < 0) { + xf86DrvMsg(pScreen->myNum, X_ERROR, + "[pci] Could not add ring mapping\n"); + return FALSE; + } + xf86DrvMsg(pScreen->myNum, X_INFO, +- "[pci] ring handle = 0x%08x\n", info->ringHandle); ++ "[pci] ring handle = 0x%08x\n", info->dri->ringHandle); + +- if (drmMap(info->drmFD, info->ringHandle, info->ringMapSize, +- &info->ring) < 0) { ++ if (drmMap(info->dri->drmFD, info->dri->ringHandle, info->dri->ringMapSize, ++ &info->dri->ring) < 0) { + xf86DrvMsg(pScreen->myNum, X_ERROR, "[pci] Could not map ring\n"); + return FALSE; + } + xf86DrvMsg(pScreen->myNum, X_INFO, + "[pci] Ring mapped at 0x%08lx\n", +- (unsigned long)info->ring); ++ (unsigned long)info->dri->ring); + xf86DrvMsg(pScreen->myNum, X_INFO, + "[pci] Ring contents 0x%08lx\n", +- *(unsigned long *)(pointer)info->ring); ++ *(unsigned long *)(pointer)info->dri->ring); + +- if (drmAddMap(info->drmFD, info->ringReadOffset, info->ringReadMapSize, +- DRM_SCATTER_GATHER, flags, &info->ringReadPtrHandle) < 0) { ++ if (drmAddMap(info->dri->drmFD, info->dri->ringReadOffset, info->dri->ringReadMapSize, ++ DRM_SCATTER_GATHER, flags, &info->dri->ringReadPtrHandle) < 0) { + xf86DrvMsg(pScreen->myNum, X_ERROR, + "[pci] Could not add ring read ptr mapping\n"); + return FALSE; + } + xf86DrvMsg(pScreen->myNum, X_INFO, + "[pci] ring read ptr handle = 0x%08x\n", +- info->ringReadPtrHandle); ++ info->dri->ringReadPtrHandle); + +- if (drmMap(info->drmFD, info->ringReadPtrHandle, info->ringReadMapSize, +- &info->ringReadPtr) < 0) { ++ if (drmMap(info->dri->drmFD, info->dri->ringReadPtrHandle, info->dri->ringReadMapSize, ++ &info->dri->ringReadPtr) < 0) { + xf86DrvMsg(pScreen->myNum, X_ERROR, + "[pci] Could not map ring read ptr\n"); + return FALSE; + } + xf86DrvMsg(pScreen->myNum, X_INFO, + "[pci] Ring read ptr mapped at 0x%08lx\n", +- (unsigned long)info->ringReadPtr); ++ (unsigned long)info->dri->ringReadPtr); + xf86DrvMsg(pScreen->myNum, X_INFO, + "[pci] Ring read ptr contents 0x%08lx\n", +- *(unsigned long *)(pointer)info->ringReadPtr); ++ *(unsigned long *)(pointer)info->dri->ringReadPtr); + +- if (drmAddMap(info->drmFD, info->bufStart, info->bufMapSize, +- DRM_SCATTER_GATHER, 0, &info->bufHandle) < 0) { ++ if (drmAddMap(info->dri->drmFD, info->dri->bufStart, info->dri->bufMapSize, ++ DRM_SCATTER_GATHER, 0, &info->dri->bufHandle) < 0) { + xf86DrvMsg(pScreen->myNum, X_ERROR, + "[pci] Could not add vertex/indirect buffers mapping\n"); + return FALSE; + } + xf86DrvMsg(pScreen->myNum, X_INFO, + "[pci] vertex/indirect buffers handle = 0x%08x\n", +- info->bufHandle); ++ info->dri->bufHandle); + +- if (drmMap(info->drmFD, info->bufHandle, info->bufMapSize, +- &info->buf) < 0) { ++ if (drmMap(info->dri->drmFD, info->dri->bufHandle, info->dri->bufMapSize, ++ &info->dri->buf) < 0) { + xf86DrvMsg(pScreen->myNum, X_ERROR, + "[pci] Could not map vertex/indirect buffers\n"); + return FALSE; + } + xf86DrvMsg(pScreen->myNum, X_INFO, + "[pci] Vertex/indirect buffers mapped at 0x%08lx\n", +- (unsigned long)info->buf); ++ (unsigned long)info->dri->buf); + xf86DrvMsg(pScreen->myNum, X_INFO, + "[pci] Vertex/indirect buffers contents 0x%08lx\n", +- *(unsigned long *)(pointer)info->buf); ++ *(unsigned long *)(pointer)info->dri->buf); + +- if (drmAddMap(info->drmFD, info->gartTexStart, info->gartTexMapSize, +- DRM_SCATTER_GATHER, 0, &info->gartTexHandle) < 0) { ++ if (drmAddMap(info->dri->drmFD, info->dri->gartTexStart, info->dri->gartTexMapSize, ++ DRM_SCATTER_GATHER, 0, &info->dri->gartTexHandle) < 0) { + xf86DrvMsg(pScreen->myNum, X_ERROR, + "[pci] Could not add GART texture map mapping\n"); + return FALSE; + } + xf86DrvMsg(pScreen->myNum, X_INFO, + "[pci] GART texture map handle = 0x%08x\n", +- info->gartTexHandle); ++ info->dri->gartTexHandle); + +- if (drmMap(info->drmFD, info->gartTexHandle, info->gartTexMapSize, +- &info->gartTex) < 0) { ++ if (drmMap(info->dri->drmFD, info->dri->gartTexHandle, info->dri->gartTexMapSize, ++ &info->dri->gartTex) < 0) { + xf86DrvMsg(pScreen->myNum, X_ERROR, + "[pci] Could not map GART texture map\n"); + return FALSE; + } + xf86DrvMsg(pScreen->myNum, X_INFO, + "[pci] GART Texture map mapped at 0x%08lx\n", +- (unsigned long)info->gartTex); ++ (unsigned long)info->dri->gartTex); + + return TRUE; + } +@@ -1074,13 +1078,13 @@ static Bool RADEONDRIPciInit(RADEONInfoPtr info, ScreenPtr pScreen) + static Bool RADEONDRIMapInit(RADEONInfoPtr info, ScreenPtr pScreen) + { + /* Map registers */ +- info->registerSize = info->MMIOSize; +- if (drmAddMap(info->drmFD, info->MMIOAddr, info->registerSize, +- DRM_REGISTERS, DRM_READ_ONLY, &info->registerHandle) < 0) { ++ info->dri->registerSize = info->MMIOSize; ++ if (drmAddMap(info->dri->drmFD, info->MMIOAddr, info->dri->registerSize, ++ DRM_REGISTERS, DRM_READ_ONLY, &info->dri->registerHandle) < 0) { + return FALSE; + } + xf86DrvMsg(pScreen->myNum, X_INFO, +- "[drm] register handle = 0x%08x\n", info->registerHandle); ++ "[drm] register handle = 0x%08x\n", info->dri->registerHandle); + + return TRUE; + } +@@ -1090,43 +1094,43 @@ static int RADEONDRIKernelInit(RADEONInfoPtr info, ScreenPtr pScreen) + { + ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; + int cpp = info->CurrentLayout.pixel_bytes; +- drmRadeonInit drmInfo; ++ drm_radeon_init_t drmInfo; + +- memset(&drmInfo, 0, sizeof(drmRadeonInit)); ++ memset(&drmInfo, 0, sizeof(drm_radeon_init_t)); + if ( info->ChipFamily >= CHIP_FAMILY_R300 ) +- drmInfo.func = DRM_RADEON_INIT_R300_CP; ++ drmInfo.func = RADEON_INIT_R300_CP; + else + if ( info->ChipFamily >= CHIP_FAMILY_R200 ) +- drmInfo.func = DRM_RADEON_INIT_R200_CP; ++ drmInfo.func = RADEON_INIT_R200_CP; + else +- drmInfo.func = DRM_RADEON_INIT_CP; ++ drmInfo.func = RADEON_INIT_CP; + + drmInfo.sarea_priv_offset = sizeof(XF86DRISAREARec); + drmInfo.is_pci = (info->cardType!=CARD_AGP); +- drmInfo.cp_mode = info->CPMode; +- drmInfo.gart_size = info->gartSize*1024*1024; +- drmInfo.ring_size = info->ringSize*1024*1024; +- drmInfo.usec_timeout = info->CPusecTimeout; ++ drmInfo.cp_mode = RADEON_CSQ_PRIBM_INDBM; ++ drmInfo.gart_size = info->dri->gartSize*1024*1024; ++ drmInfo.ring_size = info->dri->ringSize*1024*1024; ++ drmInfo.usec_timeout = info->cp->CPusecTimeout; + + drmInfo.fb_bpp = info->CurrentLayout.pixel_code; +- drmInfo.depth_bpp = (info->depthBits - 8) * 2; +- +- drmInfo.front_offset = info->frontOffset; +- drmInfo.front_pitch = info->frontPitch * cpp; +- drmInfo.back_offset = info->backOffset; +- drmInfo.back_pitch = info->backPitch * cpp; +- drmInfo.depth_offset = info->depthOffset; +- drmInfo.depth_pitch = info->depthPitch * drmInfo.depth_bpp / 8; +- +- drmInfo.fb_offset = info->fbHandle; +- drmInfo.mmio_offset = info->registerHandle; +- drmInfo.ring_offset = info->ringHandle; +- drmInfo.ring_rptr_offset = info->ringReadPtrHandle; +- drmInfo.buffers_offset = info->bufHandle; +- drmInfo.gart_textures_offset= info->gartTexHandle; +- +- if (drmCommandWrite(info->drmFD, DRM_RADEON_CP_INIT, +- &drmInfo, sizeof(drmRadeonInit)) < 0) ++ drmInfo.depth_bpp = (info->dri->depthBits - 8) * 2; ++ ++ drmInfo.front_offset = info->dri->frontOffset; ++ drmInfo.front_pitch = info->dri->frontPitch * cpp; ++ drmInfo.back_offset = info->dri->backOffset; ++ drmInfo.back_pitch = info->dri->backPitch * cpp; ++ drmInfo.depth_offset = info->dri->depthOffset; ++ drmInfo.depth_pitch = info->dri->depthPitch * drmInfo.depth_bpp / 8; ++ ++ drmInfo.fb_offset = info->dri->fbHandle; ++ drmInfo.mmio_offset = info->dri->registerHandle; ++ drmInfo.ring_offset = info->dri->ringHandle; ++ drmInfo.ring_rptr_offset = info->dri->ringReadPtrHandle; ++ drmInfo.buffers_offset = info->dri->bufHandle; ++ drmInfo.gart_textures_offset= info->dri->gartTexHandle; ++ ++ if (drmCommandWrite(info->dri->drmFD, DRM_RADEON_CP_INIT, ++ &drmInfo, sizeof(drm_radeon_init_t)) < 0) + return FALSE; + + /* DRM_RADEON_CP_INIT does an engine reset, which resets some engine +@@ -1140,21 +1144,21 @@ static int RADEONDRIKernelInit(RADEONInfoPtr info, ScreenPtr pScreen) + + static void RADEONDRIGartHeapInit(RADEONInfoPtr info, ScreenPtr pScreen) + { +- drmRadeonMemInitHeap drmHeap; ++ drm_radeon_mem_init_heap_t drmHeap; + + /* Start up the simple memory manager for GART space */ + drmHeap.region = RADEON_MEM_REGION_GART; + drmHeap.start = 0; +- drmHeap.size = info->gartTexMapSize; ++ drmHeap.size = info->dri->gartTexMapSize; + +- if (drmCommandWrite(info->drmFD, DRM_RADEON_INIT_HEAP, ++ if (drmCommandWrite(info->dri->drmFD, DRM_RADEON_INIT_HEAP, + &drmHeap, sizeof(drmHeap))) { + xf86DrvMsg(pScreen->myNum, X_ERROR, + "[drm] Failed to initialize GART heap manager\n"); + } else { + xf86DrvMsg(pScreen->myNum, X_INFO, + "[drm] Initialized kernel GART heap manager, %d\n", +- info->gartTexMapSize); ++ info->dri->gartTexMapSize); + } + } + +@@ -1164,29 +1168,29 @@ static void RADEONDRIGartHeapInit(RADEONInfoPtr info, ScreenPtr pScreen) + static Bool RADEONDRIBufInit(RADEONInfoPtr info, ScreenPtr pScreen) + { + /* Initialize vertex buffers */ +- info->bufNumBufs = drmAddBufs(info->drmFD, +- info->bufMapSize / RADEON_BUFFER_SIZE, +- RADEON_BUFFER_SIZE, +- (info->cardType!=CARD_AGP) ? DRM_SG_BUFFER : DRM_AGP_BUFFER, +- info->bufStart); ++ info->dri->bufNumBufs = drmAddBufs(info->dri->drmFD, ++ info->dri->bufMapSize / RADEON_BUFFER_SIZE, ++ RADEON_BUFFER_SIZE, ++ (info->cardType!=CARD_AGP) ? DRM_SG_BUFFER : DRM_AGP_BUFFER, ++ info->dri->bufStart); + +- if (info->bufNumBufs <= 0) { ++ if (info->dri->bufNumBufs <= 0) { + xf86DrvMsg(pScreen->myNum, X_ERROR, + "[drm] Could not create vertex/indirect buffers list\n"); + return FALSE; + } + xf86DrvMsg(pScreen->myNum, X_INFO, + "[drm] Added %d %d byte vertex/indirect buffers\n", +- info->bufNumBufs, RADEON_BUFFER_SIZE); ++ info->dri->bufNumBufs, RADEON_BUFFER_SIZE); + +- if (!(info->buffers = drmMapBufs(info->drmFD))) { ++ if (!(info->dri->buffers = drmMapBufs(info->dri->drmFD))) { + xf86DrvMsg(pScreen->myNum, X_ERROR, + "[drm] Failed to map vertex/indirect buffers list\n"); + return FALSE; + } + xf86DrvMsg(pScreen->myNum, X_INFO, + "[drm] Mapped %d vertex/indirect buffers\n", +- info->buffers->count); ++ info->dri->buffers->count); + + return TRUE; + } +@@ -1195,29 +1199,35 @@ static void RADEONDRIIrqInit(RADEONInfoPtr info, ScreenPtr pScreen) + { + ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; + +- if (!info->irq) { +- info->irq = drmGetInterruptFromBusID( +- info->drmFD, ++ if (!info->dri->irq) { ++ info->dri->irq = drmGetInterruptFromBusID( ++ info->dri->drmFD, + PCI_CFG_BUS(info->PciInfo), + PCI_CFG_DEV(info->PciInfo), + PCI_CFG_FUNC(info->PciInfo)); + +- if ((drmCtlInstHandler(info->drmFD, info->irq)) != 0) { ++ if ((drmCtlInstHandler(info->dri->drmFD, info->dri->irq)) != 0) { + xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "[drm] failure adding irq handler, " + "there is a device already using that irq\n" + "[drm] falling back to irq-free operation\n"); +- info->irq = 0; ++ info->dri->irq = 0; + } else { + unsigned char *RADEONMMIO = info->MMIO; + info->ModeReg->gen_int_cntl = INREG( RADEON_GEN_INT_CNTL ); ++ ++ /* Let the DRM know it can safely disable the vblank interrupts */ ++ radeon_crtc_modeset_ioctl(XF86_CRTC_CONFIG_PTR(pScrn)->crtc[0], ++ FALSE); ++ radeon_crtc_modeset_ioctl(XF86_CRTC_CONFIG_PTR(pScrn)->crtc[0], ++ TRUE); + } + } + +- if (info->irq) ++ if (info->dri->irq) + xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "[drm] dma control initialized, using IRQ %d\n", +- info->irq); ++ info->dri->irq); + } + + +@@ -1233,7 +1243,7 @@ static void RADEONDRICPInit(ScrnInfoPtr pScrn) + RADEONCP_START(pScrn, info); + #ifdef USE_XAA + if (!info->useEXA) +- info->dst_pitch_offset = info->frontPitchOffset; ++ info->accel_state->dst_pitch_offset = info->dri->frontPitchOffset; + #endif + } + +@@ -1274,16 +1284,16 @@ Bool RADEONDRIGetVersion(ScrnInfoPtr pScrn) + + /* Check the lib version */ + if (xf86LoaderCheckSymbol("drmGetLibVersion")) +- info->pLibDRMVersion = drmGetLibVersion(info->drmFD); +- if (info->pLibDRMVersion == NULL) { ++ info->dri->pLibDRMVersion = drmGetLibVersion(info->dri->drmFD); ++ if (info->dri->pLibDRMVersion == NULL) { + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "[dri] RADEONDRIGetVersion failed because libDRM is really " + "way to old to even get a version number out of it.\n" + "[dri] Disabling DRI.\n"); + return FALSE; + } +- if (info->pLibDRMVersion->version_major != 1 || +- info->pLibDRMVersion->version_minor < 2) { ++ if (info->dri->pLibDRMVersion->version_major != 1 || ++ info->dri->pLibDRMVersion->version_minor < 2) { + /* incompatible drm library version */ + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "[dri] RADEONDRIGetVersion failed because of a " +@@ -1291,11 +1301,11 @@ Bool RADEONDRIGetVersion(ScrnInfoPtr pScrn) + "[dri] libdrm.a module version is %d.%d.%d but " + "version 1.2.x is needed.\n" + "[dri] Disabling DRI.\n", +- info->pLibDRMVersion->version_major, +- info->pLibDRMVersion->version_minor, +- info->pLibDRMVersion->version_patchlevel); +- drmFreeVersion(info->pLibDRMVersion); +- info->pLibDRMVersion = NULL; ++ info->dri->pLibDRMVersion->version_major, ++ info->dri->pLibDRMVersion->version_minor, ++ info->dri->pLibDRMVersion->version_patchlevel); ++ drmFreeVersion(info->dri->pLibDRMVersion); ++ info->dri->pLibDRMVersion = NULL; + return FALSE; + } + +@@ -1322,9 +1332,9 @@ Bool RADEONDRIGetVersion(ScrnInfoPtr pScrn) + } + + /* Get DRM version & close DRM */ +- info->pKernelDRMVersion = drmGetVersion(fd); ++ info->dri->pKernelDRMVersion = drmGetVersion(fd); + drmClose(fd); +- if (info->pKernelDRMVersion == NULL) { ++ if (info->dri->pKernelDRMVersion == NULL) { + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "[dri] RADEONDRIGetVersion failed to get the DRM version\n" + "[dri] Disabling DRI.\n"); +@@ -1344,10 +1354,10 @@ Bool RADEONDRIGetVersion(ScrnInfoPtr pScrn) + } + + /* We don't, bummer ! */ +- if (info->pKernelDRMVersion->version_major != 1 || +- info->pKernelDRMVersion->version_minor < req_minor || +- (info->pKernelDRMVersion->version_minor == req_minor && +- info->pKernelDRMVersion->version_patchlevel < req_patch)) { ++ if (info->dri->pKernelDRMVersion->version_major != 1 || ++ info->dri->pKernelDRMVersion->version_minor < req_minor || ++ (info->dri->pKernelDRMVersion->version_minor == req_minor && ++ info->dri->pKernelDRMVersion->version_patchlevel < req_patch)) { + /* Incompatible drm version */ + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "[dri] RADEONDRIGetVersion failed because of a version " +@@ -1355,13 +1365,13 @@ Bool RADEONDRIGetVersion(ScrnInfoPtr pScrn) + "[dri] radeon.o kernel module version is %d.%d.%d " + "but version 1.%d.%d or newer is needed.\n" + "[dri] Disabling DRI.\n", +- info->pKernelDRMVersion->version_major, +- info->pKernelDRMVersion->version_minor, +- info->pKernelDRMVersion->version_patchlevel, ++ info->dri->pKernelDRMVersion->version_major, ++ info->dri->pKernelDRMVersion->version_minor, ++ info->dri->pKernelDRMVersion->version_patchlevel, + req_minor, + req_patch); +- drmFreeVersion(info->pKernelDRMVersion); +- info->pKernelDRMVersion = NULL; ++ drmFreeVersion(info->dri->pKernelDRMVersion); ++ info->dri->pKernelDRMVersion = NULL; + return FALSE; + } + +@@ -1377,7 +1387,7 @@ Bool RADEONDRISetVBlankInterrupt(ScrnInfoPtr pScrn, Bool on) + if (!info->want_vblank_interrupts) + on = FALSE; + +- if (info->directRenderingEnabled && info->pKernelDRMVersion->version_minor >= 28) { ++ if (info->directRenderingEnabled && info->dri->pKernelDRMVersion->version_minor >= 28) { + if (on) { + if (xf86_config->num_crtc > 1 && xf86_config->crtc[1]->enabled) + value = DRM_RADEON_VBLANK_CRTC1 | DRM_RADEON_VBLANK_CRTC2; +@@ -1406,7 +1416,7 @@ Bool RADEONDRIScreenInit(ScreenPtr pScreen) + DRIInfoPtr pDRIInfo; + RADEONDRIPtr pRADEONDRI; + +- info->DRICloseScreen = NULL; ++ info->dri->DRICloseScreen = NULL; + + switch (info->CurrentLayout.pixel_code) { + case 8: +@@ -1432,7 +1442,7 @@ Bool RADEONDRIScreenInit(ScreenPtr pScreen) + */ + if (!(pDRIInfo = DRICreateInfoRec())) return FALSE; + +- info->pDRIInfo = pDRIInfo; ++ info->dri->pDRIInfo = pDRIInfo; + pDRIInfo->drmDriverName = RADEON_DRIVER_NAME; + + if ( (info->ChipFamily >= CHIP_FAMILY_R300) ) { +@@ -1453,11 +1463,10 @@ Bool RADEONDRIScreenInit(ScreenPtr pScreen) + PCI_DEV_DEV(info->PciInfo), + PCI_DEV_FUNC(info->PciInfo)); + } +- pDRIInfo->ddxDriverMajorVersion = info->allowColorTiling ? +- RADEON_VERSION_MAJOR_TILED : RADEON_VERSION_MAJOR; +- pDRIInfo->ddxDriverMinorVersion = RADEON_VERSION_MINOR; +- pDRIInfo->ddxDriverPatchVersion = RADEON_VERSION_PATCH; +- pDRIInfo->frameBufferPhysicalAddress = (void *)info->LinearAddr + info->frontOffset; ++ pDRIInfo->ddxDriverMajorVersion = info->allowColorTiling ? 5 : 4; ++ pDRIInfo->ddxDriverMinorVersion = 3; ++ pDRIInfo->ddxDriverPatchVersion = 0; ++ pDRIInfo->frameBufferPhysicalAddress = (void *)info->LinearAddr + info->dri->frontOffset; + pDRIInfo->frameBufferSize = info->FbMapSize - info->FbSecureSize; + pDRIInfo->frameBufferStride = (pScrn->displayWidth * + info->CurrentLayout.pixel_bytes); +@@ -1487,7 +1496,7 @@ Bool RADEONDRIScreenInit(ScreenPtr pScreen) + /* For now the mapping works by using a fixed size defined + * in the SAREA header + */ +- if (sizeof(XF86DRISAREARec)+sizeof(RADEONSAREAPriv) > SAREA_MAX) { ++ if (sizeof(XF86DRISAREARec)+sizeof(drm_radeon_sarea_t) > SAREA_MAX) { + ErrorF("Data does not fit in SAREA\n"); + return FALSE; + } +@@ -1495,8 +1504,8 @@ Bool RADEONDRIScreenInit(ScreenPtr pScreen) + #endif + + if (!(pRADEONDRI = (RADEONDRIPtr)xcalloc(sizeof(RADEONDRIRec),1))) { +- DRIDestroyInfoRec(info->pDRIInfo); +- info->pDRIInfo = NULL; ++ DRIDestroyInfoRec(info->dri->pDRIInfo); ++ info->dri->pDRIInfo = NULL; + return FALSE; + } + pDRIInfo->devPrivate = pRADEONDRI; +@@ -1538,7 +1547,7 @@ Bool RADEONDRIScreenInit(ScreenPtr pScreen) + } + #endif + +- if (!DRIScreenInit(pScreen, pDRIInfo, &info->drmFD)) { ++ if (!DRIScreenInit(pScreen, pDRIInfo, &info->dri->drmFD)) { + xf86DrvMsg(pScreen->myNum, X_ERROR, + "[dri] DRIScreenInit failed. Disabling DRI.\n"); + xfree(pDRIInfo->devPrivate); +@@ -1581,7 +1590,7 @@ Bool RADEONDRIScreenInit(ScreenPtr pScreen) + void *scratch_ptr; + int scratch_int; + +- DRIGetDeviceInfo(pScreen, &info->fbHandle, ++ DRIGetDeviceInfo(pScreen, &info->dri->fbHandle, + &scratch_int, &scratch_int, + &scratch_int, &scratch_int, + &scratch_ptr); +@@ -1605,7 +1614,7 @@ static Bool RADEONDRIDoCloseScreen(int scrnIndex, ScreenPtr pScreen) + + RADEONDRICloseScreen(pScreen); + +- pScreen->CloseScreen = info->DRICloseScreen; ++ pScreen->CloseScreen = info->dri->DRICloseScreen; + return (*pScreen->CloseScreen)(scrnIndex, pScreen); + } + +@@ -1617,11 +1626,11 @@ Bool RADEONDRIFinishScreenInit(ScreenPtr pScreen) + { + ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; + RADEONInfoPtr info = RADEONPTR(pScrn); +- RADEONSAREAPrivPtr pSAREAPriv; ++ drm_radeon_sarea_t *pSAREAPriv; + RADEONDRIPtr pRADEONDRI; + +- info->pDRIInfo->driverSwapMethod = DRI_HIDE_X_CONTEXT; +- /* info->pDRIInfo->driverSwapMethod = DRI_SERVER_SWAP; */ ++ info->dri->pDRIInfo->driverSwapMethod = DRI_HIDE_X_CONTEXT; ++ /* info->dri->pDRIInfo->driverSwapMethod = DRI_SERVER_SWAP; */ + + /* NOTE: DRIFinishScreenInit must be called before *DRIKernelInit + * because *DRIKernelInit requires that the hardware lock is held by +@@ -1655,10 +1664,10 @@ Bool RADEONDRIFinishScreenInit(ScreenPtr pScreen) + RADEONDRICPInit(pScrn); + + /* Initialize the SAREA private data structure */ +- pSAREAPriv = (RADEONSAREAPrivPtr)DRIGetSAREAPrivate(pScreen); ++ pSAREAPriv = (drm_radeon_sarea_t*)DRIGetSAREAPrivate(pScreen); + memset(pSAREAPriv, 0, sizeof(*pSAREAPriv)); + +- pRADEONDRI = (RADEONDRIPtr)info->pDRIInfo->devPrivate; ++ pRADEONDRI = (RADEONDRIPtr)info->dri->pDRIInfo->devPrivate; + + pRADEONDRI->deviceID = info->Chipset; + pRADEONDRI->width = pScrn->virtualX; +@@ -1667,40 +1676,40 @@ Bool RADEONDRIFinishScreenInit(ScreenPtr pScreen) + pRADEONDRI->bpp = pScrn->bitsPerPixel; + + pRADEONDRI->IsPCI = (info->cardType!=CARD_AGP); +- pRADEONDRI->AGPMode = info->agpMode; ++ pRADEONDRI->AGPMode = info->dri->agpMode; + +- pRADEONDRI->frontOffset = info->frontOffset; +- pRADEONDRI->frontPitch = info->frontPitch; +- pRADEONDRI->backOffset = info->backOffset; +- pRADEONDRI->backPitch = info->backPitch; +- pRADEONDRI->depthOffset = info->depthOffset; +- pRADEONDRI->depthPitch = info->depthPitch; +- pRADEONDRI->textureOffset = info->textureOffset; +- pRADEONDRI->textureSize = info->textureSize; +- pRADEONDRI->log2TexGran = info->log2TexGran; ++ pRADEONDRI->frontOffset = info->dri->frontOffset; ++ pRADEONDRI->frontPitch = info->dri->frontPitch; ++ pRADEONDRI->backOffset = info->dri->backOffset; ++ pRADEONDRI->backPitch = info->dri->backPitch; ++ pRADEONDRI->depthOffset = info->dri->depthOffset; ++ pRADEONDRI->depthPitch = info->dri->depthPitch; ++ pRADEONDRI->textureOffset = info->dri->textureOffset; ++ pRADEONDRI->textureSize = info->dri->textureSize; ++ pRADEONDRI->log2TexGran = info->dri->log2TexGran; + +- pRADEONDRI->registerHandle = info->registerHandle; +- pRADEONDRI->registerSize = info->registerSize; ++ pRADEONDRI->registerHandle = info->dri->registerHandle; ++ pRADEONDRI->registerSize = info->dri->registerSize; + +- pRADEONDRI->statusHandle = info->ringReadPtrHandle; +- pRADEONDRI->statusSize = info->ringReadMapSize; ++ pRADEONDRI->statusHandle = info->dri->ringReadPtrHandle; ++ pRADEONDRI->statusSize = info->dri->ringReadMapSize; + +- pRADEONDRI->gartTexHandle = info->gartTexHandle; +- pRADEONDRI->gartTexMapSize = info->gartTexMapSize; +- pRADEONDRI->log2GARTTexGran = info->log2GARTTexGran; +- pRADEONDRI->gartTexOffset = info->gartTexStart; ++ pRADEONDRI->gartTexHandle = info->dri->gartTexHandle; ++ pRADEONDRI->gartTexMapSize = info->dri->gartTexMapSize; ++ pRADEONDRI->log2GARTTexGran = info->dri->log2GARTTexGran; ++ pRADEONDRI->gartTexOffset = info->dri->gartTexStart; + + pRADEONDRI->sarea_priv_offset = sizeof(XF86DRISAREARec); + + #ifdef PER_CONTEXT_SAREA + /* Set per-context SAREA size */ +- pRADEONDRI->perctx_sarea_size = info->perctx_sarea_size; ++ pRADEONDRI->perctx_sarea_size = info->dri->perctx_sarea_size; + #endif + + info->directRenderingInited = TRUE; + + /* Wrap CloseScreen */ +- info->DRICloseScreen = pScreen->CloseScreen; ++ info->dri->DRICloseScreen = pScreen->CloseScreen; + pScreen->CloseScreen = RADEONDRIDoCloseScreen; + + /* disable vblank at startup */ +@@ -1721,7 +1730,7 @@ void RADEONDRIResume(ScreenPtr pScreen) + ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; + RADEONInfoPtr info = RADEONPTR(pScrn); + +- if (info->pKernelDRMVersion->version_minor >= 9) { ++ if (info->dri->pKernelDRMVersion->version_minor >= 9) { + xf86DrvMsg(pScreen->myNum, X_INFO, + "[RESUME] Attempting to re-init Radeon hardware.\n"); + } else { +@@ -1738,7 +1747,7 @@ void RADEONDRIResume(ScreenPtr pScreen) + RADEONSetAgpBase(info, pScreen); + } + +- _ret = drmCommandNone(info->drmFD, DRM_RADEON_CP_RESUME); ++ _ret = drmCommandNone(info->dri->drmFD, DRM_RADEON_CP_RESUME); + if (_ret) { + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "%s: CP resume %d\n", __FUNCTION__, _ret); +@@ -1777,86 +1786,86 @@ void RADEONDRICloseScreen(ScreenPtr pScreen) + { + ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; + RADEONInfoPtr info = RADEONPTR(pScrn); +- drmRadeonInit drmInfo; ++ drm_radeon_init_t drmInfo; + + xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, RADEON_LOGLEVEL_DEBUG, + "RADEONDRICloseScreen\n"); + + #ifdef DAMAGE +- REGION_UNINIT(pScreen, &info->driRegion); ++ REGION_UNINIT(pScreen, &info->dri->driRegion); + #endif + +- if (info->irq) { ++ if (info->dri->irq) { + RADEONDRISetVBlankInterrupt (pScrn, FALSE); +- drmCtlUninstHandler(info->drmFD); +- info->irq = 0; ++ drmCtlUninstHandler(info->dri->drmFD); ++ info->dri->irq = 0; + info->ModeReg->gen_int_cntl = 0; + } + + /* De-allocate vertex buffers */ +- if (info->buffers) { +- drmUnmapBufs(info->buffers); +- info->buffers = NULL; ++ if (info->dri->buffers) { ++ drmUnmapBufs(info->dri->buffers); ++ info->dri->buffers = NULL; + } + + /* De-allocate all kernel resources */ +- memset(&drmInfo, 0, sizeof(drmRadeonInit)); +- drmInfo.func = DRM_RADEON_CLEANUP_CP; +- drmCommandWrite(info->drmFD, DRM_RADEON_CP_INIT, +- &drmInfo, sizeof(drmRadeonInit)); ++ memset(&drmInfo, 0, sizeof(drm_radeon_init_t)); ++ drmInfo.func = RADEON_CLEANUP_CP; ++ drmCommandWrite(info->dri->drmFD, DRM_RADEON_CP_INIT, ++ &drmInfo, sizeof(drm_radeon_init_t)); + + /* De-allocate all GART resources */ +- if (info->gartTex) { +- drmUnmap(info->gartTex, info->gartTexMapSize); +- info->gartTex = NULL; ++ if (info->dri->gartTex) { ++ drmUnmap(info->dri->gartTex, info->dri->gartTexMapSize); ++ info->dri->gartTex = NULL; + } +- if (info->buf) { +- drmUnmap(info->buf, info->bufMapSize); +- info->buf = NULL; ++ if (info->dri->buf) { ++ drmUnmap(info->dri->buf, info->dri->bufMapSize); ++ info->dri->buf = NULL; + } +- if (info->ringReadPtr) { +- drmUnmap(info->ringReadPtr, info->ringReadMapSize); +- info->ringReadPtr = NULL; ++ if (info->dri->ringReadPtr) { ++ drmUnmap(info->dri->ringReadPtr, info->dri->ringReadMapSize); ++ info->dri->ringReadPtr = NULL; + } +- if (info->ring) { +- drmUnmap(info->ring, info->ringMapSize); +- info->ring = NULL; ++ if (info->dri->ring) { ++ drmUnmap(info->dri->ring, info->dri->ringMapSize); ++ info->dri->ring = NULL; + } +- if (info->agpMemHandle != DRM_AGP_NO_HANDLE) { +- drmAgpUnbind(info->drmFD, info->agpMemHandle); +- drmAgpFree(info->drmFD, info->agpMemHandle); +- info->agpMemHandle = DRM_AGP_NO_HANDLE; +- drmAgpRelease(info->drmFD); ++ if (info->dri->agpMemHandle != DRM_AGP_NO_HANDLE) { ++ drmAgpUnbind(info->dri->drmFD, info->dri->agpMemHandle); ++ drmAgpFree(info->dri->drmFD, info->dri->agpMemHandle); ++ info->dri->agpMemHandle = DRM_AGP_NO_HANDLE; ++ drmAgpRelease(info->dri->drmFD); + } +- if (info->pciMemHandle) { +- drmScatterGatherFree(info->drmFD, info->pciMemHandle); +- info->pciMemHandle = 0; ++ if (info->dri->pciMemHandle) { ++ drmScatterGatherFree(info->dri->drmFD, info->dri->pciMemHandle); ++ info->dri->pciMemHandle = 0; + } + +- if (info->pciGartBackup) { +- xfree(info->pciGartBackup); +- info->pciGartBackup = NULL; ++ if (info->dri->pciGartBackup) { ++ xfree(info->dri->pciGartBackup); ++ info->dri->pciGartBackup = NULL; + } + + /* De-allocate all DRI resources */ + DRICloseScreen(pScreen); + + /* De-allocate all DRI data structures */ +- if (info->pDRIInfo) { +- if (info->pDRIInfo->devPrivate) { +- xfree(info->pDRIInfo->devPrivate); +- info->pDRIInfo->devPrivate = NULL; ++ if (info->dri->pDRIInfo) { ++ if (info->dri->pDRIInfo->devPrivate) { ++ xfree(info->dri->pDRIInfo->devPrivate); ++ info->dri->pDRIInfo->devPrivate = NULL; + } +- DRIDestroyInfoRec(info->pDRIInfo); +- info->pDRIInfo = NULL; ++ DRIDestroyInfoRec(info->dri->pDRIInfo); ++ info->dri->pDRIInfo = NULL; + } +- if (info->pVisualConfigs) { +- xfree(info->pVisualConfigs); +- info->pVisualConfigs = NULL; ++ if (info->dri->pVisualConfigs) { ++ xfree(info->dri->pVisualConfigs); ++ info->dri->pVisualConfigs = NULL; + } +- if (info->pVisualConfigsPriv) { +- xfree(info->pVisualConfigsPriv); +- info->pVisualConfigsPriv = NULL; ++ if (info->dri->pVisualConfigsPriv) { ++ xfree(info->dri->pVisualConfigsPriv); ++ info->dri->pVisualConfigsPriv = NULL; + } + } + +@@ -1885,24 +1894,24 @@ static void RADEONDRIRefreshArea(ScrnInfoPtr pScrn, RegionPtr pReg) + RADEONInfoPtr info = RADEONPTR(pScrn); + int i, num; + ScreenPtr pScreen = pScrn->pScreen; +- RADEONSAREAPrivPtr pSAREAPriv = DRIGetSAREAPrivate(pScreen); ++ drm_radeon_sarea_t *pSAREAPriv = DRIGetSAREAPrivate(pScreen); + #ifdef USE_EXA + PixmapPtr pPix = pScreen->GetScreenPixmap(pScreen); + #endif + RegionRec region; + BoxPtr pbox; + +- if (!info->directRenderingInited || !info->CPStarted) ++ if (!info->directRenderingInited || !info->cp->CPStarted) + return; + + /* Don't want to do this when no 3d is active and pages are + * right-way-round + */ +- if (!pSAREAPriv->pfAllowPageFlip && pSAREAPriv->pfCurrentPage == 0) ++ if (!pSAREAPriv->pfState && pSAREAPriv->pfCurrentPage == 0) + return; + + REGION_NULL(pScreen, ®ion); +- REGION_SUBTRACT(pScreen, ®ion, pReg, &info->driRegion); ++ REGION_SUBTRACT(pScreen, ®ion, pReg, &info->dri->driRegion); + + num = REGION_NUM_RECTS(®ion); + +@@ -1919,9 +1928,9 @@ static void RADEONDRIRefreshArea(ScrnInfoPtr pScrn, RegionPtr pReg) + uint32_t src_pitch_offset, dst_pitch_offset, datatype; + + RADEONGetPixmapOffsetPitch(pPix, &src_pitch_offset); +- dst_pitch_offset = src_pitch_offset + (info->backOffset >> 10); ++ dst_pitch_offset = src_pitch_offset + (info->dri->backOffset >> 10); + RADEONGetDatatypeBpp(pScrn->bitsPerPixel, &datatype); +- info->xdir = info->ydir = 1; ++ info->accel_state->xdir = info->accel_state->ydir = 1; + + RADEONDoPrepareCopyCP(pScrn, src_pitch_offset, dst_pitch_offset, datatype, + GXcopy, ~0); +@@ -1931,13 +1940,14 @@ static void RADEONDRIRefreshArea(ScrnInfoPtr pScrn, RegionPtr pReg) + #ifdef USE_XAA + if (!info->useEXA) { + /* Make sure accel has been properly inited */ +- if (info->accel == NULL || info->accel->SetupForScreenToScreenCopy == NULL) ++ if (info->accel_state->accel == NULL || ++ info->accel_state->accel->SetupForScreenToScreenCopy == NULL) + goto out; + if (info->tilingEnabled) +- info->dst_pitch_offset |= RADEON_DST_TILE_MACRO; +- (*info->accel->SetupForScreenToScreenCopy)(pScrn, +- 1, 1, GXcopy, +- (uint32_t)(-1), -1); ++ info->accel_state->dst_pitch_offset |= RADEON_DST_TILE_MACRO; ++ (*info->accel_state->accel->SetupForScreenToScreenCopy)(pScrn, ++ 1, 1, GXcopy, ++ (uint32_t)(-1), -1); + } + #endif + +@@ -1954,23 +1964,23 @@ static void RADEONDRIRefreshArea(ScrnInfoPtr pScrn, RegionPtr pReg) + + #ifdef USE_XAA + if (!info->useEXA) { +- (*info->accel->SubsequentScreenToScreenCopy)(pScrn, xa, ya, +- xa + info->backX, +- ya + info->backY, +- xb - xa + 1, +- yb - ya + 1); ++ (*info->accel_state->accel->SubsequentScreenToScreenCopy)(pScrn, xa, ya, ++ xa + info->dri->backX, ++ ya + info->dri->backY, ++ xb - xa + 1, ++ yb - ya + 1); + } + #endif + } + } + + #ifdef USE_XAA +- info->dst_pitch_offset &= ~RADEON_DST_TILE_MACRO; ++ info->accel_state->dst_pitch_offset &= ~RADEON_DST_TILE_MACRO; + #endif + + out: + REGION_NULL(pScreen, ®ion); +- DamageEmpty(info->pDamage); ++ DamageEmpty(info->dri->pDamage); + } + + #endif /* DAMAGE */ +@@ -1981,13 +1991,13 @@ static void RADEONEnablePageFlip(ScreenPtr pScreen) + ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; + RADEONInfoPtr info = RADEONPTR(pScrn); + +- if (info->allowPageFlip) { +- RADEONSAREAPrivPtr pSAREAPriv = DRIGetSAREAPrivate(pScreen); ++ if (info->dri->allowPageFlip) { ++ drm_radeon_sarea_t *pSAREAPriv = DRIGetSAREAPrivate(pScreen); + BoxRec box = { .x1 = 0, .y1 = 0, .x2 = pScrn->virtualX - 1, + .y2 = pScrn->virtualY - 1 }; + RegionPtr pReg = REGION_CREATE(pScreen, &box, 1); + +- pSAREAPriv->pfAllowPageFlip = 1; ++ pSAREAPriv->pfState = 1; + RADEONDRIRefreshArea(pScrn, pReg); + REGION_DESTROY(pScreen, pReg); + } +@@ -2000,9 +2010,9 @@ static void RADEONDisablePageFlip(ScreenPtr pScreen) + * -- Field in sarea, plus bumping the window counters. + * -- DRM needs to cope with Front-to-Back swapbuffers. + */ +- RADEONSAREAPrivPtr pSAREAPriv = DRIGetSAREAPrivate(pScreen); ++ drm_radeon_sarea_t *pSAREAPriv = DRIGetSAREAPrivate(pScreen); + +- pSAREAPriv->pfAllowPageFlip = 0; ++ pSAREAPriv->pfState = 0; + } + + static void RADEONDRITransitionSingleToMulti3d(ScreenPtr pScreen) +@@ -2034,9 +2044,9 @@ static void RADEONDRITransitionTo3d(ScreenPtr pScreen) + * first so we always start with all free offscreen memory, except + * maybe for Xv + */ +- if (info->backArea) { +- xf86FreeOffscreenArea(info->backArea); +- info->backArea = NULL; ++ if (info->dri->backArea) { ++ xf86FreeOffscreenArea(info->dri->backArea); ++ info->dri->backArea = NULL; + } + + xf86PurgeUnlockedOffscreenAreas(pScreen); +@@ -2047,7 +2057,7 @@ static void RADEONDRITransitionTo3d(ScreenPtr pScreen) + * FIXME: This is hideous. What about telling xv "oh btw you have no memory + * any more?" -- anholt + */ +- if (height < (info->depthTexLines + info->backLines)) { ++ if (height < (info->dri->depthTexLines + info->dri->backLines)) { + RADEONPortPrivPtr portPriv = info->adaptor->pPortPrivates[0].ptr; + xf86FreeOffscreenLinear((FBLinearPtr)portPriv->video_memory); + portPriv->video_memory = NULL; +@@ -2061,29 +2071,29 @@ static void RADEONDRITransitionTo3d(ScreenPtr pScreen) + */ + fbarea = xf86AllocateOffscreenArea(pScreen, pScrn->displayWidth, + height +- - info->depthTexLines +- - info->backLines, ++ - info->dri->depthTexLines ++ - info->dri->backLines, + pScrn->displayWidth, + NULL, NULL, NULL); + if (!fbarea) + xf86DrvMsg(pScreen->myNum, X_ERROR, "Unable to reserve placeholder " + "offscreen area, you might experience screen corruption\n"); + +- info->backArea = xf86AllocateOffscreenArea(pScreen, pScrn->displayWidth, +- info->backLines, +- pScrn->displayWidth, +- NULL, NULL, NULL); +- if (!info->backArea) ++ info->dri->backArea = xf86AllocateOffscreenArea(pScreen, pScrn->displayWidth, ++ info->dri->backLines, ++ pScrn->displayWidth, ++ NULL, NULL, NULL); ++ if (!info->dri->backArea) + xf86DrvMsg(pScreen->myNum, X_ERROR, "Unable to reserve offscreen " + "area for back buffer, you might experience screen " + "corruption\n"); + +- info->depthTexArea = xf86AllocateOffscreenArea(pScreen, +- pScrn->displayWidth, +- info->depthTexLines, +- pScrn->displayWidth, +- NULL, NULL, NULL); +- if (!info->depthTexArea) ++ info->dri->depthTexArea = xf86AllocateOffscreenArea(pScreen, ++ pScrn->displayWidth, ++ info->dri->depthTexLines, ++ pScrn->displayWidth, ++ NULL, NULL, NULL); ++ if (!info->dri->depthTexArea) + xf86DrvMsg(pScreen->myNum, X_ERROR, "Unable to reserve offscreen " + "area for depth buffer and textures, you might " + "experience screen corruption\n"); +@@ -2092,7 +2102,7 @@ static void RADEONDRITransitionTo3d(ScreenPtr pScreen) + } + #endif /* USE_XAA */ + +- info->have3DWindows = 1; ++ info->dri->have3DWindows = 1; + + RADEONChangeSurfaces(pScrn); + RADEONEnablePageFlip(pScreen); +@@ -2108,19 +2118,19 @@ static void RADEONDRITransitionTo2d(ScreenPtr pScreen) + { + ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; + RADEONInfoPtr info = RADEONPTR(pScrn); +- RADEONSAREAPrivPtr pSAREAPriv = DRIGetSAREAPrivate(pScreen); ++ drm_radeon_sarea_t *pSAREAPriv = DRIGetSAREAPrivate(pScreen); + + /* Try flipping back to the front page if necessary */ + if (pSAREAPriv->pfCurrentPage == 1) +- drmCommandNone(info->drmFD, DRM_RADEON_FLIP); ++ drmCommandNone(info->dri->drmFD, DRM_RADEON_FLIP); + + /* Shut down shadowing if we've made it back to the front page */ + if (pSAREAPriv->pfCurrentPage == 0) { + RADEONDisablePageFlip(pScreen); + #ifdef USE_XAA + if (!info->useEXA) { +- xf86FreeOffscreenArea(info->backArea); +- info->backArea = NULL; ++ xf86FreeOffscreenArea(info->dri->backArea); ++ info->dri->backArea = NULL; + } + #endif + } else { +@@ -2131,10 +2141,10 @@ static void RADEONDRITransitionTo2d(ScreenPtr pScreen) + + #ifdef USE_XAA + if (!info->useEXA) +- xf86FreeOffscreenArea(info->depthTexArea); ++ xf86FreeOffscreenArea(info->dri->depthTexArea); + #endif + +- info->have3DWindows = 0; ++ info->dri->have3DWindows = 0; + + RADEONChangeSurfaces(pScrn); + +@@ -2154,8 +2164,8 @@ RADEONDRIClipNotify(ScreenPtr pScreen, WindowPtr *ppWin, int num) + ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; + RADEONInfoPtr info = RADEONPTR(pScrn); + +- REGION_UNINIT(pScreen, &info->driRegion); +- REGION_NULL(pScreen, &info->driRegion); ++ REGION_UNINIT(pScreen, &info->dri->driRegion); ++ REGION_NULL(pScreen, &info->dri->driRegion); + + if (num > 0) { + int i; +@@ -2164,8 +2174,8 @@ RADEONDRIClipNotify(ScreenPtr pScreen, WindowPtr *ppWin, int num) + WindowPtr pWin = ppWin[i]; + + if (pWin) { +- REGION_UNION(pScreen, &info->driRegion, &pWin->clipList, +- &info->driRegion); ++ REGION_UNION(pScreen, &info->dri->driRegion, &pWin->clipList, ++ &info->dri->driRegion); + } + } + } +@@ -2178,24 +2188,24 @@ void RADEONDRIAllocatePCIGARTTable(ScreenPtr pScreen) + RADEONInfoPtr info = RADEONPTR(pScrn); + + if (info->cardType != CARD_PCIE || +- info->pKernelDRMVersion->version_minor < 19) ++ info->dri->pKernelDRMVersion->version_minor < 19) + return; + + if (info->FbSecureSize==0) + return; + + /* set the old default size of pci gart table */ +- if (info->pKernelDRMVersion->version_minor < 26) +- info->pciGartSize = 32768; ++ if (info->dri->pKernelDRMVersion->version_minor < 26) ++ info->dri->pciGartSize = 32768; + +- info->pciGartSize = RADEONDRIGetPciAperTableSize(pScrn); ++ info->dri->pciGartSize = RADEONDRIGetPciAperTableSize(pScrn); + + /* allocate space to back up PCIEGART table */ +- info->pciGartBackup = xnfcalloc(1, info->pciGartSize); +- if (info->pciGartBackup == NULL) ++ info->dri->pciGartBackup = xnfcalloc(1, info->dri->pciGartSize); ++ if (info->dri->pciGartBackup == NULL) + return; + +- info->pciGartOffset = (info->FbMapSize - info->FbSecureSize); ++ info->dri->pciGartOffset = (info->FbMapSize - info->FbSecureSize); + + + } +@@ -2207,7 +2217,7 @@ int RADEONDRIGetPciAperTableSize(ScrnInfoPtr pScrn) + int ret_size; + int num_pages; + +- num_pages = (info->pciAperSize * 1024 * 1024) / page_size; ++ num_pages = (info->dri->pciAperSize * 1024 * 1024) / page_size; + + ret_size = num_pages * sizeof(unsigned int); + +@@ -2216,14 +2226,14 @@ int RADEONDRIGetPciAperTableSize(ScrnInfoPtr pScrn) + + int RADEONDRISetParam(ScrnInfoPtr pScrn, unsigned int param, int64_t value) + { +- drmRadeonSetParam radeonsetparam; ++ drm_radeon_setparam_t radeonsetparam; + RADEONInfoPtr info = RADEONPTR(pScrn); + int ret; + +- memset(&radeonsetparam, 0, sizeof(drmRadeonSetParam)); ++ memset(&radeonsetparam, 0, sizeof(drm_radeon_setparam_t)); + radeonsetparam.param = param; + radeonsetparam.value = value; +- ret = drmCommandWrite(info->drmFD, DRM_RADEON_SETPARAM, +- &radeonsetparam, sizeof(drmRadeonSetParam)); ++ ret = drmCommandWrite(info->dri->drmFD, DRM_RADEON_SETPARAM, ++ &radeonsetparam, sizeof(drm_radeon_setparam_t)); + return ret; + } +diff --git a/src/radeon_dri.h b/src/radeon_dri.h +index 67892a6..6e3ad62 100644 +--- a/src/radeon_dri.h ++++ b/src/radeon_dri.h +@@ -39,9 +39,8 @@ + #include "xf86drm.h" + + /* DRI Driver defaults */ +-#define RADEON_DEFAULT_CP_PIO_MODE RADEON_CSQ_PRIPIO_INDPIO +-#define RADEON_DEFAULT_CP_BM_MODE RADEON_CSQ_PRIBM_INDBM + #define RADEON_DEFAULT_GART_SIZE 8 /* MB (must be 2^n and > 4MB) */ ++#define R300_DEFAULT_GART_SIZE 32 /* MB (for R300 and above) */ + #define RADEON_DEFAULT_RING_SIZE 1 /* MB (must be page aligned) */ + #define RADEON_DEFAULT_BUFFER_SIZE 2 /* MB (must be page aligned) */ + #define RADEON_DEFAULT_GART_TEX_SIZE 1 /* MB (must be page aligned) */ +@@ -52,10 +51,6 @@ + + #define RADEON_CARD_TYPE_RADEON 1 + +-#define RADEONCP_USE_RING_BUFFER(m) \ +- (((m) == RADEON_CSQ_PRIBM_INDDIS) || \ +- ((m) == RADEON_CSQ_PRIBM_INDBM)) +- + typedef struct { + /* DRI screen private data */ + int deviceID; /* PCI device ID */ +diff --git a/src/radeon_dripriv.h b/src/radeon_dripriv.h +deleted file mode 100644 +index fcde08e..0000000 +--- a/src/radeon_dripriv.h ++++ /dev/null +@@ -1,63 +0,0 @@ +-/* +- * Copyright 2000 ATI Technologies Inc., Markham, Ontario, +- * VA Linux Systems Inc., Fremont, California. +- * +- * All Rights Reserved. +- * +- * Permission is hereby granted, free of charge, to any person obtaining +- * a copy of this software and associated documentation files (the +- * "Software"), to deal in the Software without restriction, including +- * without limitation on the rights to use, copy, modify, merge, +- * publish, distribute, sublicense, and/or sell copies of the Software, +- * and to permit persons to whom the Software is furnished to do so, +- * subject to the following conditions: +- * +- * The above copyright notice and this permission notice (including the +- * next paragraph) shall be included in all copies or substantial +- * portions of the Software. +- * +- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +- * NON-INFRINGEMENT. IN NO EVENT SHALL ATI, VA LINUX SYSTEMS AND/OR +- * THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +- * DEALINGS IN THE SOFTWARE. +- */ +- +-/* +- * Authors: +- * Kevin E. Martin <martin@xfree86.org> +- * Rickard E. Faith <faith@valinux.com> +- * +- */ +- +-#ifndef _RADEON_DRIPRIV_H_ +-#define _RADEON_DRIPRIV_H_ +- +-#include "GL/glxint.h" +-#include "xf86drm.h" +-#include "radeon_common.h" +- +-#define RADEON_MAX_DRAWABLES 256 +- +-extern void GlxSetVisualConfigs(int nconfigs, __GLXvisualConfig *configs, +- void **configprivs); +- +-typedef struct { +- /* Nothing here yet */ +- int dummy; +-} RADEONConfigPrivRec, *RADEONConfigPrivPtr; +- +-typedef struct { +-#ifdef PER_CONTEXT_SAREA +- drm_context_t ctx_id; +- drm_handle_t sarea_handle; +-#else +- /* Nothing here yet */ +- int dummy; +-#endif +-} RADEONDRIContextRec, *RADEONDRIContextPtr; +- +-#endif +diff --git a/src/radeon_driver.c b/src/radeon_driver.c +index f18ad99..c759bd6 100644 +--- a/src/radeon_driver.c ++++ b/src/radeon_driver.c +@@ -79,7 +79,7 @@ + #ifdef XF86DRI + #define _XF86DRI_SERVER_ + #include "radeon_dri.h" +-#include "radeon_sarea.h" ++#include "radeon_drm.h" + #include "sarea.h" + #endif + +@@ -498,7 +498,7 @@ static Bool RADEONUnmapMem(ScrnInfoPtr pScrn) + void RADEONPllErrataAfterIndex(RADEONInfoPtr info) + { + unsigned char *RADEONMMIO = info->MMIO; +- ++ + if (!(info->ChipErrata & CHIP_ERRATA_PLL_DUMMYREADS)) + return; + +@@ -669,7 +669,14 @@ static void radeon_write_mc_fb_agp_location(ScrnInfoPtr pScrn, int mask, uint32_ + RADEONInfoPtr info = RADEONPTR(pScrn); + unsigned char *RADEONMMIO = info->MMIO; + +- if (info->ChipFamily >= CHIP_FAMILY_R600) { ++ if (info->ChipFamily >= CHIP_FAMILY_RV770) { ++ if (mask & LOC_FB) ++ OUTREG(R700_MC_VM_FB_LOCATION, fb_loc); ++ if (mask & LOC_AGP) { ++ OUTREG(R600_MC_VM_AGP_BOT, agp_loc); ++ OUTREG(R600_MC_VM_AGP_TOP, agp_loc_hi); ++ } ++ } else if (info->ChipFamily >= CHIP_FAMILY_R600) { + if (mask & LOC_FB) + OUTREG(R600_MC_VM_FB_LOCATION, fb_loc); + if (mask & LOC_AGP) { +@@ -712,7 +719,14 @@ static void radeon_read_mc_fb_agp_location(ScrnInfoPtr pScrn, int mask, uint32_t + RADEONInfoPtr info = RADEONPTR(pScrn); + unsigned char *RADEONMMIO = info->MMIO; + +- if (info->ChipFamily >= CHIP_FAMILY_R600) { ++ if (info->ChipFamily >= CHIP_FAMILY_RV770) { ++ if (mask & LOC_FB) ++ *fb_loc = INREG(R700_MC_VM_FB_LOCATION); ++ if (mask & LOC_AGP) { ++ *agp_loc = INREG(R600_MC_VM_AGP_BOT); ++ *agp_loc_hi = INREG(R600_MC_VM_AGP_TOP); ++ } ++ } else if (info->ChipFamily >= CHIP_FAMILY_R600) { + if (mask & LOC_FB) + *fb_loc = INREG(R600_MC_VM_FB_LOCATION); + if (mask & LOC_AGP) { +@@ -1160,7 +1174,6 @@ static Bool RADEONPreInitVisual(ScrnInfoPtr pScrn) + + xf86PrintDepthBpp(pScrn); + +- info->fifo_slots = 0; + info->pix24bpp = xf86GetBppFromDepth(pScrn, + pScrn->depth); + info->CurrentLayout.bitsPerPixel = pScrn->bitsPerPixel; +@@ -1271,7 +1284,7 @@ static void RADEONInitMemoryMap(ScrnInfoPtr pScrn) + + #ifdef XF86DRI + /* Apply memory map limitation if using an old DRI */ +- if (info->directRenderingEnabled && !info->newMemoryMap) { ++ if (info->directRenderingEnabled && !info->dri->newMemoryMap) { + if (aper_size < mem_size) + mem_size = aper_size; + } +@@ -1286,7 +1299,7 @@ static void RADEONInitMemoryMap(ScrnInfoPtr pScrn) + #ifdef XF86DRI + /* Old DRI has restrictions on the memory map */ + if ( info->directRenderingEnabled && +- info->pKernelDRMVersion->version_minor < 10 ) ++ info->dri->pKernelDRMVersion->version_minor < 10 ) + info->mc_fb_location = (mem_size - 1) & 0xffff0000U; + else + #endif +@@ -1474,18 +1487,18 @@ static uint32_t RADEONGetAccessibleVRAM(ScrnInfoPtr pScrn) + * we need to limit the amount of accessible video memory + */ + if (info->directRenderingEnabled && +- info->pKernelDRMVersion->version_minor < 23) { ++ info->dri->pKernelDRMVersion->version_minor < 23) { + xf86DrvMsg(pScrn->scrnIndex, X_WARNING, + "[dri] limiting video memory to one aperture of %uK\n", + (unsigned)aper_size); + xf86DrvMsg(pScrn->scrnIndex, X_WARNING, + "[dri] detected radeon kernel module version 1.%d but" + " 1.23 or newer is required for full memory mapping.\n", +- info->pKernelDRMVersion->version_minor); +- info->newMemoryMap = FALSE; ++ info->dri->pKernelDRMVersion->version_minor); ++ info->dri->newMemoryMap = FALSE; + return aper_size; + } +- info->newMemoryMap = TRUE; ++ info->dri->newMemoryMap = TRUE; + #endif /* XF86DRI */ + + /* Set HDP_APER_CNTL only on cards that are known not to be broken, +@@ -1893,20 +1906,6 @@ static Bool RADEONPreInitChipType(ScrnInfoPtr pScrn) + return FALSE; + } + +- +- if ((info->ChipFamily == CHIP_FAMILY_RS100) || +- (info->ChipFamily == CHIP_FAMILY_RS200) || +- (info->ChipFamily == CHIP_FAMILY_RS300) || +- (info->ChipFamily == CHIP_FAMILY_RS400) || +- (info->ChipFamily == CHIP_FAMILY_RS480) || +- (info->ChipFamily == CHIP_FAMILY_RS600) || +- (info->ChipFamily == CHIP_FAMILY_RS690) || +- (info->ChipFamily == CHIP_FAMILY_RS740)) +- info->has_tcl = FALSE; +- else { +- info->has_tcl = TRUE; +- } +- + return TRUE; + } + +@@ -1960,6 +1959,25 @@ static Bool RADEONPreInitAccel(ScrnInfoPtr pScrn) + char *optstr; + #endif + ++ if (!(info->accel_state = xcalloc(1, sizeof(struct radeon_accel_state)))) { ++ xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "Unable to allocate accel_state rec!\n"); ++ return FALSE; ++ } ++ info->accel_state->fifo_slots = 0; ++ ++ if ((info->ChipFamily == CHIP_FAMILY_RS100) || ++ (info->ChipFamily == CHIP_FAMILY_RS200) || ++ (info->ChipFamily == CHIP_FAMILY_RS300) || ++ (info->ChipFamily == CHIP_FAMILY_RS400) || ++ (info->ChipFamily == CHIP_FAMILY_RS480) || ++ (info->ChipFamily == CHIP_FAMILY_RS600) || ++ (info->ChipFamily == CHIP_FAMILY_RS690) || ++ (info->ChipFamily == CHIP_FAMILY_RS740)) ++ info->accel_state->has_tcl = FALSE; ++ else { ++ info->accel_state->has_tcl = TRUE; ++ } ++ + info->useEXA = FALSE; + + if (info->ChipFamily >= CHIP_FAMILY_R600) { +@@ -2032,16 +2050,22 @@ static Bool RADEONPreInitAccel(ScrnInfoPtr pScrn) + + static Bool RADEONPreInitInt10(ScrnInfoPtr pScrn, xf86Int10InfoPtr *ppInt10) + { +-#if !defined(__powerpc__) && !defined(__sparc__) ++#if (!defined(__powerpc__) && !defined(__sparc__)) || \ ++ (defined(XSERVER_LIBPCIACCESS) && HAVE_PCI_DEVICE_ENABLE) + RADEONInfoPtr info = RADEONPTR(pScrn); ++#endif ++#if !defined(__powerpc__) && !defined(__sparc__) + unsigned char *RADEONMMIO = info->MMIO; + uint32_t fp2_gen_ctl_save = 0; ++#endif + + #ifdef XSERVER_LIBPCIACCESS + #if HAVE_PCI_DEVICE_ENABLE + pci_device_enable(info->PciInfo); + #endif + #endif ++ ++#if !defined(__powerpc__) && !defined(__sparc__) + /* don't need int10 on atom cards. + * in theory all radeons, but the older stuff + * isn't 100% yet +@@ -2087,10 +2111,19 @@ static Bool RADEONPreInitDRI(ScrnInfoPtr pScrn) + + info->directRenderingEnabled = FALSE; + info->directRenderingInited = FALSE; +- info->CPInUse = FALSE; +- info->CPStarted = FALSE; +- info->pLibDRMVersion = NULL; +- info->pKernelDRMVersion = NULL; ++ ++ if (!(info->dri = xcalloc(1, sizeof(struct radeon_dri)))) { ++ xf86DrvMsg(pScrn->scrnIndex, X_ERROR,"Unable to allocate dri rec!\n"); ++ return FALSE; ++ } ++ ++ if (!(info->cp = xcalloc(1, sizeof(struct radeon_cp)))) { ++ xf86DrvMsg(pScrn->scrnIndex, X_ERROR,"Unable to allocate cp rec!\n"); ++ return FALSE; ++ } ++ info->cp->CPInUse = FALSE; ++ info->cp->CPStarted = FALSE; ++ info->cp->CPusecTimeout = RADEON_DEFAULT_CP_TIMEOUT; + + if (xf86IsEntityShared(info->pEnt->index)) { + xf86DrvMsg(pScrn->scrnIndex, X_WARNING, +@@ -2106,19 +2139,16 @@ static Bool RADEONPreInitDRI(ScrnInfoPtr pScrn) + + if (info->Chipset == PCI_CHIP_RN50_515E || + info->Chipset == PCI_CHIP_RN50_5969 || +- info->Chipset == PCI_CHIP_RC410_5A61 || +- info->Chipset == PCI_CHIP_RC410_5A62 || +- info->Chipset == PCI_CHIP_RS485_5975 || + info->ChipFamily == CHIP_FAMILY_RS600 || + info->ChipFamily >= CHIP_FAMILY_R600) { + if (xf86ReturnOptValBool(info->Options, OPTION_DRI, FALSE)) { + xf86DrvMsg(pScrn->scrnIndex, X_WARNING, +- "Direct rendering for RN50/RC410/RS485/RS600/R600 forced on -- " ++ "Direct rendering for RN50/RS600/R600 forced on -- " + "This is NOT officially supported at the hardware level " + "and may cause instability or lockups\n"); + } else { + xf86DrvMsg(pScrn->scrnIndex, X_INFO, +- "Direct rendering not officially supported on RN50/RC410/R600\n"); ++ "Direct rendering not officially supported on RN50/RS600/R600\n"); + return FALSE; + } + } +@@ -2136,18 +2166,26 @@ static Bool RADEONPreInitDRI(ScrnInfoPtr pScrn) + return FALSE; + } + ++ if (!(info->dri = xcalloc(1, sizeof(struct radeon_dri)))) { ++ ErrorF("Unable to allocate dri rec!\n"); ++ return FALSE; ++ } ++ ++ info->dri->pLibDRMVersion = NULL; ++ info->dri->pKernelDRMVersion = NULL; ++ + if (!RADEONDRIGetVersion(pScrn)) + return FALSE; + + xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "[dri] Found DRI library version %d.%d.%d and kernel" + " module version %d.%d.%d\n", +- info->pLibDRMVersion->version_major, +- info->pLibDRMVersion->version_minor, +- info->pLibDRMVersion->version_patchlevel, +- info->pKernelDRMVersion->version_major, +- info->pKernelDRMVersion->version_minor, +- info->pKernelDRMVersion->version_patchlevel); ++ info->dri->pLibDRMVersion->version_major, ++ info->dri->pLibDRMVersion->version_minor, ++ info->dri->pLibDRMVersion->version_patchlevel, ++ info->dri->pKernelDRMVersion->version_major, ++ info->dri->pKernelDRMVersion->version_minor, ++ info->dri->pKernelDRMVersion->version_patchlevel); + + if (info->Chipset == PCI_CHIP_RS400_5A41 || + info->Chipset == PCI_CHIP_RS400_5A42 || +@@ -2158,7 +2196,7 @@ static Bool RADEONPreInitDRI(ScrnInfoPtr pScrn) + info->Chipset == PCI_CHIP_RS482_5974 || + info->Chipset == PCI_CHIP_RS485_5975) { + +- if (info->pKernelDRMVersion->version_minor < 27) { ++ if (info->dri->pKernelDRMVersion->version_minor < 27) { + xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "Direct rendering broken on XPRESS 200 and 200M with DRI less than 1.27\n"); + return FALSE; +@@ -2167,25 +2205,22 @@ static Bool RADEONPreInitDRI(ScrnInfoPtr pScrn) + "Direct rendering experimental on RS400/Xpress 200 enabled\n"); + } + +- if (xf86ReturnOptValBool(info->Options, OPTION_CP_PIO, FALSE)) { +- xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "Forcing CP into PIO mode\n"); +- info->CPMode = RADEON_DEFAULT_CP_PIO_MODE; +- } else { +- info->CPMode = RADEON_DEFAULT_CP_BM_MODE; +- } ++ if (info->ChipFamily >= CHIP_FAMILY_R300) ++ info->dri->gartSize = R300_DEFAULT_GART_SIZE; ++ else ++ info->dri->gartSize = RADEON_DEFAULT_GART_SIZE; + +- info->gartSize = RADEON_DEFAULT_GART_SIZE; +- info->ringSize = RADEON_DEFAULT_RING_SIZE; +- info->bufSize = RADEON_DEFAULT_BUFFER_SIZE; +- info->gartTexSize = RADEON_DEFAULT_GART_TEX_SIZE; +- info->pciAperSize = RADEON_DEFAULT_PCI_APER_SIZE; +- info->CPusecTimeout = RADEON_DEFAULT_CP_TIMEOUT; ++ info->dri->ringSize = RADEON_DEFAULT_RING_SIZE; ++ info->dri->bufSize = RADEON_DEFAULT_BUFFER_SIZE; ++ info->dri->gartTexSize = RADEON_DEFAULT_GART_TEX_SIZE; ++ info->dri->pciAperSize = RADEON_DEFAULT_PCI_APER_SIZE; ++ info->cp->CPusecTimeout = RADEON_DEFAULT_CP_TIMEOUT; + + if ((xf86GetOptValInteger(info->Options, +- OPTION_GART_SIZE, (int *)&(info->gartSize))) || ++ OPTION_GART_SIZE, (int *)&(info->dri->gartSize))) || + (xf86GetOptValInteger(info->Options, +- OPTION_GART_SIZE_OLD, (int *)&(info->gartSize)))) { +- switch (info->gartSize) { ++ OPTION_GART_SIZE_OLD, (int *)&(info->dri->gartSize)))) { ++ switch (info->dri->gartSize) { + case 4: + case 8: + case 16: +@@ -2197,24 +2232,24 @@ static Bool RADEONPreInitDRI(ScrnInfoPtr pScrn) + + default: + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, +- "Illegal GART size: %d MB\n", info->gartSize); ++ "Illegal GART size: %d MB\n", info->dri->gartSize); + return FALSE; + } + } + + if (xf86GetOptValInteger(info->Options, +- OPTION_RING_SIZE, &(info->ringSize))) { +- if (info->ringSize < 1 || info->ringSize >= (int)info->gartSize) { ++ OPTION_RING_SIZE, &(info->dri->ringSize))) { ++ if (info->dri->ringSize < 1 || info->dri->ringSize >= (int)info->dri->gartSize) { + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "Illegal ring buffer size: %d MB\n", +- info->ringSize); ++ info->dri->ringSize); + return FALSE; + } + } + + if (xf86GetOptValInteger(info->Options, +- OPTION_PCIAPER_SIZE, &(info->pciAperSize))) { +- switch(info->pciAperSize) { ++ OPTION_PCIAPER_SIZE, &(info->dri->pciAperSize))) { ++ switch(info->dri->pciAperSize) { + case 32: + case 64: + case 128: +@@ -2223,63 +2258,63 @@ static Bool RADEONPreInitDRI(ScrnInfoPtr pScrn) + default: + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "Illegal pci aper size: %d MB\n", +- info->pciAperSize); ++ info->dri->pciAperSize); + return FALSE; + } + } + + + if (xf86GetOptValInteger(info->Options, +- OPTION_BUFFER_SIZE, &(info->bufSize))) { +- if (info->bufSize < 1 || info->bufSize >= (int)info->gartSize) { ++ OPTION_BUFFER_SIZE, &(info->dri->bufSize))) { ++ if (info->dri->bufSize < 1 || info->dri->bufSize >= (int)info->dri->gartSize) { + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "Illegal vertex/indirect buffers size: %d MB\n", +- info->bufSize); ++ info->dri->bufSize); + return FALSE; + } +- if (info->bufSize > 2) { ++ if (info->dri->bufSize > 2) { + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "Illegal vertex/indirect buffers size: %d MB\n", +- info->bufSize); ++ info->dri->bufSize); + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "Clamping vertex/indirect buffers size to 2 MB\n"); +- info->bufSize = 2; ++ info->dri->bufSize = 2; + } + } + +- if (info->ringSize + info->bufSize + info->gartTexSize > +- (int)info->gartSize) { ++ if (info->dri->ringSize + info->dri->bufSize + info->dri->gartTexSize > ++ (int)info->dri->gartSize) { + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "Buffers are too big for requested GART space\n"); + return FALSE; + } + +- info->gartTexSize = info->gartSize - (info->ringSize + info->bufSize); ++ info->dri->gartTexSize = info->dri->gartSize - (info->dri->ringSize + info->dri->bufSize); + + if (xf86GetOptValInteger(info->Options, OPTION_USEC_TIMEOUT, +- &(info->CPusecTimeout))) { ++ &(info->cp->CPusecTimeout))) { + /* This option checked by the RADEON DRM kernel module */ + } + + /* Two options to try and squeeze as much texture memory as possible + * for dedicated 3d rendering boxes + */ +- info->noBackBuffer = xf86ReturnOptValBool(info->Options, +- OPTION_NO_BACKBUFFER, +- FALSE); ++ info->dri->noBackBuffer = xf86ReturnOptValBool(info->Options, ++ OPTION_NO_BACKBUFFER, ++ FALSE); + +- info->allowPageFlip = 0; ++ info->dri->allowPageFlip = 0; + + #ifdef DAMAGE +- if (info->noBackBuffer) { ++ if (info->dri->noBackBuffer) { + from = X_DEFAULT; + reason = " because back buffer disabled"; + } else { + from = xf86GetOptValBool(info->Options, OPTION_PAGE_FLIP, +- &info->allowPageFlip) ? X_CONFIG : X_DEFAULT; ++ &info->dri->allowPageFlip) ? X_CONFIG : X_DEFAULT; + + if (IS_AVIVO_VARIANT) { +- info->allowPageFlip = 0; ++ info->dri->allowPageFlip = 0; + reason = " on r5xx and newer chips.\n"; + } else { + reason = ""; +@@ -2292,7 +2327,7 @@ static Bool RADEONPreInitDRI(ScrnInfoPtr pScrn) + #endif + + xf86DrvMsg(pScrn->scrnIndex, from, "Page Flipping %sabled%s\n", +- info->allowPageFlip ? "en" : "dis", reason); ++ info->dri->allowPageFlip ? "en" : "dis", reason); + + info->DMAForXv = TRUE; + from = xf86GetOptValBool(info->Options, OPTION_XV_DMA, &info->DMAForXv) +@@ -2332,15 +2367,15 @@ static void RADEONPreInitColorTiling(ScrnInfoPtr pScrn) + + #ifdef XF86DRI + if (info->directRenderingEnabled && +- info->pKernelDRMVersion->version_minor < 14) { ++ info->dri->pKernelDRMVersion->version_minor < 14) { + xf86DrvMsg(pScrn->scrnIndex, X_WARNING, + "[dri] color tiling disabled because of version " + "mismatch.\n" + "[dri] radeon.o kernel module version is %d.%d.%d but " + "1.14.0 or later is required for color tiling.\n", +- info->pKernelDRMVersion->version_major, +- info->pKernelDRMVersion->version_minor, +- info->pKernelDRMVersion->version_patchlevel); ++ info->dri->pKernelDRMVersion->version_major, ++ info->dri->pKernelDRMVersion->version_minor, ++ info->dri->pKernelDRMVersion->version_patchlevel); + info->allowColorTiling = FALSE; + return; + } +@@ -2994,7 +3029,7 @@ static void RADEONLoadPalette(ScrnInfoPtr pScrn, int numColors, + int c; + + #ifdef XF86DRI +- if (info->CPStarted && pScrn->pScreen) DRILock(pScrn->pScreen, 0); ++ if (info->cp->CPStarted && pScrn->pScreen) DRILock(pScrn->pScreen, 0); + #endif + + if (info->accelOn && pScrn->pScreen) +@@ -3058,7 +3093,7 @@ static void RADEONLoadPalette(ScrnInfoPtr pScrn, int numColors, + } + + #ifdef XF86DRI +- if (info->CPStarted && pScrn->pScreen) DRIUnlock(pScrn->pScreen); ++ if (info->cp->CPStarted && pScrn->pScreen) DRIUnlock(pScrn->pScreen); + #endif + } + +@@ -3077,12 +3112,12 @@ static void RADEONBlockHandler(int i, pointer blockData, + (*info->VideoTimerCallback)(pScrn, currentTime.milliseconds); + + #if defined(RENDER) && defined(USE_XAA) +- if(info->RenderCallback) +- (*info->RenderCallback)(pScrn); ++ if(info->accel_state->RenderCallback) ++ (*info->accel_state->RenderCallback)(pScrn); + #endif + + #ifdef USE_EXA +- info->engineMode = EXA_ENGINEMODE_UNKNOWN; ++ info->accel_state->engineMode = EXA_ENGINEMODE_UNKNOWN; + #endif + } + +@@ -3175,17 +3210,17 @@ Bool RADEONScreenInit(int scrnIndex, ScreenPtr pScreen, + + info->accelOn = FALSE; + #ifdef USE_XAA +- info->accel = NULL; ++ info->accel_state->accel = NULL; + #endif + #ifdef XF86DRI +- pScrn->fbOffset = info->frontOffset; ++ pScrn->fbOffset = info->dri->frontOffset; + #endif + + if (info->IsSecondary) pScrn->fbOffset = pScrn->videoRam * 1024; + #ifdef XF86DRI + xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "RADEONScreenInit %lx %ld %d\n", +- pScrn->memPhysBase, pScrn->fbOffset, info->frontOffset); ++ pScrn->memPhysBase, pScrn->fbOffset, info->dri->frontOffset); + #else + xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, RADEON_LOGLEVEL_DEBUG, + "RADEONScreenInit %lx %ld\n", +@@ -3194,8 +3229,8 @@ Bool RADEONScreenInit(int scrnIndex, ScreenPtr pScreen, + if (!RADEONMapMem(pScrn)) return FALSE; + + #ifdef XF86DRI +- info->fbX = 0; +- info->fbY = 0; ++ info->dri->fbX = 0; ++ info->dri->fbY = 0; + #endif + + info->PaletteSavedOnVT = FALSE; +@@ -3249,21 +3284,21 @@ Bool RADEONScreenInit(int scrnIndex, ScreenPtr pScreen, + if (info->directRenderingEnabled) { + MessageType from; + +- info->depthBits = pScrn->depth; ++ info->dri->depthBits = pScrn->depth; + + from = xf86GetOptValInteger(info->Options, OPTION_DEPTH_BITS, +- &info->depthBits) ++ &info->dri->depthBits) + ? X_CONFIG : X_DEFAULT; + +- if (info->depthBits != 16 && info->depthBits != 24) { ++ if (info->dri->depthBits != 16 && info->dri->depthBits != 24) { + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "Value for Option \"DepthBits\" must be 16 or 24\n"); +- info->depthBits = pScrn->depth; ++ info->dri->depthBits = pScrn->depth; + from = X_DEFAULT; + } + + xf86DrvMsg(pScrn->scrnIndex, from, +- "Using %d bit depth buffer\n", info->depthBits); ++ "Using %d bit depth buffer\n", info->dri->depthBits); + } + + +@@ -3276,7 +3311,7 @@ Bool RADEONScreenInit(int scrnIndex, ScreenPtr pScreen, + RADEONInitMemoryMap(pScrn); + + /* empty the surfaces */ +- { ++ if (info->ChipFamily < CHIP_FAMILY_R600) { + unsigned char *RADEONMMIO = info->MMIO; + unsigned int j; + for (j = 0; j < 8; j++) { +@@ -3288,14 +3323,14 @@ Bool RADEONScreenInit(int scrnIndex, ScreenPtr pScreen, + + #ifdef XF86DRI + /* Depth moves are disabled by default since they are extremely slow */ +- info->depthMoves = xf86ReturnOptValBool(info->Options, ++ info->dri->depthMoves = xf86ReturnOptValBool(info->Options, + OPTION_DEPTH_MOVE, FALSE); +- if (info->depthMoves && info->allowColorTiling) { ++ if (info->dri->depthMoves && info->allowColorTiling) { + xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "Enabling depth moves\n"); +- } else if (info->depthMoves) { ++ } else if (info->dri->depthMoves) { + xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "Depth moves don't work without color tiling, disabled\n"); +- info->depthMoves = FALSE; ++ info->dri->depthMoves = FALSE; + } else { + xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "Depth moves disabled by default\n"); +@@ -3331,15 +3366,15 @@ Bool RADEONScreenInit(int scrnIndex, ScreenPtr pScreen, + * default, can be overridden with Option "FBTexPercent". + * Round down to a whole number of texture regions. + */ +- info->textureSize = 50; ++ info->dri->textureSize = 50; + + if (xf86GetOptValInteger(info->Options, OPTION_FBTEX_PERCENT, +- &(info->textureSize))) { +- if (info->textureSize < 0 || info->textureSize > 100) { ++ &(info->dri->textureSize))) { ++ if (info->dri->textureSize < 0 || info->dri->textureSize > 100) { + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "Illegal texture memory percentage: %dx, setting to default 50%%\n", +- info->textureSize); +- info->textureSize = 50; ++ info->dri->textureSize); ++ info->dri->textureSize = 50; + } + } + } +@@ -3356,19 +3391,19 @@ Bool RADEONScreenInit(int scrnIndex, ScreenPtr pScreen, + + #if defined(XF86DRI) && defined(USE_XAA) + if (!info->useEXA && hasDRI) { +- info->textureSize = -1; ++ info->dri->textureSize = -1; + if (xf86GetOptValInteger(info->Options, OPTION_FBTEX_PERCENT, +- &(info->textureSize))) { +- if (info->textureSize < 0 || info->textureSize > 100) { ++ &(info->dri->textureSize))) { ++ if (info->dri->textureSize < 0 || info->dri->textureSize > 100) { + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "Illegal texture memory percentage: %dx, using default behaviour\n", +- info->textureSize); +- info->textureSize = -1; ++ info->dri->textureSize); ++ info->dri->textureSize = -1; + } + } + if (!RADEONSetupMemXAA_DRI(scrnIndex, pScreen)) + return FALSE; +- pScrn->fbOffset = info->frontOffset; ++ pScrn->fbOffset = info->dri->frontOffset; + } + #endif + +@@ -3377,8 +3412,9 @@ Bool RADEONScreenInit(int scrnIndex, ScreenPtr pScreen, + return FALSE; + #endif + +- info->dst_pitch_offset = (((pScrn->displayWidth * info->CurrentLayout.pixel_bytes / 64) +- << 22) | ((info->fbLocation + pScrn->fbOffset) >> 10)); ++ info->accel_state->dst_pitch_offset = ++ (((pScrn->displayWidth * info->CurrentLayout.pixel_bytes / 64) ++ << 22) | ((info->fbLocation + pScrn->fbOffset) >> 10)); + + /* Setup DRI after visuals have been established, but before fbScreenInit is + * called. fbScreenInit will eventually call the driver's InitGLXVisuals +@@ -3408,18 +3444,18 @@ Bool RADEONScreenInit(int scrnIndex, ScreenPtr pScreen, + } + + /* Tell DRI about new memory map */ +- if (info->directRenderingEnabled && info->newMemoryMap) { ++ if (info->directRenderingEnabled && info->dri->newMemoryMap) { + if (RADEONDRISetParam(pScrn, RADEON_SETPARAM_NEW_MEMMAP, 1) < 0) { + xf86DrvMsg(pScrn->scrnIndex, X_WARNING, + "[drm] failed to enable new memory map\n"); + RADEONDRICloseScreen(pScreen); +- info->directRenderingEnabled = FALSE; ++ info->directRenderingEnabled = FALSE; + } + } + #endif + xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, RADEON_LOGLEVEL_DEBUG, + "Initializing fb layer\n"); +- ++ + if (info->r600_shadow_fb) { + info->fb_shadow = xcalloc(1, + pScrn->displayWidth * pScrn->virtualY * +@@ -3473,18 +3509,16 @@ Bool RADEONScreenInit(int scrnIndex, ScreenPtr pScreen, + else if (strcmp(s, "BGR") == 0) subPixelOrder = SubPixelHorizontalBGR; + else if (strcmp(s, "NONE") == 0) subPixelOrder = SubPixelNone; + PictureSetSubpixelOrder (pScreen, subPixelOrder); +- } ++ } + #endif + + pScrn->vtSema = TRUE; + +- /* xf86CrtcRotate() accesses pScrn->pScreen */ +- pScrn->pScreen = pScreen; +- +- if (!xf86SetDesiredModes (pScrn)) +- return FALSE; +- +- RADEONSaveScreen(pScreen, SCREEN_SAVER_ON); ++ /* restore the memory map here otherwise we may get a hang when ++ * initializing the drm below ++ */ ++ RADEONInitMemMapRegisters(pScrn, info->ModeReg, info); ++ RADEONRestoreMemMapRegisters(pScrn, info->ModeReg); + + /* Backing store setup */ + xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, RADEON_LOGLEVEL_DEBUG, +@@ -3495,14 +3529,14 @@ Bool RADEONScreenInit(int scrnIndex, ScreenPtr pScreen, + /* DRI finalisation */ + #ifdef XF86DRI + if (info->directRenderingEnabled && info->cardType==CARD_PCIE && +- info->pKernelDRMVersion->version_minor >= 19) ++ info->dri->pKernelDRMVersion->version_minor >= 19) + { +- if (RADEONDRISetParam(pScrn, RADEON_SETPARAM_PCIGART_LOCATION, info->pciGartOffset) < 0) ++ if (RADEONDRISetParam(pScrn, RADEON_SETPARAM_PCIGART_LOCATION, info->dri->pciGartOffset) < 0) + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "[drm] failed set pci gart location\n"); + +- if (info->pKernelDRMVersion->version_minor >= 26) { +- if (RADEONDRISetParam(pScrn, RADEON_SETPARAM_PCIGART_TABLE_SIZE, info->pciGartSize) < 0) ++ if (info->dri->pKernelDRMVersion->version_minor >= 26) { ++ if (RADEONDRISetParam(pScrn, RADEON_SETPARAM_PCIGART_TABLE_SIZE, info->dri->pciGartSize) < 0) + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "[drm] failed set pci gart table size\n"); + } +@@ -3519,10 +3553,6 @@ Bool RADEONScreenInit(int scrnIndex, ScreenPtr pScreen, + */ + RADEONAdjustMemMapRegisters(pScrn, info->ModeReg); + +- if ((info->DispPriority == 1) && (info->cardType==CARD_AGP)) { +- /* we need to re-calculate bandwidth because of AGPMode difference. */ +- RADEONInitDispBandwidth(pScrn); +- } + xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Direct rendering enabled\n"); + + /* we might already be in tiled mode, tell drm about it */ +@@ -3620,6 +3650,10 @@ Bool RADEONScreenInit(int scrnIndex, ScreenPtr pScreen, + } + } + ++ /* set the modes with desired rotation, etc. */ ++ if (!xf86SetDesiredModes (pScrn)) ++ return FALSE; ++ + /* Provide SaveScreen & wrap BlockHandler and CloseScreen */ + /* Wrap CloseScreen */ + info->CloseScreen = pScreen->CloseScreen; +@@ -3910,7 +3944,7 @@ static void RADEONAdjustMemMapRegisters(ScrnInfoPtr pScrn, RADEONSavePtr save) + else + info->fbLocation = (info->mc_fb_location & 0xffff) << 16; + +- info->dst_pitch_offset = ++ info->accel_state->dst_pitch_offset = + (((pScrn->displayWidth * info->CurrentLayout.pixel_bytes / 64) + << 22) | ((info->fbLocation + pScrn->fbOffset) >> 10)); + RADEONInitMemMapRegisters(pScrn, save, info); +@@ -3920,14 +3954,14 @@ static void RADEONAdjustMemMapRegisters(ScrnInfoPtr pScrn, RADEONSavePtr save) + #ifdef USE_EXA + if (info->accelDFS) + { +- drmRadeonGetParam gp; ++ drm_radeon_getparam_t gp; + int gart_base; + + memset(&gp, 0, sizeof(gp)); + gp.param = RADEON_PARAM_GART_BASE; + gp.value = &gart_base; + +- if (drmCommandWriteRead(info->drmFD, DRM_RADEON_GETPARAM, &gp, ++ if (drmCommandWriteRead(info->dri->drmFD, DRM_RADEON_GETPARAM, &gp, + sizeof(gp)) < 0) { + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "Failed to determine GART area MC location, not using " +@@ -4011,35 +4045,35 @@ void RADEONChangeSurfaces(ScrnInfoPtr pScrn) + } + #ifdef XF86DRI + if (info->directRenderingInited) { +- drmRadeonSurfaceFree drmsurffree; +- drmRadeonSurfaceAlloc drmsurfalloc; ++ drm_radeon_surface_free_t drmsurffree; ++ drm_radeon_surface_alloc_t drmsurfalloc; + int retvalue; +- int depthCpp = (info->depthBits - 8) / 4; ++ int depthCpp = (info->dri->depthBits - 8) / 4; + int depth_width_bytes = pScrn->displayWidth * depthCpp; + int depthBufferSize = ((((pScrn->virtualY + 15) & ~15) * depth_width_bytes + + RADEON_BUFFER_ALIGN) & ~RADEON_BUFFER_ALIGN); + unsigned int depth_pattern; + +- drmsurffree.address = info->frontOffset; +- retvalue = drmCommandWrite(info->drmFD, DRM_RADEON_SURF_FREE, ++ drmsurffree.address = info->dri->frontOffset; ++ retvalue = drmCommandWrite(info->dri->drmFD, DRM_RADEON_SURF_FREE, + &drmsurffree, sizeof(drmsurffree)); + + if (!((info->ChipFamily == CHIP_FAMILY_RV100) || + (info->ChipFamily == CHIP_FAMILY_RS100) || + (info->ChipFamily == CHIP_FAMILY_RS200))) { +- drmsurffree.address = info->depthOffset; +- retvalue = drmCommandWrite(info->drmFD, DRM_RADEON_SURF_FREE, ++ drmsurffree.address = info->dri->depthOffset; ++ retvalue = drmCommandWrite(info->dri->drmFD, DRM_RADEON_SURF_FREE, + &drmsurffree, sizeof(drmsurffree)); + } + +- if (!info->noBackBuffer) { +- drmsurffree.address = info->backOffset; +- retvalue = drmCommandWrite(info->drmFD, DRM_RADEON_SURF_FREE, ++ if (!info->dri->noBackBuffer) { ++ drmsurffree.address = info->dri->backOffset; ++ retvalue = drmCommandWrite(info->dri->drmFD, DRM_RADEON_SURF_FREE, + &drmsurffree, sizeof(drmsurffree)); + } + + drmsurfalloc.size = bufferSize; +- drmsurfalloc.address = info->frontOffset; ++ drmsurfalloc.address = info->dri->frontOffset; + drmsurfalloc.flags = swap_pattern; + + if (info->tilingEnabled) { +@@ -4048,15 +4082,15 @@ void RADEONChangeSurfaces(ScrnInfoPtr pScrn) + else + drmsurfalloc.flags |= (width_bytes / 16) | color_pattern; + } +- retvalue = drmCommandWrite(info->drmFD, DRM_RADEON_SURF_ALLOC, ++ retvalue = drmCommandWrite(info->dri->drmFD, DRM_RADEON_SURF_ALLOC, + &drmsurfalloc, sizeof(drmsurfalloc)); + if (retvalue < 0) + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "drm: could not allocate surface for front buffer!\n"); + +- if ((info->have3DWindows) && (!info->noBackBuffer)) { +- drmsurfalloc.address = info->backOffset; +- retvalue = drmCommandWrite(info->drmFD, DRM_RADEON_SURF_ALLOC, ++ if ((info->dri->have3DWindows) && (!info->dri->noBackBuffer)) { ++ drmsurfalloc.address = info->dri->backOffset; ++ retvalue = drmCommandWrite(info->dri->drmFD, DRM_RADEON_SURF_ALLOC, + &drmsurfalloc, sizeof(drmsurfalloc)); + if (retvalue < 0) + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, +@@ -4081,18 +4115,18 @@ void RADEONChangeSurfaces(ScrnInfoPtr pScrn) + } + + /* rv100 and probably the derivative igps don't have depth tiling on all the time? */ +- if (info->have3DWindows && ++ if (info->dri->have3DWindows && + (!((info->ChipFamily == CHIP_FAMILY_RV100) || + (info->ChipFamily == CHIP_FAMILY_RS100) || + (info->ChipFamily == CHIP_FAMILY_RS200)))) { +- drmRadeonSurfaceAlloc drmsurfalloc; ++ drm_radeon_surface_alloc_t drmsurfalloc; + drmsurfalloc.size = depthBufferSize; +- drmsurfalloc.address = info->depthOffset; ++ drmsurfalloc.address = info->dri->depthOffset; + if (IS_R300_VARIANT || IS_AVIVO_VARIANT) + drmsurfalloc.flags = swap_pattern | (depth_width_bytes / 8) | depth_pattern; + else + drmsurfalloc.flags = swap_pattern | (depth_width_bytes / 16) | depth_pattern; +- retvalue = drmCommandWrite(info->drmFD, DRM_RADEON_SURF_ALLOC, ++ retvalue = drmCommandWrite(info->dri->drmFD, DRM_RADEON_SURF_ALLOC, + &drmsurfalloc, sizeof(drmsurfalloc)); + if (retvalue < 0) + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, +@@ -4178,6 +4212,7 @@ avivo_save(ScrnInfoPtr pScrn, RADEONSavePtr save) + + state->crtc_master_en = INREG(AVIVO_DC_CRTC_MASTER_EN); + state->crtc_tv_control = INREG(AVIVO_DC_CRTC_TV_CONTROL); ++ state->dc_lb_memory_split = INREG(AVIVO_DC_LB_MEMORY_SPLIT); + + state->pll1.ref_div_src = INREG(AVIVO_EXT1_PPLL_REF_DIV_SRC); + state->pll1.ref_div = INREG(AVIVO_EXT1_PPLL_REF_DIV); +@@ -4233,8 +4268,10 @@ avivo_save(ScrnInfoPtr pScrn, RADEONSavePtr save) + state->grph1.x_end = INREG(AVIVO_D1GRPH_X_END); + state->grph1.y_end = INREG(AVIVO_D1GRPH_Y_END); + ++ state->grph1.desktop_height = INREG(AVIVO_D1MODE_DESKTOP_HEIGHT); + state->grph1.viewport_start = INREG(AVIVO_D1MODE_VIEWPORT_START); + state->grph1.viewport_size = INREG(AVIVO_D1MODE_VIEWPORT_SIZE); ++ state->grph1.mode_data_format = INREG(AVIVO_D1MODE_DATA_FORMAT); + + state->crtc2.pll_source = INREG(AVIVO_PCLK_CRTC2_CNTL); + +@@ -4272,8 +4309,10 @@ avivo_save(ScrnInfoPtr pScrn, RADEONSavePtr save) + state->grph2.x_end = INREG(AVIVO_D2GRPH_X_END); + state->grph2.y_end = INREG(AVIVO_D2GRPH_Y_END); + ++ state->grph2.desktop_height = INREG(AVIVO_D2MODE_DESKTOP_HEIGHT); + state->grph2.viewport_start = INREG(AVIVO_D2MODE_VIEWPORT_START); + state->grph2.viewport_size = INREG(AVIVO_D2MODE_VIEWPORT_SIZE); ++ state->grph2.mode_data_format = INREG(AVIVO_D2MODE_DATA_FORMAT); + + if (IS_DCE3_VARIANT) { + /* save DVOA regs */ +@@ -4477,14 +4516,71 @@ avivo_restore(ScrnInfoPtr pScrn, RADEONSavePtr restore) + struct avivo_state *state = &restore->avivo; + int i, j; + +- // OUTMC(pScrn, AVIVO_MC_MEMORY_MAP, state->mc_memory_map); +- // OUTREG(AVIVO_VGA_MEMORY_BASE, state->vga_memory_base); +- // OUTREG(AVIVO_VGA_FB_START, state->vga_fb_start); ++ xf86DrvMsg(pScrn->scrnIndex, X_INFO, "avivo_restore !\n"); ++ ++ /* Disable VGA control for now.. maybe needs to be changed */ ++ OUTREG(AVIVO_D1VGA_CONTROL, 0); ++ OUTREG(AVIVO_D2VGA_CONTROL, 0); ++ ++ /* Disable CRTCs */ ++ OUTREG(AVIVO_D1CRTC_CONTROL, ++ (INREG(AVIVO_D1CRTC_CONTROL) & ~0x300) | 0x01000000); ++ OUTREG(AVIVO_D2CRTC_CONTROL, ++ (INREG(AVIVO_D2CRTC_CONTROL) & ~0x300) | 0x01000000); ++ OUTREG(AVIVO_D1CRTC_CONTROL, ++ INREG(AVIVO_D1CRTC_CONTROL) & ~0x1); ++ OUTREG(AVIVO_D2CRTC_CONTROL, ++ INREG(AVIVO_D2CRTC_CONTROL) & ~0x1); ++ OUTREG(AVIVO_D1CRTC_CONTROL, ++ INREG(AVIVO_D1CRTC_CONTROL) | 0x100); ++ OUTREG(AVIVO_D2CRTC_CONTROL, ++ INREG(AVIVO_D2CRTC_CONTROL) | 0x100); ++ ++ /* Lock graph registers */ ++ OUTREG(AVIVO_D1GRPH_UPDATE, AVIVO_D1GRPH_UPDATE_LOCK); ++ OUTREG(AVIVO_D1GRPH_PRIMARY_SURFACE_ADDRESS, state->grph1.prim_surf_addr); ++ OUTREG(AVIVO_D1GRPH_SECONDARY_SURFACE_ADDRESS, state->grph1.sec_surf_addr); ++ OUTREG(AVIVO_D1GRPH_CONTROL, state->grph1.control); ++ OUTREG(AVIVO_D1GRPH_SURFACE_OFFSET_X, state->grph1.x_offset); ++ OUTREG(AVIVO_D1GRPH_SURFACE_OFFSET_Y, state->grph1.y_offset); ++ OUTREG(AVIVO_D1GRPH_X_START, state->grph1.x_start); ++ OUTREG(AVIVO_D1GRPH_Y_START, state->grph1.y_start); ++ OUTREG(AVIVO_D1GRPH_X_END, state->grph1.x_end); ++ OUTREG(AVIVO_D1GRPH_Y_END, state->grph1.y_end); ++ OUTREG(AVIVO_D1GRPH_PITCH, state->grph1.pitch); ++ OUTREG(AVIVO_D1GRPH_ENABLE, state->grph1.enable); ++ OUTREG(AVIVO_D1GRPH_UPDATE, 0); ++ ++ OUTREG(AVIVO_D2GRPH_UPDATE, AVIVO_D1GRPH_UPDATE_LOCK); ++ OUTREG(AVIVO_D2GRPH_PRIMARY_SURFACE_ADDRESS, state->grph2.prim_surf_addr); ++ OUTREG(AVIVO_D2GRPH_SECONDARY_SURFACE_ADDRESS, state->grph2.sec_surf_addr); ++ OUTREG(AVIVO_D2GRPH_CONTROL, state->grph2.control); ++ OUTREG(AVIVO_D2GRPH_SURFACE_OFFSET_X, state->grph2.x_offset); ++ OUTREG(AVIVO_D2GRPH_SURFACE_OFFSET_Y, state->grph2.y_offset); ++ OUTREG(AVIVO_D2GRPH_X_START, state->grph2.x_start); ++ OUTREG(AVIVO_D2GRPH_Y_START, state->grph2.y_start); ++ OUTREG(AVIVO_D2GRPH_X_END, state->grph2.x_end); ++ OUTREG(AVIVO_D2GRPH_Y_END, state->grph2.y_end); ++ OUTREG(AVIVO_D2GRPH_PITCH, state->grph2.pitch); ++ OUTREG(AVIVO_D2GRPH_ENABLE, state->grph2.enable); ++ OUTREG(AVIVO_D2GRPH_UPDATE, 0); + ++ /* Whack some mode regs too */ ++ OUTREG(AVIVO_D1SCL_UPDATE, AVIVO_D1SCL_UPDATE_LOCK); ++ OUTREG(AVIVO_D1MODE_DESKTOP_HEIGHT, state->grph1.desktop_height); ++ OUTREG(AVIVO_D1MODE_VIEWPORT_START, state->grph1.viewport_start); ++ OUTREG(AVIVO_D1MODE_VIEWPORT_SIZE, state->grph1.viewport_size); ++ OUTREG(AVIVO_D1MODE_DATA_FORMAT, state->grph1.mode_data_format); ++ OUTREG(AVIVO_D1SCL_UPDATE, 0); + +- OUTREG(AVIVO_DC_CRTC_MASTER_EN, state->crtc_master_en); +- OUTREG(AVIVO_DC_CRTC_TV_CONTROL, state->crtc_tv_control); ++ OUTREG(AVIVO_D2SCL_UPDATE, AVIVO_D1SCL_UPDATE_LOCK); ++ OUTREG(AVIVO_D2MODE_DESKTOP_HEIGHT, state->grph2.desktop_height); ++ OUTREG(AVIVO_D2MODE_VIEWPORT_START, state->grph2.viewport_start); ++ OUTREG(AVIVO_D2MODE_VIEWPORT_SIZE, state->grph2.viewport_size); ++ OUTREG(AVIVO_D2MODE_DATA_FORMAT, state->grph2.mode_data_format); ++ OUTREG(AVIVO_D2SCL_UPDATE, 0); + ++ /* Set the PLL */ + OUTREG(AVIVO_EXT1_PPLL_REF_DIV_SRC, state->pll1.ref_div_src); + OUTREG(AVIVO_EXT1_PPLL_REF_DIV, state->pll1.ref_div); + OUTREG(AVIVO_EXT1_PPLL_FB_DIV, state->pll1.fb_div); +@@ -4504,7 +4600,9 @@ avivo_restore(ScrnInfoPtr pScrn, RADEONSavePtr restore) + OUTREG(AVIVO_P2PLL_INT_SS_CNTL, state->pll2.int_ss_cntl); + + OUTREG(AVIVO_PCLK_CRTC1_CNTL, state->crtc1.pll_source); ++ OUTREG(AVIVO_PCLK_CRTC2_CNTL, state->crtc2.pll_source); + ++ /* Set the CRTC */ + OUTREG(AVIVO_D1CRTC_H_TOTAL, state->crtc1.h_total); + OUTREG(AVIVO_D1CRTC_H_BLANK_START_END, state->crtc1.h_blank_start_end); + OUTREG(AVIVO_D1CRTC_H_SYNC_A, state->crtc1.h_sync_a); +@@ -4519,29 +4617,12 @@ avivo_restore(ScrnInfoPtr pScrn, RADEONSavePtr restore) + OUTREG(AVIVO_D1CRTC_V_SYNC_B, state->crtc1.v_sync_b); + OUTREG(AVIVO_D1CRTC_V_SYNC_B_CNTL, state->crtc1.v_sync_b_cntl); + +- OUTREG(AVIVO_D1CRTC_CONTROL, state->crtc1.control); +- OUTREG(AVIVO_D1CRTC_BLANK_CONTROL, state->crtc1.blank_control); + OUTREG(AVIVO_D1CRTC_INTERLACE_CONTROL, state->crtc1.interlace_control); + OUTREG(AVIVO_D1CRTC_STEREO_CONTROL, state->crtc1.stereo_control); + + OUTREG(AVIVO_D1CUR_CONTROL, state->crtc1.cursor_control); + +- OUTREG(AVIVO_D1GRPH_ENABLE, state->grph1.enable); +- OUTREG(AVIVO_D1GRPH_CONTROL, state->grph1.control); +- OUTREG(AVIVO_D1GRPH_PRIMARY_SURFACE_ADDRESS, state->grph1.prim_surf_addr); +- OUTREG(AVIVO_D1GRPH_SECONDARY_SURFACE_ADDRESS, state->grph1.sec_surf_addr); +- OUTREG(AVIVO_D1GRPH_PITCH, state->grph1.pitch); +- OUTREG(AVIVO_D1GRPH_SURFACE_OFFSET_X, state->grph1.x_offset); +- OUTREG(AVIVO_D1GRPH_SURFACE_OFFSET_Y, state->grph1.y_offset); +- OUTREG(AVIVO_D1GRPH_X_START, state->grph1.x_start); +- OUTREG(AVIVO_D1GRPH_Y_START, state->grph1.y_start); +- OUTREG(AVIVO_D1GRPH_X_END, state->grph1.x_end); +- OUTREG(AVIVO_D1GRPH_Y_END, state->grph1.y_end); +- +- OUTREG(AVIVO_D1MODE_VIEWPORT_START, state->grph1.viewport_start); +- OUTREG(AVIVO_D1MODE_VIEWPORT_SIZE, state->grph1.viewport_size); +- +- OUTREG(AVIVO_PCLK_CRTC2_CNTL, state->crtc2.pll_source); ++ /* XXX Fix scaler */ + + OUTREG(AVIVO_D2CRTC_H_TOTAL, state->crtc2.h_total); + OUTREG(AVIVO_D2CRTC_H_BLANK_START_END, state->crtc2.h_blank_start_end); +@@ -4557,29 +4638,11 @@ avivo_restore(ScrnInfoPtr pScrn, RADEONSavePtr restore) + OUTREG(AVIVO_D2CRTC_V_SYNC_B, state->crtc2.v_sync_b); + OUTREG(AVIVO_D2CRTC_V_SYNC_B_CNTL, state->crtc2.v_sync_b_cntl); + +- OUTREG(AVIVO_D2CRTC_CONTROL, state->crtc2.control); +- OUTREG(AVIVO_D2CRTC_BLANK_CONTROL, state->crtc2.blank_control); + OUTREG(AVIVO_D2CRTC_INTERLACE_CONTROL, state->crtc2.interlace_control); + OUTREG(AVIVO_D2CRTC_STEREO_CONTROL, state->crtc2.stereo_control); + + OUTREG(AVIVO_D2CUR_CONTROL, state->crtc2.cursor_control); + +- OUTREG(AVIVO_D2GRPH_ENABLE, state->grph2.enable); +- OUTREG(AVIVO_D2GRPH_CONTROL, state->grph2.control); +- OUTREG(AVIVO_D2GRPH_PRIMARY_SURFACE_ADDRESS, state->grph2.prim_surf_addr); +- OUTREG(AVIVO_D2GRPH_SECONDARY_SURFACE_ADDRESS, state->grph2.sec_surf_addr); +- OUTREG(AVIVO_D2GRPH_PITCH, state->grph2.pitch); +- OUTREG(AVIVO_D2GRPH_SURFACE_OFFSET_X, state->grph2.x_offset); +- OUTREG(AVIVO_D2GRPH_SURFACE_OFFSET_Y, state->grph2.y_offset); +- OUTREG(AVIVO_D2GRPH_X_START, state->grph2.x_start); +- OUTREG(AVIVO_D2GRPH_Y_START, state->grph2.y_start); +- OUTREG(AVIVO_D2GRPH_X_END, state->grph2.x_end); +- OUTREG(AVIVO_D2GRPH_Y_END, state->grph2.y_end); +- +- OUTREG(AVIVO_D2MODE_VIEWPORT_START, state->grph2.viewport_start); +- OUTREG(AVIVO_D2MODE_VIEWPORT_SIZE, state->grph2.viewport_size); +- +- + if (IS_DCE3_VARIANT) { + /* DVOA regs */ + OUTREG(0x7080, state->dvoa[0]); +@@ -4699,7 +4762,7 @@ avivo_restore(ScrnInfoPtr pScrn, RADEONSavePtr restore) + } + + j = 0; +- /* DAC regs */ ++ /* DAC regs */ /* -- MIGHT NEED ORDERING FIX & DELAYS -- */ + for (i = 0x7800; i <= 0x782c; i += 4) { + OUTREG(i, state->daca[j]); + OUTREG((i + 0x200), state->dacb[j]); +@@ -4766,8 +4829,31 @@ avivo_restore(ScrnInfoPtr pScrn, RADEONSavePtr restore) + OUTREG(0x6e30, state->dxscl[6]); + OUTREG(0x6e34, state->dxscl[7]); + ++ /* Enable CRTCs */ ++ if (state->crtc1.control & 1) { ++ OUTREG(AVIVO_D1CRTC_CONTROL, 0x01000101); ++ INREG(AVIVO_D1CRTC_CONTROL); ++ OUTREG(AVIVO_D1CRTC_CONTROL, 0x00010101); ++ } ++ if (state->crtc2.control & 1) { ++ OUTREG(AVIVO_D2CRTC_CONTROL, 0x01000101); ++ INREG(AVIVO_D2CRTC_CONTROL); ++ OUTREG(AVIVO_D2CRTC_CONTROL, 0x00010101); ++ } ++ ++ /* Where should that go ? */ ++ OUTREG(AVIVO_DC_CRTC_TV_CONTROL, state->crtc_tv_control); ++ OUTREG(AVIVO_DC_LB_MEMORY_SPLIT, state->dc_lb_memory_split); ++ ++ /* Need fixing too ? */ ++ OUTREG(AVIVO_D1CRTC_BLANK_CONTROL, state->crtc1.blank_control); ++ OUTREG(AVIVO_D2CRTC_BLANK_CONTROL, state->crtc2.blank_control); ++ ++ /* Dbl check */ + OUTREG(AVIVO_D1VGA_CONTROL, state->vga1_cntl); + OUTREG(AVIVO_D2VGA_CONTROL, state->vga2_cntl); ++ ++ /* Should only enable outputs here */ + } + + static void avivo_restore_vga_regs(ScrnInfoPtr pScrn, RADEONSavePtr restore) +@@ -5045,7 +5131,7 @@ Bool RADEONSwitchMode(int scrnIndex, DisplayModePtr mode, int flags) + Bool tilingOld = info->tilingEnabled; + Bool ret; + #ifdef XF86DRI +- Bool CPStarted = info->CPStarted; ++ Bool CPStarted = info->cp->CPStarted; + + if (CPStarted) { + DRILock(pScrn->pScreen, 0); +@@ -5060,7 +5146,7 @@ Bool RADEONSwitchMode(int scrnIndex, DisplayModePtr mode, int flags) + info->tilingEnabled = (mode->Flags & (V_DBLSCAN | V_INTERLACE)) ? FALSE : TRUE; + #ifdef XF86DRI + if (info->directRenderingEnabled && (info->tilingEnabled != tilingOld)) { +- RADEONSAREAPrivPtr pSAREAPriv; ++ drm_radeon_sarea_t *pSAREAPriv; + if (RADEONDRISetParam(pScrn, RADEON_SETPARAM_SWITCH_TILING, (info->tilingEnabled ? 1 : 0)) < 0) + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "[drm] failed changing tiling status\n"); +@@ -5170,7 +5256,7 @@ void RADEONDoAdjustFrame(ScrnInfoPtr pScrn, int x, int y, Bool crtc2) + unsigned char *RADEONMMIO = info->MMIO; + int Base, reg, regcntl, crtcoffsetcntl, xytilereg, crtcxytile = 0; + #ifdef XF86DRI +- RADEONSAREAPrivPtr pSAREAPriv; ++ drm_radeon_sarea_t *pSAREAPriv; + XF86DRISAREAPtr pSAREA; + #endif + +@@ -5209,7 +5295,7 @@ void RADEONDoAdjustFrame(ScrnInfoPtr pScrn, int x, int y, Bool crtc2) + #if 0 + /* try to get rid of flickering when scrolling at least for 2d */ + #ifdef XF86DRI +- if (!info->have3DWindows) ++ if (!info->dri->have3DWindows) + #endif + crtcoffsetcntl &= ~RADEON_CRTC_OFFSET_FLIP_CNTL; + #endif +@@ -5266,7 +5352,7 @@ void RADEONDoAdjustFrame(ScrnInfoPtr pScrn, int x, int y, Bool crtc2) + } + + if (pSAREAPriv->pfCurrentPage == 1) { +- Base += info->backOffset - info->frontOffset; ++ Base += info->dri->backOffset - info->dri->frontOffset; + } + } + #endif +@@ -5290,7 +5376,7 @@ void RADEONAdjustFrame(int scrnIndex, int x, int y, int flags) + xf86CrtcPtr crtc = output->crtc; + + #ifdef XF86DRI +- if (info->CPStarted && pScrn->pScreen) DRILock(pScrn->pScreen, 0); ++ if (info->cp->CPStarted && pScrn->pScreen) DRILock(pScrn->pScreen, 0); + #endif + + if (info->accelOn) +@@ -5307,7 +5393,7 @@ void RADEONAdjustFrame(int scrnIndex, int x, int y, int flags) + + + #ifdef XF86DRI +- if (info->CPStarted && pScrn->pScreen) DRIUnlock(pScrn->pScreen); ++ if (info->cp->CPStarted && pScrn->pScreen) DRIUnlock(pScrn->pScreen); + #endif + } + +@@ -5318,26 +5404,18 @@ Bool RADEONEnterVT(int scrnIndex, int flags) + { + ScrnInfoPtr pScrn = xf86Screens[scrnIndex]; + RADEONInfoPtr info = RADEONPTR(pScrn); +- unsigned char *RADEONMMIO = info->MMIO; +- uint32_t mem_size; + xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(pScrn); + int i; + + xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, RADEON_LOGLEVEL_DEBUG, + "RADEONEnterVT\n"); + +- if (info->ChipFamily >= CHIP_FAMILY_R600) +- mem_size = INREG(R600_CONFIG_MEMSIZE); +- else +- mem_size = INREG(RADEON_CONFIG_MEMSIZE); +- +- if (mem_size == 0) { /* Softboot V_BIOS */ ++ if (!radeon_card_posted(pScrn)) { /* Softboot V_BIOS */ + if (info->IsAtomBios) { + rhdAtomASICInit(info->atomBIOS); + } else { + xf86Int10InfoPtr pInt; +- xf86DrvMsg(pScrn->scrnIndex, X_WARNING, +- "zero MEMSIZE, probably at D3cold. Re-POSTing via int10.\n"); ++ + pInt = xf86InitInt10 (info->pEnt->index); + if (pInt) { + pInt->num = 0xe6; +@@ -5382,10 +5460,10 @@ Bool RADEONEnterVT(int scrnIndex, int flags) + #ifdef XF86DRI + if (info->directRenderingEnabled) { + if (info->cardType == CARD_PCIE && +- info->pKernelDRMVersion->version_minor >= 19 && ++ info->dri->pKernelDRMVersion->version_minor >= 19 && + info->FbSecureSize) { + /* we need to backup the PCIE GART TABLE from fb memory */ +- memcpy(info->FB + info->pciGartOffset, info->pciGartBackup, info->pciGartSize); ++ memcpy(info->FB + info->dri->pciGartOffset, info->dri->pciGartBackup, info->dri->pciGartSize); + } + + /* get the DRI back into shape after resume */ +@@ -5433,18 +5511,18 @@ void RADEONLeaveVT(int scrnIndex, int flags) + RADEONCP_STOP(pScrn, info); + + if (info->cardType == CARD_PCIE && +- info->pKernelDRMVersion->version_minor >= 19 && ++ info->dri->pKernelDRMVersion->version_minor >= 19 && + info->FbSecureSize) { + /* we need to backup the PCIE GART TABLE from fb memory */ +- memcpy(info->pciGartBackup, (info->FB + info->pciGartOffset), info->pciGartSize); ++ memcpy(info->dri->pciGartBackup, (info->FB + info->dri->pciGartOffset), info->dri->pciGartSize); + } + + /* Make sure 3D clients will re-upload textures to video RAM */ +- if (info->textureSize) { +- RADEONSAREAPrivPtr pSAREAPriv = +- (RADEONSAREAPrivPtr)DRIGetSAREAPrivate(pScrn->pScreen); +- drmTextureRegionPtr list = pSAREAPriv->texList[0]; +- int age = ++pSAREAPriv->texAge[0]; ++ if (info->dri->textureSize) { ++ drm_radeon_sarea_t *pSAREAPriv = ++ (drm_radeon_sarea_t*)DRIGetSAREAPrivate(pScrn->pScreen); ++ struct drm_tex_region *list = pSAREAPriv->tex_list[0]; ++ int age = ++pSAREAPriv->tex_age[0]; + + i = 0; + +@@ -5501,12 +5579,12 @@ static Bool RADEONCloseScreen(int scrnIndex, ScreenPtr pScreen) + + #ifdef XF86DRI + #ifdef DAMAGE +- if (info->pDamage) { ++ if (info->dri && info->dri->pDamage) { + PixmapPtr pPix = pScreen->GetScreenPixmap(pScreen); + +- DamageUnregister(&pPix->drawable, info->pDamage); +- DamageDestroy(info->pDamage); +- info->pDamage = NULL; ++ DamageUnregister(&pPix->drawable, info->dri->pDamage); ++ DamageDestroy(info->dri->pDamage); ++ info->dri->pDamage = NULL; + } + #endif + +@@ -5514,9 +5592,9 @@ static Bool RADEONCloseScreen(int scrnIndex, ScreenPtr pScreen) + #endif + + #ifdef USE_XAA +- if(!info->useEXA && info->RenderTex) { +- xf86FreeOffscreenLinear(info->RenderTex); +- info->RenderTex = NULL; ++ if(!info->useEXA && info->accel_state->RenderTex) { ++ xf86FreeOffscreenLinear(info->accel_state->RenderTex); ++ info->accel_state->RenderTex = NULL; + } + #endif /* USE_XAA */ + +@@ -5527,21 +5605,21 @@ static Bool RADEONCloseScreen(int scrnIndex, ScreenPtr pScreen) + xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, RADEON_LOGLEVEL_DEBUG, + "Disposing accel...\n"); + #ifdef USE_EXA +- if (info->exa) { ++ if (info->accel_state->exa) { + exaDriverFini(pScreen); +- xfree(info->exa); +- info->exa = NULL; ++ xfree(info->accel_state->exa); ++ info->accel_state->exa = NULL; + } + #endif /* USE_EXA */ + #ifdef USE_XAA + if (!info->useEXA) { +- if (info->accel) +- XAADestroyInfoRec(info->accel); +- info->accel = NULL; ++ if (info->accel_state->accel) ++ XAADestroyInfoRec(info->accel_state->accel); ++ info->accel_state->accel = NULL; + +- if (info->scratch_save) +- xfree(info->scratch_save); +- info->scratch_save = NULL; ++ if (info->accel_state->scratch_save) ++ xfree(info->accel_state->scratch_save); ++ info->accel_state->scratch_save = NULL; + } + #endif /* USE_XAA */ + +diff --git a/src/radeon_drm.h b/src/radeon_drm.h +new file mode 100644 +index 0000000..66cefb7 +--- /dev/null ++++ b/src/radeon_drm.h +@@ -0,0 +1,756 @@ ++/* radeon_drm.h -- Public header for the radeon driver -*- linux-c -*- ++ * ++ * Copyright 2000 Precision Insight, Inc., Cedar Park, Texas. ++ * Copyright 2000 VA Linux Systems, Inc., Fremont, California. ++ * Copyright 2002 Tungsten Graphics, Inc., Cedar Park, Texas. ++ * All rights reserved. ++ * ++ * Permission is hereby granted, free of charge, to any person obtaining a ++ * copy of this software and associated documentation files (the "Software"), ++ * to deal in the Software without restriction, including without limitation ++ * the rights to use, copy, modify, merge, publish, distribute, sublicense, ++ * and/or sell copies of the Software, and to permit persons to whom the ++ * Software is furnished to do so, subject to the following conditions: ++ * ++ * The above copyright notice and this permission notice (including the next ++ * paragraph) shall be included in all copies or substantial portions of the ++ * Software. ++ * ++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR ++ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, ++ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL ++ * PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR ++ * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ++ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER ++ * DEALINGS IN THE SOFTWARE. ++ * ++ * Authors: ++ * Kevin E. Martin <martin@valinux.com> ++ * Gareth Hughes <gareth@valinux.com> ++ * Keith Whitwell <keith@tungstengraphics.com> ++ */ ++ ++#ifndef __RADEON_DRM_H__ ++#define __RADEON_DRM_H__ ++ ++/* WARNING: If you change any of these defines, make sure to change the ++ * defines in the X server file (radeon_sarea.h) ++ */ ++#ifndef __RADEON_SAREA_DEFINES__ ++#define __RADEON_SAREA_DEFINES__ ++ ++/* Old style state flags, required for sarea interface (1.1 and 1.2 ++ * clears) and 1.2 drm_vertex2 ioctl. ++ */ ++#define RADEON_UPLOAD_CONTEXT 0x00000001 ++#define RADEON_UPLOAD_VERTFMT 0x00000002 ++#define RADEON_UPLOAD_LINE 0x00000004 ++#define RADEON_UPLOAD_BUMPMAP 0x00000008 ++#define RADEON_UPLOAD_MASKS 0x00000010 ++#define RADEON_UPLOAD_VIEWPORT 0x00000020 ++#define RADEON_UPLOAD_SETUP 0x00000040 ++#define RADEON_UPLOAD_TCL 0x00000080 ++#define RADEON_UPLOAD_MISC 0x00000100 ++#define RADEON_UPLOAD_TEX0 0x00000200 ++#define RADEON_UPLOAD_TEX1 0x00000400 ++#define RADEON_UPLOAD_TEX2 0x00000800 ++#define RADEON_UPLOAD_TEX0IMAGES 0x00001000 ++#define RADEON_UPLOAD_TEX1IMAGES 0x00002000 ++#define RADEON_UPLOAD_TEX2IMAGES 0x00004000 ++#define RADEON_UPLOAD_CLIPRECTS 0x00008000 /* handled client-side */ ++#define RADEON_REQUIRE_QUIESCENCE 0x00010000 ++#define RADEON_UPLOAD_ZBIAS 0x00020000 /* version 1.2 and newer */ ++#define RADEON_UPLOAD_ALL 0x003effff ++#define RADEON_UPLOAD_CONTEXT_ALL 0x003e01ff ++ ++/* New style per-packet identifiers for use in cmd_buffer ioctl with ++ * the RADEON_EMIT_PACKET command. Comments relate new packets to old ++ * state bits and the packet size: ++ */ ++#define RADEON_EMIT_PP_MISC 0 /* context/7 */ ++#define RADEON_EMIT_PP_CNTL 1 /* context/3 */ ++#define RADEON_EMIT_RB3D_COLORPITCH 2 /* context/1 */ ++#define RADEON_EMIT_RE_LINE_PATTERN 3 /* line/2 */ ++#define RADEON_EMIT_SE_LINE_WIDTH 4 /* line/1 */ ++#define RADEON_EMIT_PP_LUM_MATRIX 5 /* bumpmap/1 */ ++#define RADEON_EMIT_PP_ROT_MATRIX_0 6 /* bumpmap/2 */ ++#define RADEON_EMIT_RB3D_STENCILREFMASK 7 /* masks/3 */ ++#define RADEON_EMIT_SE_VPORT_XSCALE 8 /* viewport/6 */ ++#define RADEON_EMIT_SE_CNTL 9 /* setup/2 */ ++#define RADEON_EMIT_SE_CNTL_STATUS 10 /* setup/1 */ ++#define RADEON_EMIT_RE_MISC 11 /* misc/1 */ ++#define RADEON_EMIT_PP_TXFILTER_0 12 /* tex0/6 */ ++#define RADEON_EMIT_PP_BORDER_COLOR_0 13 /* tex0/1 */ ++#define RADEON_EMIT_PP_TXFILTER_1 14 /* tex1/6 */ ++#define RADEON_EMIT_PP_BORDER_COLOR_1 15 /* tex1/1 */ ++#define RADEON_EMIT_PP_TXFILTER_2 16 /* tex2/6 */ ++#define RADEON_EMIT_PP_BORDER_COLOR_2 17 /* tex2/1 */ ++#define RADEON_EMIT_SE_ZBIAS_FACTOR 18 /* zbias/2 */ ++#define RADEON_EMIT_SE_TCL_OUTPUT_VTX_FMT 19 /* tcl/11 */ ++#define RADEON_EMIT_SE_TCL_MATERIAL_EMMISSIVE_RED 20 /* material/17 */ ++#define R200_EMIT_PP_TXCBLEND_0 21 /* tex0/4 */ ++#define R200_EMIT_PP_TXCBLEND_1 22 /* tex1/4 */ ++#define R200_EMIT_PP_TXCBLEND_2 23 /* tex2/4 */ ++#define R200_EMIT_PP_TXCBLEND_3 24 /* tex3/4 */ ++#define R200_EMIT_PP_TXCBLEND_4 25 /* tex4/4 */ ++#define R200_EMIT_PP_TXCBLEND_5 26 /* tex5/4 */ ++#define R200_EMIT_PP_TXCBLEND_6 27 /* /4 */ ++#define R200_EMIT_PP_TXCBLEND_7 28 /* /4 */ ++#define R200_EMIT_TCL_LIGHT_MODEL_CTL_0 29 /* tcl/7 */ ++#define R200_EMIT_TFACTOR_0 30 /* tf/7 */ ++#define R200_EMIT_VTX_FMT_0 31 /* vtx/5 */ ++#define R200_EMIT_VAP_CTL 32 /* vap/1 */ ++#define R200_EMIT_MATRIX_SELECT_0 33 /* msl/5 */ ++#define R200_EMIT_TEX_PROC_CTL_2 34 /* tcg/5 */ ++#define R200_EMIT_TCL_UCP_VERT_BLEND_CTL 35 /* tcl/1 */ ++#define R200_EMIT_PP_TXFILTER_0 36 /* tex0/6 */ ++#define R200_EMIT_PP_TXFILTER_1 37 /* tex1/6 */ ++#define R200_EMIT_PP_TXFILTER_2 38 /* tex2/6 */ ++#define R200_EMIT_PP_TXFILTER_3 39 /* tex3/6 */ ++#define R200_EMIT_PP_TXFILTER_4 40 /* tex4/6 */ ++#define R200_EMIT_PP_TXFILTER_5 41 /* tex5/6 */ ++#define R200_EMIT_PP_TXOFFSET_0 42 /* tex0/1 */ ++#define R200_EMIT_PP_TXOFFSET_1 43 /* tex1/1 */ ++#define R200_EMIT_PP_TXOFFSET_2 44 /* tex2/1 */ ++#define R200_EMIT_PP_TXOFFSET_3 45 /* tex3/1 */ ++#define R200_EMIT_PP_TXOFFSET_4 46 /* tex4/1 */ ++#define R200_EMIT_PP_TXOFFSET_5 47 /* tex5/1 */ ++#define R200_EMIT_VTE_CNTL 48 /* vte/1 */ ++#define R200_EMIT_OUTPUT_VTX_COMP_SEL 49 /* vtx/1 */ ++#define R200_EMIT_PP_TAM_DEBUG3 50 /* tam/1 */ ++#define R200_EMIT_PP_CNTL_X 51 /* cst/1 */ ++#define R200_EMIT_RB3D_DEPTHXY_OFFSET 52 /* cst/1 */ ++#define R200_EMIT_RE_AUX_SCISSOR_CNTL 53 /* cst/1 */ ++#define R200_EMIT_RE_SCISSOR_TL_0 54 /* cst/2 */ ++#define R200_EMIT_RE_SCISSOR_TL_1 55 /* cst/2 */ ++#define R200_EMIT_RE_SCISSOR_TL_2 56 /* cst/2 */ ++#define R200_EMIT_SE_VAP_CNTL_STATUS 57 /* cst/1 */ ++#define R200_EMIT_SE_VTX_STATE_CNTL 58 /* cst/1 */ ++#define R200_EMIT_RE_POINTSIZE 59 /* cst/1 */ ++#define R200_EMIT_TCL_INPUT_VTX_VECTOR_ADDR_0 60 /* cst/4 */ ++#define R200_EMIT_PP_CUBIC_FACES_0 61 ++#define R200_EMIT_PP_CUBIC_OFFSETS_0 62 ++#define R200_EMIT_PP_CUBIC_FACES_1 63 ++#define R200_EMIT_PP_CUBIC_OFFSETS_1 64 ++#define R200_EMIT_PP_CUBIC_FACES_2 65 ++#define R200_EMIT_PP_CUBIC_OFFSETS_2 66 ++#define R200_EMIT_PP_CUBIC_FACES_3 67 ++#define R200_EMIT_PP_CUBIC_OFFSETS_3 68 ++#define R200_EMIT_PP_CUBIC_FACES_4 69 ++#define R200_EMIT_PP_CUBIC_OFFSETS_4 70 ++#define R200_EMIT_PP_CUBIC_FACES_5 71 ++#define R200_EMIT_PP_CUBIC_OFFSETS_5 72 ++#define RADEON_EMIT_PP_TEX_SIZE_0 73 ++#define RADEON_EMIT_PP_TEX_SIZE_1 74 ++#define RADEON_EMIT_PP_TEX_SIZE_2 75 ++#define R200_EMIT_RB3D_BLENDCOLOR 76 ++#define R200_EMIT_TCL_POINT_SPRITE_CNTL 77 ++#define RADEON_EMIT_PP_CUBIC_FACES_0 78 ++#define RADEON_EMIT_PP_CUBIC_OFFSETS_T0 79 ++#define RADEON_EMIT_PP_CUBIC_FACES_1 80 ++#define RADEON_EMIT_PP_CUBIC_OFFSETS_T1 81 ++#define RADEON_EMIT_PP_CUBIC_FACES_2 82 ++#define RADEON_EMIT_PP_CUBIC_OFFSETS_T2 83 ++#define R200_EMIT_PP_TRI_PERF_CNTL 84 ++#define R200_EMIT_PP_AFS_0 85 ++#define R200_EMIT_PP_AFS_1 86 ++#define R200_EMIT_ATF_TFACTOR 87 ++#define R200_EMIT_PP_TXCTLALL_0 88 ++#define R200_EMIT_PP_TXCTLALL_1 89 ++#define R200_EMIT_PP_TXCTLALL_2 90 ++#define R200_EMIT_PP_TXCTLALL_3 91 ++#define R200_EMIT_PP_TXCTLALL_4 92 ++#define R200_EMIT_PP_TXCTLALL_5 93 ++#define R200_EMIT_VAP_PVS_CNTL 94 ++#define RADEON_MAX_STATE_PACKETS 95 ++ ++/* Commands understood by cmd_buffer ioctl. More can be added but ++ * obviously these can't be removed or changed: ++ */ ++#define RADEON_CMD_PACKET 1 /* emit one of the register packets above */ ++#define RADEON_CMD_SCALARS 2 /* emit scalar data */ ++#define RADEON_CMD_VECTORS 3 /* emit vector data */ ++#define RADEON_CMD_DMA_DISCARD 4 /* discard current dma buf */ ++#define RADEON_CMD_PACKET3 5 /* emit hw packet */ ++#define RADEON_CMD_PACKET3_CLIP 6 /* emit hw packet wrapped in cliprects */ ++#define RADEON_CMD_SCALARS2 7 /* r200 stopgap */ ++#define RADEON_CMD_WAIT 8 /* emit hw wait commands -- note: ++ * doesn't make the cpu wait, just ++ * the graphics hardware */ ++#define RADEON_CMD_VECLINEAR 9 /* another r200 stopgap */ ++ ++typedef union { ++ int i; ++ struct { ++ unsigned char cmd_type, pad0, pad1, pad2; ++ } header; ++ struct { ++ unsigned char cmd_type, packet_id, pad0, pad1; ++ } packet; ++ struct { ++ unsigned char cmd_type, offset, stride, count; ++ } scalars; ++ struct { ++ unsigned char cmd_type, offset, stride, count; ++ } vectors; ++ struct { ++ unsigned char cmd_type, addr_lo, addr_hi, count; ++ } veclinear; ++ struct { ++ unsigned char cmd_type, buf_idx, pad0, pad1; ++ } dma; ++ struct { ++ unsigned char cmd_type, flags, pad0, pad1; ++ } wait; ++} drm_radeon_cmd_header_t; ++ ++#define RADEON_WAIT_2D 0x1 ++#define RADEON_WAIT_3D 0x2 ++ ++/* Allowed parameters for R300_CMD_PACKET3 ++ */ ++#define R300_CMD_PACKET3_CLEAR 0 ++#define R300_CMD_PACKET3_RAW 1 ++ ++/* Commands understood by cmd_buffer ioctl for R300. ++ * The interface has not been stabilized, so some of these may be removed ++ * and eventually reordered before stabilization. ++ */ ++#define R300_CMD_PACKET0 1 ++#define R300_CMD_VPU 2 /* emit vertex program upload */ ++#define R300_CMD_PACKET3 3 /* emit a packet3 */ ++#define R300_CMD_END3D 4 /* emit sequence ending 3d rendering */ ++#define R300_CMD_CP_DELAY 5 ++#define R300_CMD_DMA_DISCARD 6 ++#define R300_CMD_WAIT 7 ++# define R300_WAIT_2D 0x1 ++# define R300_WAIT_3D 0x2 ++/* these two defines are DOING IT WRONG - however ++ * we have userspace which relies on using these. ++ * The wait interface is backwards compat new ++ * code should use the NEW_WAIT defines below ++ * THESE ARE NOT BIT FIELDS ++ */ ++# define R300_WAIT_2D_CLEAN 0x3 ++# define R300_WAIT_3D_CLEAN 0x4 ++ ++# define R300_NEW_WAIT_2D_3D 0x3 ++# define R300_NEW_WAIT_2D_2D_CLEAN 0x4 ++# define R300_NEW_WAIT_3D_3D_CLEAN 0x6 ++# define R300_NEW_WAIT_2D_2D_CLEAN_3D_3D_CLEAN 0x8 ++ ++#define R300_CMD_SCRATCH 8 ++#define R300_CMD_R500FP 9 ++ ++typedef union { ++ unsigned int u; ++ struct { ++ unsigned char cmd_type, pad0, pad1, pad2; ++ } header; ++ struct { ++ unsigned char cmd_type, count, reglo, reghi; ++ } packet0; ++ struct { ++ unsigned char cmd_type, count, adrlo, adrhi; ++ } vpu; ++ struct { ++ unsigned char cmd_type, packet, pad0, pad1; ++ } packet3; ++ struct { ++ unsigned char cmd_type, packet; ++ unsigned short count; /* amount of packet2 to emit */ ++ } delay; ++ struct { ++ unsigned char cmd_type, buf_idx, pad0, pad1; ++ } dma; ++ struct { ++ unsigned char cmd_type, flags, pad0, pad1; ++ } wait; ++ struct { ++ unsigned char cmd_type, reg, n_bufs, flags; ++ } scratch; ++ struct { ++ unsigned char cmd_type, count, adrlo, adrhi_flags; ++ } r500fp; ++} drm_r300_cmd_header_t; ++ ++#define RADEON_FRONT 0x1 ++#define RADEON_BACK 0x2 ++#define RADEON_DEPTH 0x4 ++#define RADEON_STENCIL 0x8 ++#define RADEON_CLEAR_FASTZ 0x80000000 ++#define RADEON_USE_HIERZ 0x40000000 ++#define RADEON_USE_COMP_ZBUF 0x20000000 ++ ++#define R500FP_CONSTANT_TYPE (1 << 1) ++#define R500FP_CONSTANT_CLAMP (1 << 2) ++ ++/* Primitive types ++ */ ++#define RADEON_POINTS 0x1 ++#define RADEON_LINES 0x2 ++#define RADEON_LINE_STRIP 0x3 ++#define RADEON_TRIANGLES 0x4 ++#define RADEON_TRIANGLE_FAN 0x5 ++#define RADEON_TRIANGLE_STRIP 0x6 ++ ++/* Vertex/indirect buffer size ++ */ ++#define RADEON_BUFFER_SIZE 65536 ++ ++/* Byte offsets for indirect buffer data ++ */ ++#define RADEON_INDEX_PRIM_OFFSET 20 ++ ++#define RADEON_SCRATCH_REG_OFFSET 32 ++#define R600_SCRATCH_REG_OFFSET 256 ++ ++#define RADEON_NR_SAREA_CLIPRECTS 12 ++ ++/* There are 2 heaps (local/GART). Each region within a heap is a ++ * minimum of 64k, and there are at most 64 of them per heap. ++ */ ++#define RADEON_LOCAL_TEX_HEAP 0 ++#define RADEON_GART_TEX_HEAP 1 ++#define RADEON_NR_TEX_HEAPS 2 ++#define RADEON_NR_TEX_REGIONS 64 ++#define RADEON_LOG_TEX_GRANULARITY 16 ++ ++#define RADEON_MAX_TEXTURE_LEVELS 12 ++#define RADEON_MAX_TEXTURE_UNITS 3 ++ ++#define RADEON_MAX_SURFACES 8 ++ ++/* Blits have strict offset rules. All blit offset must be aligned on ++ * a 1K-byte boundary. ++ */ ++#define RADEON_OFFSET_SHIFT 10 ++#define RADEON_OFFSET_ALIGN (1 << RADEON_OFFSET_SHIFT) ++#define RADEON_OFFSET_MASK (RADEON_OFFSET_ALIGN - 1) ++ ++#endif /* __RADEON_SAREA_DEFINES__ */ ++ ++typedef struct { ++ unsigned int red; ++ unsigned int green; ++ unsigned int blue; ++ unsigned int alpha; ++} radeon_color_regs_t; ++ ++typedef struct { ++ /* Context state */ ++ unsigned int pp_misc; /* 0x1c14 */ ++ unsigned int pp_fog_color; ++ unsigned int re_solid_color; ++ unsigned int rb3d_blendcntl; ++ unsigned int rb3d_depthoffset; ++ unsigned int rb3d_depthpitch; ++ unsigned int rb3d_zstencilcntl; ++ ++ unsigned int pp_cntl; /* 0x1c38 */ ++ unsigned int rb3d_cntl; ++ unsigned int rb3d_coloroffset; ++ unsigned int re_width_height; ++ unsigned int rb3d_colorpitch; ++ unsigned int se_cntl; ++ ++ /* Vertex format state */ ++ unsigned int se_coord_fmt; /* 0x1c50 */ ++ ++ /* Line state */ ++ unsigned int re_line_pattern; /* 0x1cd0 */ ++ unsigned int re_line_state; ++ ++ unsigned int se_line_width; /* 0x1db8 */ ++ ++ /* Bumpmap state */ ++ unsigned int pp_lum_matrix; /* 0x1d00 */ ++ ++ unsigned int pp_rot_matrix_0; /* 0x1d58 */ ++ unsigned int pp_rot_matrix_1; ++ ++ /* Mask state */ ++ unsigned int rb3d_stencilrefmask; /* 0x1d7c */ ++ unsigned int rb3d_ropcntl; ++ unsigned int rb3d_planemask; ++ ++ /* Viewport state */ ++ unsigned int se_vport_xscale; /* 0x1d98 */ ++ unsigned int se_vport_xoffset; ++ unsigned int se_vport_yscale; ++ unsigned int se_vport_yoffset; ++ unsigned int se_vport_zscale; ++ unsigned int se_vport_zoffset; ++ ++ /* Setup state */ ++ unsigned int se_cntl_status; /* 0x2140 */ ++ ++ /* Misc state */ ++ unsigned int re_top_left; /* 0x26c0 */ ++ unsigned int re_misc; ++} drm_radeon_context_regs_t; ++ ++typedef struct { ++ /* Zbias state */ ++ unsigned int se_zbias_factor; /* 0x1dac */ ++ unsigned int se_zbias_constant; ++} drm_radeon_context2_regs_t; ++ ++/* Setup registers for each texture unit ++ */ ++typedef struct { ++ unsigned int pp_txfilter; ++ unsigned int pp_txformat; ++ unsigned int pp_txoffset; ++ unsigned int pp_txcblend; ++ unsigned int pp_txablend; ++ unsigned int pp_tfactor; ++ unsigned int pp_border_color; ++} drm_radeon_texture_regs_t; ++ ++typedef struct { ++ unsigned int start; ++ unsigned int finish; ++ unsigned int prim:8; ++ unsigned int stateidx:8; ++ unsigned int numverts:16; /* overloaded as offset/64 for elt prims */ ++ unsigned int vc_format; /* vertex format */ ++} drm_radeon_prim_t; ++ ++typedef struct { ++ drm_radeon_context_regs_t context; ++ drm_radeon_texture_regs_t tex[RADEON_MAX_TEXTURE_UNITS]; ++ drm_radeon_context2_regs_t context2; ++ unsigned int dirty; ++} drm_radeon_state_t; ++ ++typedef struct { ++ /* The channel for communication of state information to the ++ * kernel on firing a vertex buffer with either of the ++ * obsoleted vertex/index ioctls. ++ */ ++ drm_radeon_context_regs_t context_state; ++ drm_radeon_texture_regs_t tex_state[RADEON_MAX_TEXTURE_UNITS]; ++ unsigned int dirty; ++ unsigned int vertsize; ++ unsigned int vc_format; ++ ++ /* The current cliprects, or a subset thereof. ++ */ ++ struct drm_clip_rect boxes[RADEON_NR_SAREA_CLIPRECTS]; ++ unsigned int nbox; ++ ++ /* Counters for client-side throttling of rendering clients. ++ */ ++ unsigned int last_frame; ++ unsigned int last_dispatch; ++ unsigned int last_clear; ++ ++ struct drm_tex_region tex_list[RADEON_NR_TEX_HEAPS][RADEON_NR_TEX_REGIONS + ++ 1]; ++ unsigned int tex_age[RADEON_NR_TEX_HEAPS]; ++ int ctx_owner; ++ int pfState; /* number of 3d windows (0,1,2ormore) */ ++ int pfCurrentPage; /* which buffer is being displayed? */ ++ int crtc2_base; /* CRTC2 frame offset */ ++ int tiling_enabled; /* set by drm, read by 2d + 3d clients */ ++} drm_radeon_sarea_t; ++ ++/* WARNING: If you change any of these defines, make sure to change the ++ * defines in the Xserver file (xf86drmRadeon.h) ++ * ++ * KW: actually it's illegal to change any of this (backwards compatibility). ++ */ ++ ++/* Radeon specific ioctls ++ * The device specific ioctl range is 0x40 to 0x79. ++ */ ++#define DRM_RADEON_CP_INIT 0x00 ++#define DRM_RADEON_CP_START 0x01 ++#define DRM_RADEON_CP_STOP 0x02 ++#define DRM_RADEON_CP_RESET 0x03 ++#define DRM_RADEON_CP_IDLE 0x04 ++#define DRM_RADEON_RESET 0x05 ++#define DRM_RADEON_FULLSCREEN 0x06 ++#define DRM_RADEON_SWAP 0x07 ++#define DRM_RADEON_CLEAR 0x08 ++#define DRM_RADEON_VERTEX 0x09 ++#define DRM_RADEON_INDICES 0x0A ++#define DRM_RADEON_NOT_USED ++#define DRM_RADEON_STIPPLE 0x0C ++#define DRM_RADEON_INDIRECT 0x0D ++#define DRM_RADEON_TEXTURE 0x0E ++#define DRM_RADEON_VERTEX2 0x0F ++#define DRM_RADEON_CMDBUF 0x10 ++#define DRM_RADEON_GETPARAM 0x11 ++#define DRM_RADEON_FLIP 0x12 ++#define DRM_RADEON_ALLOC 0x13 ++#define DRM_RADEON_FREE 0x14 ++#define DRM_RADEON_INIT_HEAP 0x15 ++#define DRM_RADEON_IRQ_EMIT 0x16 ++#define DRM_RADEON_IRQ_WAIT 0x17 ++#define DRM_RADEON_CP_RESUME 0x18 ++#define DRM_RADEON_SETPARAM 0x19 ++#define DRM_RADEON_SURF_ALLOC 0x1a ++#define DRM_RADEON_SURF_FREE 0x1b ++ ++#define DRM_IOCTL_RADEON_CP_INIT DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_CP_INIT, drm_radeon_init_t) ++#define DRM_IOCTL_RADEON_CP_START DRM_IO( DRM_COMMAND_BASE + DRM_RADEON_CP_START) ++#define DRM_IOCTL_RADEON_CP_STOP DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_CP_STOP, drm_radeon_cp_stop_t) ++#define DRM_IOCTL_RADEON_CP_RESET DRM_IO( DRM_COMMAND_BASE + DRM_RADEON_CP_RESET) ++#define DRM_IOCTL_RADEON_CP_IDLE DRM_IO( DRM_COMMAND_BASE + DRM_RADEON_CP_IDLE) ++#define DRM_IOCTL_RADEON_RESET DRM_IO( DRM_COMMAND_BASE + DRM_RADEON_RESET) ++#define DRM_IOCTL_RADEON_FULLSCREEN DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_FULLSCREEN, drm_radeon_fullscreen_t) ++#define DRM_IOCTL_RADEON_SWAP DRM_IO( DRM_COMMAND_BASE + DRM_RADEON_SWAP) ++#define DRM_IOCTL_RADEON_CLEAR DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_CLEAR, drm_radeon_clear_t) ++#define DRM_IOCTL_RADEON_VERTEX DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_VERTEX, drm_radeon_vertex_t) ++#define DRM_IOCTL_RADEON_INDICES DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_INDICES, drm_radeon_indices_t) ++#define DRM_IOCTL_RADEON_STIPPLE DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_STIPPLE, drm_radeon_stipple_t) ++#define DRM_IOCTL_RADEON_INDIRECT DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_INDIRECT, drm_radeon_indirect_t) ++#define DRM_IOCTL_RADEON_TEXTURE DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_TEXTURE, drm_radeon_texture_t) ++#define DRM_IOCTL_RADEON_VERTEX2 DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_VERTEX2, drm_radeon_vertex2_t) ++#define DRM_IOCTL_RADEON_CMDBUF DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_CMDBUF, drm_radeon_cmd_buffer_t) ++#define DRM_IOCTL_RADEON_GETPARAM DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_GETPARAM, drm_radeon_getparam_t) ++#define DRM_IOCTL_RADEON_FLIP DRM_IO( DRM_COMMAND_BASE + DRM_RADEON_FLIP) ++#define DRM_IOCTL_RADEON_ALLOC DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_ALLOC, drm_radeon_mem_alloc_t) ++#define DRM_IOCTL_RADEON_FREE DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_FREE, drm_radeon_mem_free_t) ++#define DRM_IOCTL_RADEON_INIT_HEAP DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_INIT_HEAP, drm_radeon_mem_init_heap_t) ++#define DRM_IOCTL_RADEON_IRQ_EMIT DRM_IOWR(DRM_COMMAND_BASE + DRM_RADEON_IRQ_EMIT, drm_radeon_irq_emit_t) ++#define DRM_IOCTL_RADEON_IRQ_WAIT DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_IRQ_WAIT, drm_radeon_irq_wait_t) ++#define DRM_IOCTL_RADEON_CP_RESUME DRM_IO( DRM_COMMAND_BASE + DRM_RADEON_CP_RESUME) ++#define DRM_IOCTL_RADEON_SETPARAM DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_SETPARAM, drm_radeon_setparam_t) ++#define DRM_IOCTL_RADEON_SURF_ALLOC DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_SURF_ALLOC, drm_radeon_surface_alloc_t) ++#define DRM_IOCTL_RADEON_SURF_FREE DRM_IOW( DRM_COMMAND_BASE + DRM_RADEON_SURF_FREE, drm_radeon_surface_free_t) ++ ++typedef struct drm_radeon_init { ++ enum { ++ RADEON_INIT_CP = 0x01, ++ RADEON_CLEANUP_CP = 0x02, ++ RADEON_INIT_R200_CP = 0x03, ++ RADEON_INIT_R300_CP = 0x04, ++ RADEON_INIT_R600_CP = 0x05, ++ } func; ++ unsigned long sarea_priv_offset; ++ int is_pci; /* for overriding only */ ++ int cp_mode; ++ int gart_size; ++ int ring_size; ++ int usec_timeout; ++ ++ unsigned int fb_bpp; ++ unsigned int front_offset, front_pitch; ++ unsigned int back_offset, back_pitch; ++ unsigned int depth_bpp; ++ unsigned int depth_offset, depth_pitch; ++ ++ /* DEPRECATED commented out below to allow for -Werror build */ ++ unsigned long fb_offset /*DEPRECATED*/; /* deprecated, driver asks hardware */ ++ unsigned long mmio_offset /*DEPRECATED*/; /* deprecated, driver asks hardware */ ++ unsigned long ring_offset; ++ unsigned long ring_rptr_offset; ++ unsigned long buffers_offset; ++ unsigned long gart_textures_offset; ++} drm_radeon_init_t; ++ ++typedef struct drm_radeon_cp_stop { ++ int flush; ++ int idle; ++} drm_radeon_cp_stop_t; ++ ++typedef struct drm_radeon_fullscreen { ++ enum { ++ RADEON_INIT_FULLSCREEN = 0x01, ++ RADEON_CLEANUP_FULLSCREEN = 0x02 ++ } func; ++} drm_radeon_fullscreen_t; ++ ++#define CLEAR_X1 0 ++#define CLEAR_Y1 1 ++#define CLEAR_X2 2 ++#define CLEAR_Y2 3 ++#define CLEAR_DEPTH 4 ++ ++typedef union drm_radeon_clear_rect { ++ float f[5]; ++ unsigned int ui[5]; ++} drm_radeon_clear_rect_t; ++ ++typedef struct drm_radeon_clear { ++ unsigned int flags; ++ unsigned int clear_color; ++ unsigned int clear_depth; ++ unsigned int color_mask; ++ unsigned int depth_mask; /* misnamed field: should be stencil */ ++ drm_radeon_clear_rect_t __user *depth_boxes; ++} drm_radeon_clear_t; ++ ++typedef struct drm_radeon_vertex { ++ int prim; ++ int idx; /* Index of vertex buffer */ ++ int count; /* Number of vertices in buffer */ ++ int discard; /* Client finished with buffer? */ ++} drm_radeon_vertex_t; ++ ++typedef struct drm_radeon_indices { ++ int prim; ++ int idx; ++ int start; ++ int end; ++ int discard; /* Client finished with buffer? */ ++} drm_radeon_indices_t; ++ ++/* v1.2 - obsoletes drm_radeon_vertex and drm_radeon_indices ++ * - allows multiple primitives and state changes in a single ioctl ++ * - supports driver change to emit native primitives ++ */ ++typedef struct drm_radeon_vertex2 { ++ int idx; /* Index of vertex buffer */ ++ int discard; /* Client finished with buffer? */ ++ int nr_states; ++ drm_radeon_state_t __user *state; ++ int nr_prims; ++ drm_radeon_prim_t __user *prim; ++} drm_radeon_vertex2_t; ++ ++/* v1.3 - obsoletes drm_radeon_vertex2 ++ * - allows arbitarily large cliprect list ++ * - allows updating of tcl packet, vector and scalar state ++ * - allows memory-efficient description of state updates ++ * - allows state to be emitted without a primitive ++ * (for clears, ctx switches) ++ * - allows more than one dma buffer to be referenced per ioctl ++ * - supports tcl driver ++ * - may be extended in future versions with new cmd types, packets ++ */ ++typedef struct drm_radeon_cmd_buffer { ++ int bufsz; ++ char __user *buf; ++ int nbox; ++ struct drm_clip_rect __user *boxes; ++} drm_radeon_cmd_buffer_t; ++ ++typedef struct drm_radeon_tex_image { ++ unsigned int x, y; /* Blit coordinates */ ++ unsigned int width, height; ++ const void __user *data; ++} drm_radeon_tex_image_t; ++ ++typedef struct drm_radeon_texture { ++ unsigned int offset; ++ int pitch; ++ int format; ++ int width; /* Texture image coordinates */ ++ int height; ++ drm_radeon_tex_image_t __user *image; ++} drm_radeon_texture_t; ++ ++typedef struct drm_radeon_stipple { ++ unsigned int __user *mask; ++} drm_radeon_stipple_t; ++ ++typedef struct drm_radeon_indirect { ++ int idx; ++ int start; ++ int end; ++ int discard; ++} drm_radeon_indirect_t; ++ ++#define RADEON_INDIRECT_DISCARD (1 << 0) ++#define RADEON_INDIRECT_NOFLUSH (1 << 1) ++ ++/* enum for card type parameters */ ++#define RADEON_CARD_PCI 0 ++#define RADEON_CARD_AGP 1 ++#define RADEON_CARD_PCIE 2 ++ ++/* 1.3: An ioctl to get parameters that aren't available to the 3d ++ * client any other way. ++ */ ++#define RADEON_PARAM_GART_BUFFER_OFFSET 1 /* card offset of 1st GART buffer */ ++#define RADEON_PARAM_LAST_FRAME 2 ++#define RADEON_PARAM_LAST_DISPATCH 3 ++#define RADEON_PARAM_LAST_CLEAR 4 ++/* Added with DRM version 1.6. */ ++#define RADEON_PARAM_IRQ_NR 5 ++#define RADEON_PARAM_GART_BASE 6 /* card offset of GART base */ ++/* Added with DRM version 1.8. */ ++#define RADEON_PARAM_REGISTER_HANDLE 7 /* for drmMap() */ ++#define RADEON_PARAM_STATUS_HANDLE 8 ++#define RADEON_PARAM_SAREA_HANDLE 9 ++#define RADEON_PARAM_GART_TEX_HANDLE 10 ++#define RADEON_PARAM_SCRATCH_OFFSET 11 ++#define RADEON_PARAM_CARD_TYPE 12 ++#define RADEON_PARAM_VBLANK_CRTC 13 /* VBLANK CRTC */ ++#define RADEON_PARAM_FB_LOCATION 14 /* FB location */ ++#define RADEON_PARAM_NUM_GB_PIPES 15 /* num GB pipes */ ++ ++typedef struct drm_radeon_getparam { ++ int param; ++ void __user *value; ++} drm_radeon_getparam_t; ++ ++/* 1.6: Set up a memory manager for regions of shared memory: ++ */ ++#define RADEON_MEM_REGION_GART 1 ++#define RADEON_MEM_REGION_FB 2 ++ ++typedef struct drm_radeon_mem_alloc { ++ int region; ++ int alignment; ++ int size; ++ int __user *region_offset; /* offset from start of fb or GART */ ++} drm_radeon_mem_alloc_t; ++ ++typedef struct drm_radeon_mem_free { ++ int region; ++ int region_offset; ++} drm_radeon_mem_free_t; ++ ++typedef struct drm_radeon_mem_init_heap { ++ int region; ++ int size; ++ int start; ++} drm_radeon_mem_init_heap_t; ++ ++/* 1.6: Userspace can request & wait on irq's: ++ */ ++typedef struct drm_radeon_irq_emit { ++ int __user *irq_seq; ++} drm_radeon_irq_emit_t; ++ ++typedef struct drm_radeon_irq_wait { ++ int irq_seq; ++} drm_radeon_irq_wait_t; ++ ++/* 1.10: Clients tell the DRM where they think the framebuffer is located in ++ * the card's address space, via a new generic ioctl to set parameters ++ */ ++ ++typedef struct drm_radeon_setparam { ++ unsigned int param; ++ int64_t value; ++} drm_radeon_setparam_t; ++ ++#define RADEON_SETPARAM_FB_LOCATION 1 /* determined framebuffer location */ ++#define RADEON_SETPARAM_SWITCH_TILING 2 /* enable/disable color tiling */ ++#define RADEON_SETPARAM_PCIGART_LOCATION 3 /* PCI Gart Location */ ++ ++#define RADEON_SETPARAM_NEW_MEMMAP 4 /* Use new memory map */ ++#define RADEON_SETPARAM_PCIGART_TABLE_SIZE 5 /* PCI GART Table Size */ ++#define RADEON_SETPARAM_VBLANK_CRTC 6 /* VBLANK CRTC */ ++/* 1.14: Clients can allocate/free a surface ++ */ ++typedef struct drm_radeon_surface_alloc { ++ unsigned int address; ++ unsigned int size; ++ unsigned int flags; ++} drm_radeon_surface_alloc_t; ++ ++typedef struct drm_radeon_surface_free { ++ unsigned int address; ++} drm_radeon_surface_free_t; ++ ++#define DRM_RADEON_VBLANK_CRTC1 1 ++#define DRM_RADEON_VBLANK_CRTC2 2 ++ ++#endif +diff --git a/src/radeon_exa.c b/src/radeon_exa.c +index f461f3c..0f86fdd 100644 +--- a/src/radeon_exa.c ++++ b/src/radeon_exa.c +@@ -36,14 +36,11 @@ + #include "radeon.h" + #include "radeon_reg.h" + #ifdef XF86DRI +-#include "radeon_dri.h" ++#include "radeon_drm.h" + #endif + #include "radeon_macros.h" + #include "radeon_probe.h" + #include "radeon_version.h" +-#ifdef XF86DRI +-#include "radeon_sarea.h" +-#endif + + #include "xf86.h" + +@@ -164,10 +161,10 @@ static Bool RADEONGetOffsetPitch(PixmapPtr pPix, int bpp, uint32_t *pitch_offset + { + RINFO_FROM_SCREEN(pPix->drawable.pScreen); + +- if (pitch > 16320 || pitch % info->exa->pixmapPitchAlign != 0) ++ if (pitch > 16320 || pitch % info->accel_state->exa->pixmapPitchAlign != 0) + RADEON_FALLBACK(("Bad pitch 0x%08x\n", pitch)); + +- if (offset % info->exa->pixmapOffsetAlign != 0) ++ if (offset % info->accel_state->exa->pixmapOffsetAlign != 0) + RADEON_FALLBACK(("Bad offset 0x%08x\n", offset)); + + pitch = pitch >> 6; +@@ -237,14 +234,14 @@ static Bool RADEONPrepareAccess(PixmapPtr pPix, int index) + } + #if defined(XF86DRI) + if (info->directRenderingEnabled && info->allowColorTiling) { +- drmRadeonSurfaceAlloc drmsurfalloc; ++ struct drm_radeon_surface_alloc drmsurfalloc; + int rc; + + drmsurfalloc.address = offset; + drmsurfalloc.size = size; + drmsurfalloc.flags = flags | 1; /* bogus pitch to please DRM */ + +- rc = drmCommandWrite(info->drmFD, DRM_RADEON_SURF_ALLOC, ++ rc = drmCommandWrite(info->dri->drmFD, DRM_RADEON_SURF_ALLOC, + &drmsurfalloc, sizeof(drmsurfalloc)); + if (rc < 0) { + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, +@@ -280,10 +277,10 @@ static void RADEONFinishAccess(PixmapPtr pPix, int index) + return; + #if defined(XF86DRI) + if (info->directRenderingEnabled && info->allowColorTiling) { +- drmRadeonSurfaceFree drmsurffree; ++ struct drm_radeon_surface_free drmsurffree; + + drmsurffree.address = offset; +- drmCommandWrite(info->drmFD, DRM_RADEON_SURF_FREE, ++ drmCommandWrite(info->dri->drmFD, DRM_RADEON_SURF_FREE, + &drmsurffree, sizeof(drmsurffree)); + swapper_surfaces[index] = 0; + return; +@@ -302,7 +299,7 @@ static void RADEONFinishAccess(PixmapPtr pPix, int index) + do { \ + uint32_t wait_until = 0; \ + BEGIN_ACCEL(1); \ +- switch (info->engineMode) { \ ++ switch (info->accel_state->engineMode) { \ + case EXA_ENGINEMODE_UNKNOWN: \ + wait_until |= RADEON_WAIT_HOST_IDLECLEAN | RADEON_WAIT_2D_IDLECLEAN; \ + case EXA_ENGINEMODE_3D: \ +@@ -312,14 +309,14 @@ do { \ + } \ + OUT_ACCEL_REG(RADEON_WAIT_UNTIL, wait_until); \ + FINISH_ACCEL(); \ +- info->engineMode = EXA_ENGINEMODE_2D; \ ++ info->accel_state->engineMode = EXA_ENGINEMODE_2D; \ + } while (0); + + #define RADEON_SWITCH_TO_3D() \ + do { \ + uint32_t wait_until = 0; \ + BEGIN_ACCEL(1); \ +- switch (info->engineMode) { \ ++ switch (info->accel_state->engineMode) { \ + case EXA_ENGINEMODE_UNKNOWN: \ + wait_until |= RADEON_WAIT_HOST_IDLECLEAN | RADEON_WAIT_3D_IDLECLEAN; \ + case EXA_ENGINEMODE_2D: \ +@@ -329,7 +326,7 @@ do { \ + } \ + OUT_ACCEL_REG(RADEON_WAIT_UNTIL, wait_until); \ + FINISH_ACCEL(); \ +- info->engineMode = EXA_ENGINEMODE_3D; \ ++ info->accel_state->engineMode = EXA_ENGINEMODE_3D; \ + } while (0); + + #define ENTER_DRAW(x) TRACE +@@ -352,6 +349,7 @@ do { \ + #undef ACCEL_PREAMBLE + #undef BEGIN_ACCEL + #undef OUT_ACCEL_REG ++#undef OUT_ACCEL_REG_F + #undef FINISH_ACCEL + + #ifdef XF86DRI +@@ -371,6 +369,13 @@ do { \ + #endif + #include "radeon_exa_funcs.c" + ++#undef ACCEL_CP ++#undef ACCEL_PREAMBLE ++#undef BEGIN_ACCEL ++#undef OUT_ACCEL_REG ++#undef FINISH_ACCEL ++#undef OUT_RING_F ++ + #endif /* XF86DRI */ + + /* +@@ -386,12 +391,12 @@ Bool RADEONSetupMemEXA (ScreenPtr pScreen) + int screen_size; + int byteStride = pScrn->displayWidth * cpp; + +- if (info->exa != NULL) { ++ if (info->accel_state->exa != NULL) { + xf86DrvMsg(pScreen->myNum, X_ERROR, "Memory map already initialized\n"); + return FALSE; + } +- info->exa = exaDriverAlloc(); +- if (info->exa == NULL) ++ info->accel_state->exa = exaDriverAlloc(); ++ if (info->accel_state->exa == NULL) + return FALSE; + + /* Need to adjust screen size for 16 line tiles, and then make it align to. +@@ -402,53 +407,52 @@ Bool RADEONSetupMemEXA (ScreenPtr pScreen) + else + screen_size = pScrn->virtualY * byteStride; + +- info->exa->memoryBase = info->FB; +- info->exa->memorySize = info->FbMapSize - info->FbSecureSize; +- info->exa->offScreenBase = screen_size; ++ info->accel_state->exa->memoryBase = info->FB; ++ info->accel_state->exa->memorySize = info->FbMapSize - info->FbSecureSize; ++ info->accel_state->exa->offScreenBase = screen_size; + + xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Allocating from a screen of %ld kb\n", +- info->exa->memorySize / 1024); +- ++ info->accel_state->exa->memorySize / 1024); + + /* Reserve static area for hardware cursor */ + if (!xf86ReturnOptValBool(info->Options, OPTION_SW_CURSOR, FALSE)) { +- int cursor_size = 64 * 4 * 64; +- int c; +- +- for (c = 0; c < xf86_config->num_crtc; c++) { +- xf86CrtcPtr crtc = xf86_config->crtc[c]; +- RADEONCrtcPrivatePtr radeon_crtc = crtc->driver_private; +- +- radeon_crtc->cursor_offset = info->exa->offScreenBase; +- info->exa->offScreenBase += cursor_size; +- +- xf86DrvMsg(pScrn->scrnIndex, X_INFO, +- "Will use %d kb for hardware cursor %d at offset 0x%08x\n", +- (cursor_size * xf86_config->num_crtc) / 1024, +- c, +- (unsigned int)radeon_crtc->cursor_offset); +- } +- +- ++ int cursor_size = 64 * 4 * 64; ++ int align = IS_AVIVO_VARIANT ? 4096 : 256; ++ int c; ++ ++ for (c = 0; c < xf86_config->num_crtc; c++) { ++ xf86CrtcPtr crtc = xf86_config->crtc[c]; ++ RADEONCrtcPrivatePtr radeon_crtc = crtc->driver_private; ++ ++ radeon_crtc->cursor_offset = ++ RADEON_ALIGN(info->accel_state->exa->offScreenBase, align); ++ info->accel_state->exa->offScreenBase = radeon_crtc->cursor_offset + cursor_size; ++ ++ xf86DrvMsg(pScrn->scrnIndex, X_INFO, ++ "Will use %d kb for hardware cursor %d at offset 0x%08x\n", ++ (cursor_size * xf86_config->num_crtc) / 1024, ++ c, ++ (unsigned int)radeon_crtc->cursor_offset); ++ } + } + + #if defined(XF86DRI) + if (info->directRenderingEnabled) { +- int depthCpp = (info->depthBits - 8) / 4, l, next, depth_size; ++ int depthCpp = (info->dri->depthBits - 8) / 4, l, next, depth_size; + +- info->frontOffset = 0; +- info->frontPitch = pScrn->displayWidth; ++ info->dri->frontOffset = 0; ++ info->dri->frontPitch = pScrn->displayWidth; + + xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "Will use %d kb for front buffer at offset 0x%08x\n", +- screen_size / 1024, info->frontOffset); ++ screen_size / 1024, info->dri->frontOffset); + RADEONDRIAllocatePCIGARTTable(pScreen); + + if (info->cardType==CARD_PCIE) + xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "Will use %d kb for PCI GART at offset 0x%08x\n", +- info->pciGartSize / 1024, +- (int)info->pciGartOffset); ++ info->dri->pciGartSize / 1024, ++ (int)info->dri->pciGartOffset); + + /* Reserve a static area for the back buffer the same size as the + * visible screen. XXX: This would be better initialized in ati_dri.c +@@ -456,49 +460,49 @@ Bool RADEONSetupMemEXA (ScreenPtr pScreen) + * don't last through VT switches, while the kernel's understanding of + * offscreen locations does. + */ +- info->backPitch = pScrn->displayWidth; +- next = RADEON_ALIGN(info->exa->offScreenBase, RADEON_BUFFER_ALIGN); +- if (!info->noBackBuffer && +- next + screen_size <= info->exa->memorySize) ++ info->dri->backPitch = pScrn->displayWidth; ++ next = RADEON_ALIGN(info->accel_state->exa->offScreenBase, RADEON_BUFFER_ALIGN); ++ if (!info->dri->noBackBuffer && ++ next + screen_size <= info->accel_state->exa->memorySize) + { +- info->backOffset = next; +- info->exa->offScreenBase = next + screen_size; ++ info->dri->backOffset = next; ++ info->accel_state->exa->offScreenBase = next + screen_size; + xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "Will use %d kb for back buffer at offset 0x%08x\n", +- screen_size / 1024, info->backOffset); ++ screen_size / 1024, info->dri->backOffset); + } + + /* Reserve the static depth buffer, and adjust pitch and height to + * handle tiling. + */ +- info->depthPitch = RADEON_ALIGN(pScrn->displayWidth, 32); +- depth_size = RADEON_ALIGN(pScrn->virtualY, 16) * info->depthPitch * depthCpp; +- next = RADEON_ALIGN(info->exa->offScreenBase, RADEON_BUFFER_ALIGN); +- if (next + depth_size <= info->exa->memorySize) ++ info->dri->depthPitch = RADEON_ALIGN(pScrn->displayWidth, 32); ++ depth_size = RADEON_ALIGN(pScrn->virtualY, 16) * info->dri->depthPitch * depthCpp; ++ next = RADEON_ALIGN(info->accel_state->exa->offScreenBase, RADEON_BUFFER_ALIGN); ++ if (next + depth_size <= info->accel_state->exa->memorySize) + { +- info->depthOffset = next; +- info->exa->offScreenBase = next + depth_size; ++ info->dri->depthOffset = next; ++ info->accel_state->exa->offScreenBase = next + depth_size; + xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "Will use %d kb for depth buffer at offset 0x%08x\n", +- depth_size / 1024, info->depthOffset); ++ depth_size / 1024, info->dri->depthOffset); + } + +- info->textureSize *= (info->exa->memorySize - +- info->exa->offScreenBase) / 100; ++ info->dri->textureSize *= (info->accel_state->exa->memorySize - ++ info->accel_state->exa->offScreenBase) / 100; + +- l = RADEONLog2(info->textureSize / RADEON_NR_TEX_REGIONS); ++ l = RADEONLog2(info->dri->textureSize / RADEON_NR_TEX_REGIONS); + if (l < RADEON_LOG_TEX_GRANULARITY) + l = RADEON_LOG_TEX_GRANULARITY; +- info->textureSize = (info->textureSize >> l) << l; +- if (info->textureSize >= 512 * 1024) { +- info->textureOffset = info->exa->offScreenBase; +- info->exa->offScreenBase += info->textureSize; ++ info->dri->textureSize = (info->dri->textureSize >> l) << l; ++ if (info->dri->textureSize >= 512 * 1024) { ++ info->dri->textureOffset = info->accel_state->exa->offScreenBase; ++ info->accel_state->exa->offScreenBase += info->dri->textureSize; + xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "Will use %d kb for textures at offset 0x%08x\n", +- info->textureSize / 1024, info->textureOffset); ++ info->dri->textureSize / 1024, info->dri->textureOffset); + } else { + /* Minimum texture size is for 2 256x256x32bpp textures */ +- info->textureSize = 0; ++ info->dri->textureSize = 0; + } + } else + #endif /* XF86DRI */ +@@ -508,8 +512,8 @@ Bool RADEONSetupMemEXA (ScreenPtr pScreen) + + xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "Will use %ld kb for X Server offscreen at offset 0x%08lx\n", +- (info->exa->memorySize - info->exa->offScreenBase) / +- 1024, info->exa->offScreenBase); ++ (info->accel_state->exa->memorySize - info->accel_state->exa->offScreenBase) / ++ 1024, info->accel_state->exa->offScreenBase); + + return TRUE; + } +diff --git a/src/radeon_exa_funcs.c b/src/radeon_exa_funcs.c +index 56de23e..62224d0 100644 +--- a/src/radeon_exa_funcs.c ++++ b/src/radeon_exa_funcs.c +@@ -65,7 +65,7 @@ FUNC_NAME(RADEONMarkSync)(ScreenPtr pScreen) + + TRACE; + +- return ++info->exaSyncMarker; ++ return ++info->accel_state->exaSyncMarker; + } + + static void +@@ -76,12 +76,12 @@ FUNC_NAME(RADEONSync)(ScreenPtr pScreen, int marker) + + TRACE; + +- if (info->exaMarkerSynced != marker) { ++ if (info->accel_state->exaMarkerSynced != marker) { + FUNC_NAME(RADEONWaitForIdle)(pScrn); +- info->exaMarkerSynced = marker; ++ info->accel_state->exaMarkerSynced = marker; + } + +- RADEONPTR(pScrn)->engineMode = EXA_ENGINEMODE_UNKNOWN; ++ RADEONPTR(pScrn)->accel_state->engineMode = EXA_ENGINEMODE_UNKNOWN; + } + + static Bool +@@ -172,8 +172,8 @@ FUNC_NAME(RADEONDoPrepareCopy)(ScrnInfoPtr pScrn, uint32_t src_pitch_offset, + RADEON_GMC_CLR_CMP_CNTL_DIS); + OUT_ACCEL_REG(RADEON_DP_WRITE_MASK, planemask); + OUT_ACCEL_REG(RADEON_DP_CNTL, +- ((info->xdir >= 0 ? RADEON_DST_X_LEFT_TO_RIGHT : 0) | +- (info->ydir >= 0 ? RADEON_DST_Y_TOP_TO_BOTTOM : 0))); ++ ((info->accel_state->xdir >= 0 ? RADEON_DST_X_LEFT_TO_RIGHT : 0) | ++ (info->accel_state->ydir >= 0 ? RADEON_DST_Y_TOP_TO_BOTTOM : 0))); + OUT_ACCEL_REG(RADEON_DST_PITCH_OFFSET, dst_pitch_offset); + OUT_ACCEL_REG(RADEON_SRC_PITCH_OFFSET, src_pitch_offset); + FINISH_ACCEL(); +@@ -190,8 +190,8 @@ FUNC_NAME(RADEONPrepareCopy)(PixmapPtr pSrc, PixmapPtr pDst, + + TRACE; + +- info->xdir = xdir; +- info->ydir = ydir; ++ info->accel_state->xdir = xdir; ++ info->accel_state->ydir = ydir; + + if (pDst->drawable.bitsPerPixel == 24) + RADEON_FALLBACK(("24bpp unsupported")); +@@ -219,11 +219,11 @@ FUNC_NAME(RADEONCopy)(PixmapPtr pDst, + + TRACE; + +- if (info->xdir < 0) { ++ if (info->accel_state->xdir < 0) { + srcX += w - 1; + dstX += w - 1; + } +- if (info->ydir < 0) { ++ if (info->accel_state->ydir < 0) { + srcY += h - 1; + dstY += h - 1; + } +@@ -401,9 +401,9 @@ FUNC_NAME(RADEONDownloadFromScreen)(PixmapPtr pSrc, int x, int y, int w, int h, + int swap = RADEON_HOST_DATA_SWAP_NONE, wpass = w * bpp / 8; + int hpass = min(h, scratch->total/2 / scratch_pitch); + uint32_t scratch_pitch_offset = scratch_pitch << 16 +- | (info->gartLocation + info->bufStart ++ | (info->gartLocation + info->dri->bufStart + + scratch->idx * scratch->total) >> 10; +- drmRadeonIndirect indirect; ++ drm_radeon_indirect_t indirect; + ACCEL_PREAMBLE(); + + RADEON_SWITCH_TO_2D(); +@@ -450,7 +450,7 @@ FUNC_NAME(RADEONDownloadFromScreen)(PixmapPtr pSrc, int x, int y, int w, int h, + * we'd really need is a way to reliably wait for the host interface + * to be done with pushing the data to the host. + */ +- while ((drmCommandNone(info->drmFD, DRM_RADEON_CP_IDLE) == -EBUSY) ++ while ((drmCommandNone(info->dri->drmFD, DRM_RADEON_CP_IDLE) == -EBUSY) + && (i++ < RADEON_TIMEOUT)) + ; + +@@ -473,10 +473,10 @@ FUNC_NAME(RADEONDownloadFromScreen)(PixmapPtr pSrc, int x, int y, int w, int h, + indirect.start = indirect.end = 0; + indirect.discard = 1; + +- drmCommandWriteRead(info->drmFD, DRM_RADEON_INDIRECT, +- &indirect, sizeof(drmRadeonIndirect)); ++ drmCommandWriteRead(info->dri->drmFD, DRM_RADEON_INDIRECT, ++ &indirect, sizeof(drm_radeon_indirect_t)); + +- info->exaMarkerSynced = info->exaSyncMarker; ++ info->accel_state->exaMarkerSynced = info->accel_state->exaSyncMarker; + + return TRUE; + } +@@ -522,35 +522,35 @@ Bool FUNC_NAME(RADEONDrawInit)(ScreenPtr pScreen) + { + RINFO_FROM_SCREEN(pScreen); + +- if (info->exa == NULL) { ++ if (info->accel_state->exa == NULL) { + xf86DrvMsg(pScreen->myNum, X_ERROR, "Memory map not set up\n"); + return FALSE; + } + +- info->exa->exa_major = EXA_VERSION_MAJOR; +- info->exa->exa_minor = EXA_VERSION_MINOR; ++ info->accel_state->exa->exa_major = EXA_VERSION_MAJOR; ++ info->accel_state->exa->exa_minor = EXA_VERSION_MINOR; + +- info->exa->PrepareSolid = FUNC_NAME(RADEONPrepareSolid); +- info->exa->Solid = FUNC_NAME(RADEONSolid); +- info->exa->DoneSolid = FUNC_NAME(RADEONDoneSolid); ++ info->accel_state->exa->PrepareSolid = FUNC_NAME(RADEONPrepareSolid); ++ info->accel_state->exa->Solid = FUNC_NAME(RADEONSolid); ++ info->accel_state->exa->DoneSolid = FUNC_NAME(RADEONDoneSolid); + +- info->exa->PrepareCopy = FUNC_NAME(RADEONPrepareCopy); +- info->exa->Copy = FUNC_NAME(RADEONCopy); +- info->exa->DoneCopy = FUNC_NAME(RADEONDoneCopy); ++ info->accel_state->exa->PrepareCopy = FUNC_NAME(RADEONPrepareCopy); ++ info->accel_state->exa->Copy = FUNC_NAME(RADEONCopy); ++ info->accel_state->exa->DoneCopy = FUNC_NAME(RADEONDoneCopy); + +- info->exa->MarkSync = FUNC_NAME(RADEONMarkSync); +- info->exa->WaitMarker = FUNC_NAME(RADEONSync); +- info->exa->UploadToScreen = FUNC_NAME(RADEONUploadToScreen); +- info->exa->DownloadFromScreen = FUNC_NAME(RADEONDownloadFromScreen); ++ info->accel_state->exa->MarkSync = FUNC_NAME(RADEONMarkSync); ++ info->accel_state->exa->WaitMarker = FUNC_NAME(RADEONSync); ++ info->accel_state->exa->UploadToScreen = FUNC_NAME(RADEONUploadToScreen); ++ info->accel_state->exa->DownloadFromScreen = FUNC_NAME(RADEONDownloadFromScreen); + + #if X_BYTE_ORDER == X_BIG_ENDIAN +- info->exa->PrepareAccess = RADEONPrepareAccess; +- info->exa->FinishAccess = RADEONFinishAccess; ++ info->accel_state->exa->PrepareAccess = RADEONPrepareAccess; ++ info->accel_state->exa->FinishAccess = RADEONFinishAccess; + #endif /* X_BYTE_ORDER == X_BIG_ENDIAN */ + +- info->exa->flags = EXA_OFFSCREEN_PIXMAPS; +- info->exa->pixmapOffsetAlign = RADEON_BUFFER_ALIGN + 1; +- info->exa->pixmapPitchAlign = 64; ++ info->accel_state->exa->flags = EXA_OFFSCREEN_PIXMAPS; ++ info->accel_state->exa->pixmapOffsetAlign = RADEON_BUFFER_ALIGN + 1; ++ info->accel_state->exa->pixmapPitchAlign = 64; + + #ifdef RENDER + if (info->RenderAccel) { +@@ -565,11 +565,11 @@ Bool FUNC_NAME(RADEONDrawInit)(ScreenPtr pScreen) + ) { + xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Render acceleration " + "enabled for R300/R400/R500 type cards.\n"); +- info->exa->CheckComposite = R300CheckComposite; +- info->exa->PrepareComposite = ++ info->accel_state->exa->CheckComposite = R300CheckComposite; ++ info->accel_state->exa->PrepareComposite = + FUNC_NAME(R300PrepareComposite); +- info->exa->Composite = FUNC_NAME(RadeonComposite); +- info->exa->DoneComposite = FUNC_NAME(RadeonDoneComposite); ++ info->accel_state->exa->Composite = FUNC_NAME(RadeonComposite); ++ info->accel_state->exa->DoneComposite = FUNC_NAME(RadeonDoneComposite); + } else + xf86DrvMsg(pScrn->scrnIndex, X_INFO, "EXA Composite requires CP on R5xx/IGP\n"); + } else if ((info->ChipFamily == CHIP_FAMILY_RV250) || +@@ -578,19 +578,19 @@ Bool FUNC_NAME(RADEONDrawInit)(ScreenPtr pScreen) + (info->ChipFamily == CHIP_FAMILY_R200)) { + xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Render acceleration " + "enabled for R200 type cards.\n"); +- info->exa->CheckComposite = R200CheckComposite; +- info->exa->PrepareComposite = ++ info->accel_state->exa->CheckComposite = R200CheckComposite; ++ info->accel_state->exa->PrepareComposite = + FUNC_NAME(R200PrepareComposite); +- info->exa->Composite = FUNC_NAME(RadeonComposite); +- info->exa->DoneComposite = FUNC_NAME(RadeonDoneComposite); ++ info->accel_state->exa->Composite = FUNC_NAME(RadeonComposite); ++ info->accel_state->exa->DoneComposite = FUNC_NAME(RadeonDoneComposite); + } else { + xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Render acceleration " + "enabled for R100 type cards.\n"); +- info->exa->CheckComposite = R100CheckComposite; +- info->exa->PrepareComposite = ++ info->accel_state->exa->CheckComposite = R100CheckComposite; ++ info->accel_state->exa->PrepareComposite = + FUNC_NAME(R100PrepareComposite); +- info->exa->Composite = FUNC_NAME(RadeonComposite); +- info->exa->DoneComposite = FUNC_NAME(RadeonDoneComposite); ++ info->accel_state->exa->Composite = FUNC_NAME(RadeonComposite); ++ info->accel_state->exa->DoneComposite = FUNC_NAME(RadeonDoneComposite); + } + } + #endif +@@ -598,17 +598,17 @@ Bool FUNC_NAME(RADEONDrawInit)(ScreenPtr pScreen) + #if EXA_VERSION_MAJOR > 2 || (EXA_VERSION_MAJOR == 2 && EXA_VERSION_MINOR >= 3) + xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Setting EXA maxPitchBytes\n"); + +- info->exa->maxPitchBytes = 16320; +- info->exa->maxX = 8192; ++ info->accel_state->exa->maxPitchBytes = 16320; ++ info->accel_state->exa->maxX = 8192; + #else +- info->exa->maxX = 16320 / 4; ++ info->accel_state->exa->maxX = 16320 / 4; + #endif +- info->exa->maxY = 8192; ++ info->accel_state->exa->maxY = 8192; + + RADEONEngineInit(pScrn); + +- if (!exaDriverInit(pScreen, info->exa)) { +- xfree(info->exa); ++ if (!exaDriverInit(pScreen, info->accel_state->exa)) { ++ xfree(info->accel_state->exa); + return FALSE; + } + exaMarkSync(pScreen); +diff --git a/src/radeon_exa_render.c b/src/radeon_exa_render.c +index 4736e4f..97199ae 100644 +--- a/src/radeon_exa_render.c ++++ b/src/radeon_exa_render.c +@@ -56,15 +56,6 @@ + + /* Only include the following (generic) bits once. */ + #ifdef ONLY_ONCE +-static Bool is_transform[2]; +-static PictTransform *transform[2]; +-static Bool has_mask; +-/* Whether we are tiling horizontally and vertically */ +-static Bool need_src_tile_x; +-static Bool need_src_tile_y; +-/* Size of tiles ... set to 65536x65536 if not tiling in that direction */ +-static Bool src_tile_width; +-static Bool src_tile_height; + + struct blendinfo { + Bool dst_alpha; +@@ -287,8 +278,10 @@ static Bool RADEONSetupSourceTile(PicturePtr pPict, + Bool canTile1d, + Bool needMatchingPitch) + { +- need_src_tile_x = need_src_tile_y = FALSE; +- src_tile_width = src_tile_height = 65536; /* "infinite" */ ++ RINFO_FROM_SCREEN(pPix->drawable.pScreen); ++ ++ info->accel_state->need_src_tile_x = info->accel_state->need_src_tile_y = FALSE; ++ info->accel_state->src_tile_width = info->accel_state->src_tile_height = 65536; /* "infinite" */ + + if (pPict->repeat) { + Bool badPitch = needMatchingPitch && !RADEONPitchMatches(pPix); +@@ -301,17 +294,19 @@ static Bool RADEONSetupSourceTile(PicturePtr pPict, + RADEON_FALLBACK(("Width %d and pitch %u not compatible for repeat\n", + w, (unsigned)exaGetPixmapPitch(pPix))); + } else { +- need_src_tile_x = (w & (w - 1)) != 0 || badPitch; +- need_src_tile_y = (h & (h - 1)) != 0; ++ info->accel_state->need_src_tile_x = (w & (w - 1)) != 0 || badPitch; ++ info->accel_state->need_src_tile_y = (h & (h - 1)) != 0; + + if (!canTile1d) +- need_src_tile_x = need_src_tile_y = need_src_tile_x || need_src_tile_y; ++ info->accel_state->need_src_tile_x = ++ info->accel_state->need_src_tile_y = ++ info->accel_state->need_src_tile_x || info->accel_state->need_src_tile_y; + } + +- if (need_src_tile_x) +- src_tile_width = w; +- if (need_src_tile_y) +- src_tile_height = h; ++ if (info->accel_state->need_src_tile_x) ++ info->accel_state->src_tile_width = w; ++ if (info->accel_state->need_src_tile_y) ++ info->accel_state->src_tile_height = h; + } + + return TRUE; +@@ -357,7 +352,8 @@ static Bool FUNC_NAME(R100TextureSetup)(PicturePtr pPict, PixmapPtr pPix, + uint32_t txfilter, txformat, txoffset, txpitch; + int w = pPict->pDrawable->width; + int h = pPict->pDrawable->height; +- Bool repeat = pPict->repeat && !(unit == 0 && (need_src_tile_x || need_src_tile_y)); ++ Bool repeat = pPict->repeat && ++ !(unit == 0 && (info->accel_state->need_src_tile_x || info->accel_state->need_src_tile_y)); + int i; + ACCEL_PREAMBLE(); + +@@ -389,8 +385,8 @@ static Bool FUNC_NAME(R100TextureSetup)(PicturePtr pPict, PixmapPtr pPix, + txformat |= RADEON_TXFORMAT_NON_POWER2; + txformat |= unit << 24; /* RADEON_TXFORMAT_ST_ROUTE_STQX */ + +- info->texW[unit] = 1; +- info->texH[unit] = 1; ++ info->accel_state->texW[unit] = 1; ++ info->accel_state->texH[unit] = 1; + + switch (pPict->filter) { + case PictFilterNearest: +@@ -427,10 +423,10 @@ static Bool FUNC_NAME(R100TextureSetup)(PicturePtr pPict, PixmapPtr pPix, + FINISH_ACCEL(); + + if (pPict->transform != 0) { +- is_transform[unit] = TRUE; +- transform[unit] = pPict->transform; ++ info->accel_state->is_transform[unit] = TRUE; ++ info->accel_state->transform[unit] = pPict->transform; + } else { +- is_transform[unit] = FALSE; ++ info->accel_state->is_transform[unit] = FALSE; + } + + return TRUE; +@@ -531,16 +527,16 @@ static Bool FUNC_NAME(R100PrepareComposite)(int op, + + TRACE; + +- if (!info->XInited3D) ++ if (!info->accel_state->XInited3D) + RADEONInit3DEngine(pScrn); + + if (!RADEONGetDestFormat(pDstPicture, &dst_format)) + return FALSE; + + if (pMask) +- has_mask = TRUE; ++ info->accel_state->has_mask = TRUE; + else +- has_mask = FALSE; ++ info->accel_state->has_mask = FALSE; + + pixel_shift = pDst->drawable.bitsPerPixel >> 4; + +@@ -569,7 +565,7 @@ static Bool FUNC_NAME(R100PrepareComposite)(int op, + return FALSE; + pp_cntl |= RADEON_TEX_1_ENABLE; + } else { +- is_transform[1] = FALSE; ++ info->accel_state->is_transform[1] = FALSE; + } + + RADEON_SWITCH_TO_3D(); +@@ -670,7 +666,8 @@ static Bool FUNC_NAME(R200TextureSetup)(PicturePtr pPict, PixmapPtr pPix, + uint32_t txfilter, txformat, txoffset, txpitch; + int w = pPict->pDrawable->width; + int h = pPict->pDrawable->height; +- Bool repeat = pPict->repeat && !(unit == 0 && (need_src_tile_x || need_src_tile_y)); ++ Bool repeat = pPict->repeat && ++ !(unit == 0 && (info->accel_state->need_src_tile_x || info->accel_state->need_src_tile_y)); + int i; + ACCEL_PREAMBLE(); + +@@ -702,8 +699,8 @@ static Bool FUNC_NAME(R200TextureSetup)(PicturePtr pPict, PixmapPtr pPix, + txformat |= R200_TXFORMAT_NON_POWER2; + txformat |= unit << R200_TXFORMAT_ST_ROUTE_SHIFT; + +- info->texW[unit] = w; +- info->texH[unit] = h; ++ info->accel_state->texW[unit] = w; ++ info->accel_state->texH[unit] = h; + + switch (pPict->filter) { + case PictFilterNearest: +@@ -742,10 +739,10 @@ static Bool FUNC_NAME(R200TextureSetup)(PicturePtr pPict, PixmapPtr pPix, + FINISH_ACCEL(); + + if (pPict->transform != 0) { +- is_transform[unit] = TRUE; +- transform[unit] = pPict->transform; ++ info->accel_state->is_transform[unit] = TRUE; ++ info->accel_state->transform[unit] = pPict->transform; + } else { +- is_transform[unit] = FALSE; ++ info->accel_state->is_transform[unit] = FALSE; + } + + return TRUE; +@@ -830,16 +827,16 @@ static Bool FUNC_NAME(R200PrepareComposite)(int op, PicturePtr pSrcPicture, + + TRACE; + +- if (!info->XInited3D) ++ if (!info->accel_state->XInited3D) + RADEONInit3DEngine(pScrn); + + if (!RADEONGetDestFormat(pDstPicture, &dst_format)) + return FALSE; + + if (pMask) +- has_mask = TRUE; ++ info->accel_state->has_mask = TRUE; + else +- has_mask = FALSE; ++ info->accel_state->has_mask = FALSE; + + pixel_shift = pDst->drawable.bitsPerPixel >> 4; + +@@ -866,7 +863,7 @@ static Bool FUNC_NAME(R200PrepareComposite)(int op, PicturePtr pSrcPicture, + return FALSE; + pp_cntl |= RADEON_TEX_1_ENABLE; + } else { +- is_transform[1] = FALSE; ++ info->accel_state->is_transform[1] = FALSE; + } + + RADEON_SWITCH_TO_3D(); +@@ -1045,15 +1042,15 @@ static Bool FUNC_NAME(R300TextureSetup)(PicturePtr pPict, PixmapPtr pPix, + */ + txformat0 |= R300_TXPITCH_EN; + +- info->texW[unit] = w; +- info->texH[unit] = h; ++ info->accel_state->texW[unit] = w; ++ info->accel_state->texH[unit] = h; + +- if (pPict->repeat && !(unit == 0 && need_src_tile_x)) ++ if (pPict->repeat && !(unit == 0 && info->accel_state->need_src_tile_x)) + txfilter = R300_TX_CLAMP_S(R300_TX_CLAMP_WRAP); + else + txfilter = R300_TX_CLAMP_S(R300_TX_CLAMP_CLAMP_GL); + +- if (pPict->repeat && !(unit == 0 && need_src_tile_y)) ++ if (pPict->repeat && !(unit == 0 && info->accel_state->need_src_tile_y)) + txfilter |= R300_TX_CLAMP_T(R300_TX_CLAMP_WRAP); + else + txfilter |= R300_TX_CLAMP_T(R300_TX_CLAMP_CLAMP_GL); +@@ -1083,10 +1080,10 @@ static Bool FUNC_NAME(R300TextureSetup)(PicturePtr pPict, PixmapPtr pPix, + FINISH_ACCEL(); + + if (pPict->transform != 0) { +- is_transform[unit] = TRUE; +- transform[unit] = pPict->transform; ++ info->accel_state->is_transform[unit] = TRUE; ++ info->accel_state->transform[unit] = pPict->transform; + } else { +- is_transform[unit] = FALSE; ++ info->accel_state->is_transform[unit] = FALSE; + } + + return TRUE; +@@ -1191,16 +1188,16 @@ static Bool FUNC_NAME(R300PrepareComposite)(int op, PicturePtr pSrcPicture, + + TRACE; + +- if (!info->XInited3D) ++ if (!info->accel_state->XInited3D) + RADEONInit3DEngine(pScrn); + + if (!R300GetDestFormat(pDstPicture, &dst_format)) + return FALSE; + + if (pMask) +- has_mask = TRUE; ++ info->accel_state->has_mask = TRUE; + else +- has_mask = FALSE; ++ info->accel_state->has_mask = FALSE; + + pixel_shift = pDst->drawable.bitsPerPixel >> 4; + +@@ -1230,13 +1227,13 @@ static Bool FUNC_NAME(R300PrepareComposite)(int op, PicturePtr pSrcPicture, + return FALSE; + txenable |= R300_TEX_1_ENABLE; + } else { +- is_transform[1] = FALSE; ++ info->accel_state->is_transform[1] = FALSE; + } + + RADEON_SWITCH_TO_3D(); + + /* setup the VAP */ +- if (info->has_tcl) { ++ if (info->accel_state->has_tcl) { + if (pMask) + BEGIN_ACCEL(8); + else +@@ -1296,7 +1293,7 @@ static Bool FUNC_NAME(R300PrepareComposite)(int op, PicturePtr pSrcPicture, + * - Xv + * Here we select the offset of the vertex program we want to use + */ +- if (info->has_tcl) { ++ if (info->accel_state->has_tcl) { + if (pMask) { + OUT_ACCEL_REG(R300_VAP_PVS_CODE_CNTL_0, + ((0 << R300_PVS_FIRST_INST_SHIFT) | +@@ -1419,7 +1416,7 @@ static Bool FUNC_NAME(R300PrepareComposite)(int op, PicturePtr pSrcPicture, + + + /* setup the rasterizer, load FS */ +- BEGIN_ACCEL(9); ++ BEGIN_ACCEL(10); + if (pMask) { + /* 4 components: 2 for tex0, 2 for tex1 */ + OUT_ACCEL_REG(R300_RS_COUNT, +@@ -1461,6 +1458,7 @@ static Bool FUNC_NAME(R300PrepareComposite)(int op, PicturePtr pSrcPicture, + R300_RGBA_OUT)); + } + ++ OUT_ACCEL_REG(R300_US_PIXSIZE, 1); /* highest temp used */ + /* shader output swizzling */ + OUT_ACCEL_REG(R300_US_OUT_FMT_0, output_fmt); + +@@ -1474,7 +1472,7 @@ static Bool FUNC_NAME(R300PrepareComposite)(int op, PicturePtr pSrcPicture, + * R300_ALU_RGB_OMASK - output components to write + * R300_ALU_RGB_TARGET_A - render target + */ +- OUT_ACCEL_REG(R300_US_ALU_RGB_ADDR_0, ++ OUT_ACCEL_REG(R300_US_ALU_RGB_ADDR(0), + (R300_ALU_RGB_ADDR0(0) | + R300_ALU_RGB_ADDR1(1) | + R300_ALU_RGB_ADDR2(0) | +@@ -1486,7 +1484,7 @@ static Bool FUNC_NAME(R300PrepareComposite)(int op, PicturePtr pSrcPicture, + /* RGB inst + * ALU operation + */ +- OUT_ACCEL_REG(R300_US_ALU_RGB_INST_0, ++ OUT_ACCEL_REG(R300_US_ALU_RGB_INST(0), + (R300_ALU_RGB_SEL_A(src_color) | + R300_ALU_RGB_MOD_A(R300_ALU_RGB_MOD_NOP) | + R300_ALU_RGB_SEL_B(mask_color) | +@@ -1503,7 +1501,7 @@ static Bool FUNC_NAME(R300PrepareComposite)(int op, PicturePtr pSrcPicture, + * R300_ALU_ALPHA_OMASK - output components to write + * R300_ALU_ALPHA_TARGET_A - render target + */ +- OUT_ACCEL_REG(R300_US_ALU_ALPHA_ADDR_0, ++ OUT_ACCEL_REG(R300_US_ALU_ALPHA_ADDR(0), + (R300_ALU_ALPHA_ADDR0(0) | + R300_ALU_ALPHA_ADDR1(1) | + R300_ALU_ALPHA_ADDR2(0) | +@@ -1514,7 +1512,7 @@ static Bool FUNC_NAME(R300PrepareComposite)(int op, PicturePtr pSrcPicture, + /* Alpha inst + * ALU operation + */ +- OUT_ACCEL_REG(R300_US_ALU_ALPHA_INST_0, ++ OUT_ACCEL_REG(R300_US_ALU_ALPHA_INST(0), + (R300_ALU_ALPHA_SEL_A(src_alpha) | + R300_ALU_ALPHA_MOD_A(R300_ALU_ALPHA_MOD_NOP) | + R300_ALU_ALPHA_SEL_B(mask_alpha) | +@@ -1633,7 +1631,7 @@ static Bool FUNC_NAME(R300PrepareComposite)(int op, PicturePtr pSrcPicture, + break; + } + +- BEGIN_ACCEL(6); ++ BEGIN_ACCEL(7); + if (pMask) { + /* 4 components: 2 for tex0, 2 for tex1 */ + OUT_ACCEL_REG(R300_RS_COUNT, +@@ -1662,12 +1660,13 @@ static Bool FUNC_NAME(R300PrepareComposite)(int op, PicturePtr pSrcPicture, + OUT_ACCEL_REG(R500_US_CODE_OFFSET, 0); + } + ++ OUT_ACCEL_REG(R300_US_PIXSIZE, 1); /* highest temp used */ + OUT_ACCEL_REG(R300_US_OUT_FMT_0, output_fmt); + FINISH_ACCEL(); + + if (pMask) { + BEGIN_ACCEL(19); +- OUT_ACCEL_REG(R500_GA_US_VECTOR_INDEX, 0); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_INDEX, R500_US_VECTOR_INST_INDEX(0)); + /* tex inst for src texture */ + OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_INST_TYPE_TEX | + R500_INST_RGB_WMASK_R | +@@ -1739,7 +1738,7 @@ static Bool FUNC_NAME(R300PrepareComposite)(int op, PicturePtr pSrcPicture, + OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, 0x00000000); + } else { + BEGIN_ACCEL(13); +- OUT_ACCEL_REG(R500_GA_US_VECTOR_INDEX, 0); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_INDEX, R500_US_VECTOR_INST_INDEX(0)); + /* tex inst for src texture */ + OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_INST_TYPE_TEX | + R500_INST_TEX_SEM_WAIT | +@@ -1936,20 +1935,20 @@ static void FUNC_NAME(RadeonCompositeTile)(PixmapPtr pDst, + maskBottomRight.x = IntToxFixed(maskX + w); + maskBottomRight.y = IntToxFixed(maskY + h); + +- if (is_transform[0]) { +- transformPoint(transform[0], &srcTopLeft); +- transformPoint(transform[0], &srcTopRight); +- transformPoint(transform[0], &srcBottomLeft); +- transformPoint(transform[0], &srcBottomRight); ++ if (info->accel_state->is_transform[0]) { ++ transformPoint(info->accel_state->transform[0], &srcTopLeft); ++ transformPoint(info->accel_state->transform[0], &srcTopRight); ++ transformPoint(info->accel_state->transform[0], &srcBottomLeft); ++ transformPoint(info->accel_state->transform[0], &srcBottomRight); + } +- if (is_transform[1]) { +- transformPoint(transform[1], &maskTopLeft); +- transformPoint(transform[1], &maskTopRight); +- transformPoint(transform[1], &maskBottomLeft); +- transformPoint(transform[1], &maskBottomRight); ++ if (info->accel_state->is_transform[1]) { ++ transformPoint(info->accel_state->transform[1], &maskTopLeft); ++ transformPoint(info->accel_state->transform[1], &maskTopRight); ++ transformPoint(info->accel_state->transform[1], &maskBottomLeft); ++ transformPoint(info->accel_state->transform[1], &maskBottomRight); + } + +- if (has_mask) ++ if (info->accel_state->has_mask) + vtx_count = VTX_COUNT_MASK; + else + vtx_count = VTX_COUNT; +@@ -1962,21 +1961,21 @@ static void FUNC_NAME(RadeonCompositeTile)(PixmapPtr pDst, + + #ifdef ACCEL_CP + if (info->ChipFamily < CHIP_FAMILY_R200) { +- BEGIN_RING(4 * vtx_count + 3); ++ BEGIN_RING(3 * vtx_count + 3); + OUT_RING(CP_PACKET3(RADEON_CP_PACKET3_3D_DRAW_IMMD, +- 4 * vtx_count + 1)); +- if (has_mask) ++ 3 * vtx_count + 1)); ++ if (info->accel_state->has_mask) + OUT_RING(RADEON_CP_VC_FRMT_XY | + RADEON_CP_VC_FRMT_ST0 | + RADEON_CP_VC_FRMT_ST1); + else + OUT_RING(RADEON_CP_VC_FRMT_XY | + RADEON_CP_VC_FRMT_ST0); +- OUT_RING(RADEON_CP_VC_CNTL_PRIM_TYPE_TRI_FAN | ++ OUT_RING(RADEON_CP_VC_CNTL_PRIM_TYPE_RECT_LIST | + RADEON_CP_VC_CNTL_PRIM_WALK_RING | + RADEON_CP_VC_CNTL_MAOS_ENABLE | + RADEON_CP_VC_CNTL_VTX_FMT_RADEON_MODE | +- (4 << RADEON_CP_VC_CNTL_NUM_SHIFT)); ++ (3 << RADEON_CP_VC_CNTL_NUM_SHIFT)); + } else { + if (IS_R300_3D || IS_R500_3D) + BEGIN_RING(4 * vtx_count + 4); +@@ -1985,7 +1984,7 @@ static void FUNC_NAME(RadeonCompositeTile)(PixmapPtr pDst, + + OUT_RING(CP_PACKET3(R200_CP_PACKET3_3D_DRAW_IMMD_2, + 4 * vtx_count)); +- OUT_RING(RADEON_CP_VC_CNTL_PRIM_TYPE_TRI_FAN | ++ OUT_RING(RADEON_CP_VC_CNTL_PRIM_TYPE_QUAD_LIST | + RADEON_CP_VC_CNTL_PRIM_WALK_RING | + (4 << RADEON_CP_VC_CNTL_NUM_SHIFT)); + } +@@ -1993,43 +1992,49 @@ static void FUNC_NAME(RadeonCompositeTile)(PixmapPtr pDst, + #else /* ACCEL_CP */ + if (IS_R300_3D || IS_R500_3D) + BEGIN_ACCEL(2 + vtx_count * 4); ++ else if (info->ChipFamily < CHIP_FAMILY_R200) ++ BEGIN_ACCEL(1 + vtx_count * 3); + else + BEGIN_ACCEL(1 + vtx_count * 4); + +- if (info->ChipFamily < CHIP_FAMILY_R200) { +- OUT_ACCEL_REG(RADEON_SE_VF_CNTL, (RADEON_VF_PRIM_TYPE_TRIANGLE_FAN | ++ if (info->ChipFamily < CHIP_FAMILY_R200) ++ OUT_ACCEL_REG(RADEON_SE_VF_CNTL, (RADEON_VF_PRIM_TYPE_RECTANGLE_LIST | + RADEON_VF_PRIM_WALK_DATA | + RADEON_VF_RADEON_MODE | +- 4 << RADEON_VF_NUM_VERTICES_SHIFT)); +- } else { ++ (3 << RADEON_VF_NUM_VERTICES_SHIFT))); ++ else + OUT_ACCEL_REG(RADEON_SE_VF_CNTL, (RADEON_VF_PRIM_TYPE_QUAD_LIST | + RADEON_VF_PRIM_WALK_DATA | +- 4 << RADEON_VF_NUM_VERTICES_SHIFT)); +- } ++ (4 << RADEON_VF_NUM_VERTICES_SHIFT))); ++ + #endif + +- if (has_mask) { +- VTX_OUT_MASK((float)dstX, (float)dstY, +- xFixedToFloat(srcTopLeft.x) / info->texW[0], xFixedToFloat(srcTopLeft.y) / info->texH[0], +- xFixedToFloat(maskTopLeft.x) / info->texW[1], xFixedToFloat(maskTopLeft.y) / info->texH[1]); ++ if (info->accel_state->has_mask) { ++ if (info->ChipFamily >= CHIP_FAMILY_R200) { ++ VTX_OUT_MASK((float)dstX, (float)dstY, ++ xFixedToFloat(srcTopLeft.x) / info->accel_state->texW[0], xFixedToFloat(srcTopLeft.y) / info->accel_state->texH[0], ++ xFixedToFloat(maskTopLeft.x) / info->accel_state->texW[1], xFixedToFloat(maskTopLeft.y) / info->accel_state->texH[1]); ++ } + VTX_OUT_MASK((float)dstX, (float)(dstY + h), +- xFixedToFloat(srcBottomLeft.x) / info->texW[0], xFixedToFloat(srcBottomLeft.y) / info->texH[0], +- xFixedToFloat(maskBottomLeft.x) / info->texW[1], xFixedToFloat(maskBottomLeft.y) / info->texH[1]); ++ xFixedToFloat(srcBottomLeft.x) / info->accel_state->texW[0], xFixedToFloat(srcBottomLeft.y) / info->accel_state->texH[0], ++ xFixedToFloat(maskBottomLeft.x) / info->accel_state->texW[1], xFixedToFloat(maskBottomLeft.y) / info->accel_state->texH[1]); + VTX_OUT_MASK((float)(dstX + w), (float)(dstY + h), +- xFixedToFloat(srcBottomRight.x) / info->texW[0], xFixedToFloat(srcBottomRight.y) / info->texH[0], +- xFixedToFloat(maskBottomRight.x) / info->texW[1], xFixedToFloat(maskBottomRight.y) / info->texH[1]); ++ xFixedToFloat(srcBottomRight.x) / info->accel_state->texW[0], xFixedToFloat(srcBottomRight.y) / info->accel_state->texH[0], ++ xFixedToFloat(maskBottomRight.x) / info->accel_state->texW[1], xFixedToFloat(maskBottomRight.y) / info->accel_state->texH[1]); + VTX_OUT_MASK((float)(dstX + w), (float)dstY, +- xFixedToFloat(srcTopRight.x) / info->texW[0], xFixedToFloat(srcTopRight.y) / info->texH[0], +- xFixedToFloat(maskTopRight.x) / info->texW[1], xFixedToFloat(maskTopRight.y) / info->texH[1]); ++ xFixedToFloat(srcTopRight.x) / info->accel_state->texW[0], xFixedToFloat(srcTopRight.y) / info->accel_state->texH[0], ++ xFixedToFloat(maskTopRight.x) / info->accel_state->texW[1], xFixedToFloat(maskTopRight.y) / info->accel_state->texH[1]); + } else { +- VTX_OUT((float)dstX, (float)dstY, +- xFixedToFloat(srcTopLeft.x) / info->texW[0], xFixedToFloat(srcTopLeft.y) / info->texH[0]); ++ if (info->ChipFamily >= CHIP_FAMILY_R200) { ++ VTX_OUT((float)dstX, (float)dstY, ++ xFixedToFloat(srcTopLeft.x) / info->accel_state->texW[0], xFixedToFloat(srcTopLeft.y) / info->accel_state->texH[0]); ++ } + VTX_OUT((float)dstX, (float)(dstY + h), +- xFixedToFloat(srcBottomLeft.x) / info->texW[0], xFixedToFloat(srcBottomLeft.y) / info->texH[0]); ++ xFixedToFloat(srcBottomLeft.x) / info->accel_state->texW[0], xFixedToFloat(srcBottomLeft.y) / info->accel_state->texH[0]); + VTX_OUT((float)(dstX + w), (float)(dstY + h), +- xFixedToFloat(srcBottomRight.x) / info->texW[0], xFixedToFloat(srcBottomRight.y) / info->texH[0]); ++ xFixedToFloat(srcBottomRight.x) / info->accel_state->texW[0], xFixedToFloat(srcBottomRight.y) / info->accel_state->texH[0]); + VTX_OUT((float)(dstX + w), (float)dstY, +- xFixedToFloat(srcTopRight.x) / info->texW[0], xFixedToFloat(srcTopRight.y) / info->texH[0]); ++ xFixedToFloat(srcTopRight.x) / info->accel_state->texW[0], xFixedToFloat(srcTopRight.y) / info->accel_state->texH[0]); + } + + if (IS_R300_3D || IS_R500_3D) +@@ -2055,8 +2060,9 @@ static void FUNC_NAME(RadeonComposite)(PixmapPtr pDst, + { + int tileSrcY, tileMaskY, tileDstY; + int remainingHeight; +- +- if (!need_src_tile_x && !need_src_tile_y) { ++ RINFO_FROM_SCREEN(pDst->drawable.pScreen); ++ ++ if (!info->accel_state->need_src_tile_x && !info->accel_state->need_src_tile_y) { + FUNC_NAME(RadeonCompositeTile)(pDst, + srcX, srcY, + maskX, maskY, +@@ -2067,7 +2073,7 @@ static void FUNC_NAME(RadeonComposite)(PixmapPtr pDst, + + /* Tiling logic borrowed from exaFillRegionTiled */ + +- modulus(srcY, src_tile_height, tileSrcY); ++ modulus(srcY, info->accel_state->src_tile_height, tileSrcY); + tileMaskY = maskY; + tileDstY = dstY; + +@@ -2075,18 +2081,18 @@ static void FUNC_NAME(RadeonComposite)(PixmapPtr pDst, + while (remainingHeight > 0) { + int remainingWidth = width; + int tileSrcX, tileMaskX, tileDstX; +- int h = src_tile_height - tileSrcY; ++ int h = info->accel_state->src_tile_height - tileSrcY; + + if (h > remainingHeight) + h = remainingHeight; + remainingHeight -= h; + +- modulus(srcX, src_tile_width, tileSrcX); ++ modulus(srcX, info->accel_state->src_tile_width, tileSrcX); + tileMaskX = maskX; + tileDstX = dstX; + + while (remainingWidth > 0) { +- int w = src_tile_width - tileSrcX; ++ int w = info->accel_state->src_tile_width - tileSrcX; + if (w > remainingWidth) + w = remainingWidth; + remainingWidth -= w; +diff --git a/src/radeon_legacy_memory.c b/src/radeon_legacy_memory.c +new file mode 100644 +index 0000000..2a9ee94 +--- /dev/null ++++ b/src/radeon_legacy_memory.c +@@ -0,0 +1,117 @@ ++ ++#ifdef HAVE_CONFIG_H ++#include "config.h" ++#endif ++ ++/* Driver data structures */ ++#include "radeon.h" ++ ++/* Allocates memory, either by resizing the allocation pointed to by mem_struct, ++ * or by freeing mem_struct (if non-NULL) and allocating a new space. The size ++ * is measured in bytes, and the offset from the beginning of card space is ++ * returned. ++ */ ++uint32_t ++radeon_legacy_allocate_memory(ScrnInfoPtr pScrn, ++ void **mem_struct, ++ int size, ++ int align) ++{ ++ ScreenPtr pScreen = screenInfo.screens[pScrn->scrnIndex]; ++ RADEONInfoPtr info = RADEONPTR(pScrn); ++ uint32_t offset = 0; ++ ++#ifdef USE_EXA ++ if (info->useEXA) { ++ ExaOffscreenArea *area = *mem_struct; ++ ++ if (area != NULL) { ++ if (area->size >= size) ++ return area->offset; ++ ++ exaOffscreenFree(pScreen, area); ++ } ++ ++ area = exaOffscreenAlloc(pScreen, size, align, TRUE, ++ NULL, NULL); ++ ++ *mem_struct = area; ++ if (area == NULL) ++ return 0; ++ offset = area->offset; ++ } ++#endif /* USE_EXA */ ++#ifdef USE_XAA ++ if (!info->useEXA) { ++ FBLinearPtr linear = *mem_struct; ++ int cpp = info->CurrentLayout.bitsPerPixel / 8; ++ ++ /* XAA allocates in units of pixels at the screen bpp, so adjust size ++ * appropriately. ++ */ ++ size = (size + cpp - 1) / cpp; ++ align = (align + cpp - 1) / cpp; ++ ++ if (linear) { ++ if(linear->size >= size) ++ return linear->offset * cpp; ++ ++ if(xf86ResizeOffscreenLinear(linear, size)) ++ return linear->offset * cpp; ++ ++ xf86FreeOffscreenLinear(linear); ++ } ++ ++ linear = xf86AllocateOffscreenLinear(pScreen, size, align, ++ NULL, NULL, NULL); ++ *mem_struct = linear; ++ ++ if (!linear) { ++ int max_size; ++ ++ xf86QueryLargestOffscreenLinear(pScreen, &max_size, align, ++ PRIORITY_EXTREME); ++ ++ if (max_size < size) ++ return 0; ++ ++ xf86PurgeUnlockedOffscreenAreas(pScreen); ++ linear = xf86AllocateOffscreenLinear(pScreen, size, align, ++ NULL, NULL, NULL); ++ *mem_struct = linear; ++ if (!linear) ++ return 0; ++ } ++ offset = linear->offset * cpp; ++ } ++#endif /* USE_XAA */ ++ ++ return offset; ++} ++ ++void ++radeon_legacy_free_memory(ScrnInfoPtr pScrn, ++ void *mem_struct) ++{ ++ ScreenPtr pScreen = screenInfo.screens[pScrn->scrnIndex]; ++ RADEONInfoPtr info = RADEONPTR(pScrn); ++ ++#ifdef USE_EXA ++ if (info->useEXA) { ++ ExaOffscreenArea *area = mem_struct; ++ ++ if (area != NULL) ++ exaOffscreenFree(pScreen, area); ++ area = NULL; ++ } ++#endif /* USE_EXA */ ++#ifdef USE_XAA ++ if (!info->useEXA) { ++ FBLinearPtr linear = mem_struct; ++ ++ if (linear != NULL) ++ xf86FreeOffscreenLinear(linear); ++ linear = NULL; ++ } ++#endif /* USE_XAA */ ++} +diff --git a/src/radeon_macros.h b/src/radeon_macros.h +index afe442e..f19bc3e 100644 +--- a/src/radeon_macros.h ++++ b/src/radeon_macros.h +@@ -51,32 +51,6 @@ + + #include "compiler.h" + +-#if HAVE_BYTESWAP_H +-#include <byteswap.h> +-#elif defined(USE_SYS_ENDIAN_H) +-#include <sys/endian.h> +-#else +-#define bswap_16(value) \ +- ((((value) & 0xff) << 8) | ((value) >> 8)) +- +-#define bswap_32(value) \ +- (((uint32_t)bswap_16((uint16_t)((value) & 0xffff)) << 16) | \ +- (uint32_t)bswap_16((uint16_t)((value) >> 16))) +- +-#define bswap_64(value) \ +- (((uint64_t)bswap_32((uint32_t)((value) & 0xffffffff)) \ +- << 32) | \ +- (uint64_t)bswap_32((uint32_t)((value) >> 32))) +-#endif +- +-#if X_BYTE_ORDER == X_BIG_ENDIAN +-#define le32_to_cpu(x) bswap_32(x) +-#define le16_to_cpu(x) bswap_16(x) +-#else +-#define le32_to_cpu(x) (x) +-#define le16_to_cpu(x) (x) +-#endif +- + #define RADEON_BIOS8(v) (info->VBIOS[v]) + #define RADEON_BIOS16(v) (info->VBIOS[v] | \ + (info->VBIOS[(v) + 1] << 8)) +diff --git a/src/radeon_output.c b/src/radeon_output.c +index 7b89d66..8c794fb 100644 +--- a/src/radeon_output.c ++++ b/src/radeon_output.c +@@ -173,9 +173,6 @@ static const uint32_t default_tvdac_adj [CHIP_FAMILY_LAST] = + + static void RADEONUpdatePanelSize(xf86OutputPtr output); + static void RADEONGetTMDSInfoFromTable(xf86OutputPtr output); +-#define AVIVO_I2C_DISABLE 0 +-#define AVIVO_I2C_ENABLE 1 +-static Bool AVIVOI2CDoLock(xf86OutputPtr output, int lock_state); + + extern void atombios_output_mode_set(xf86OutputPtr output, + DisplayModePtr mode, +@@ -183,6 +180,8 @@ extern void atombios_output_mode_set(xf86OutputPtr output, + extern void atombios_output_dpms(xf86OutputPtr output, int mode); + extern RADEONMonitorType atombios_dac_detect(ScrnInfoPtr pScrn, xf86OutputPtr output); + extern int atombios_external_tmds_setup(xf86OutputPtr output, DisplayModePtr mode); ++extern AtomBiosResult ++atombios_lock_crtc(atomBiosHandlePtr atomBIOS, int crtc, int lock); + static void + radeon_bios_output_dpms(xf86OutputPtr output, int mode); + static void +@@ -213,88 +212,6 @@ void RADEONPrintPortMap(ScrnInfoPtr pScrn) + + } + +-static xf86MonPtr +-radeon_do_ddc(xf86OutputPtr output) +-{ +- RADEONInfoPtr info = RADEONPTR(output->scrn); +- unsigned char *RADEONMMIO = info->MMIO; +- uint32_t DDCReg; +- xf86MonPtr MonInfo = NULL; +- RADEONOutputPrivatePtr radeon_output = output->driver_private; +- int i, j; +- +- if (radeon_output->pI2CBus) { +- DDCReg = radeon_output->ddc_i2c.mask_clk_reg; +- +- if (IS_AVIVO_VARIANT) { +- AVIVOI2CDoLock(output, AVIVO_I2C_ENABLE); +- MonInfo = xf86OutputGetEDID(output, radeon_output->pI2CBus); +- AVIVOI2CDoLock(output, AVIVO_I2C_DISABLE); +- } else if ((DDCReg == RADEON_LCD_GPIO_MASK) || (DDCReg == RADEON_MDGPIO_EN_REG)) { +- MonInfo = xf86OutputGetEDID(output, radeon_output->pI2CBus); +- } else { +- OUTREG(DDCReg, INREG(DDCReg) & +- (uint32_t)~(RADEON_GPIO_A_0 | RADEON_GPIO_A_1)); +- +- /* For some old monitors (like Compaq Presario FP500), we need +- * following process to initialize/stop DDC +- */ +- OUTREG(DDCReg, INREG(DDCReg) & ~(RADEON_GPIO_EN_1)); +- for (j = 0; j < 3; j++) { +- OUTREG(DDCReg, +- INREG(DDCReg) & ~(RADEON_GPIO_EN_0)); +- usleep(13000); +- +- OUTREG(DDCReg, +- INREG(DDCReg) & ~(RADEON_GPIO_EN_1)); +- for (i = 0; i < 10; i++) { +- usleep(15000); +- if (INREG(DDCReg) & RADEON_GPIO_Y_1) +- break; +- } +- if (i == 10) continue; +- +- usleep(15000); +- +- OUTREG(DDCReg, INREG(DDCReg) | RADEON_GPIO_EN_0); +- usleep(15000); +- +- OUTREG(DDCReg, INREG(DDCReg) | RADEON_GPIO_EN_1); +- usleep(15000); +- OUTREG(DDCReg, +- INREG(DDCReg) & ~(RADEON_GPIO_EN_0)); +- usleep(15000); +- +- MonInfo = xf86OutputGetEDID(output, radeon_output->pI2CBus); +- +- OUTREG(DDCReg, INREG(DDCReg) | RADEON_GPIO_EN_1); +- OUTREG(DDCReg, INREG(DDCReg) | RADEON_GPIO_EN_0); +- usleep(15000); +- OUTREG(DDCReg, +- INREG(DDCReg) & ~(RADEON_GPIO_EN_1)); +- for (i = 0; i < 5; i++) { +- usleep(15000); +- if (INREG(DDCReg) & RADEON_GPIO_Y_1) +- break; +- } +- usleep(15000); +- OUTREG(DDCReg, +- INREG(DDCReg) & ~(RADEON_GPIO_EN_0)); +- usleep(15000); +- +- OUTREG(DDCReg, INREG(DDCReg) | RADEON_GPIO_EN_1); +- OUTREG(DDCReg, INREG(DDCReg) | RADEON_GPIO_EN_0); +- usleep(15000); +- if (MonInfo) break; +- } +- OUTREG(DDCReg, INREG(DDCReg) & +- ~(RADEON_GPIO_EN_0 | RADEON_GPIO_EN_1)); +- } +- } +- +- return MonInfo; +-} +- + static RADEONMonitorType + radeon_ddc_connected(xf86OutputPtr output) + { +@@ -304,8 +221,20 @@ radeon_ddc_connected(xf86OutputPtr output) + xf86MonPtr MonInfo = NULL; + RADEONOutputPrivatePtr radeon_output = output->driver_private; + +- if (radeon_output->pI2CBus) +- MonInfo = radeon_do_ddc(output); ++ if (radeon_output->pI2CBus) { ++ /* RV410 RADEON_GPIO_VGA_DDC seems to only work via hw i2c ++ * We may want to extend this to other cases if the need arises... ++ */ ++ if ((info->ChipFamily == CHIP_FAMILY_RV410) && ++ (radeon_output->ddc_i2c.mask_clk_reg == RADEON_GPIO_VGA_DDC) && ++ info->IsAtomBios) ++ MonInfo = radeon_atom_get_edid(output); ++ else { ++ RADEONI2CDoLock(output, TRUE); ++ MonInfo = xf86OutputGetEDID(output, radeon_output->pI2CBus); ++ RADEONI2CDoLock(output, FALSE); ++ } ++ } + if (MonInfo) { + if (!xf86ReturnOptValBool(info->Options, OPTION_IGNORE_EDID, FALSE)) + xf86OutputSetEDID(output, MonInfo); +@@ -317,13 +246,14 @@ radeon_ddc_connected(xf86OutputPtr output) + MonType = MT_DFP; + else if (radeon_output->type == OUTPUT_DP) + MonType = MT_DFP; +- else if (radeon_output->type == OUTPUT_DVI_I && (MonInfo->rawData[0x14] & 0x80)) /* if it's digital and DVI */ ++ else if (radeon_output->type == OUTPUT_DVI_I && ++ (MonInfo->rawData[0x14] & 0x80)) /* if it's digital and DVI */ + MonType = MT_DFP; + else + MonType = MT_CRT; + } else + MonType = MT_NONE; +- ++ + xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "Output: %s, Detected Monitor Type: %d\n", output->name, MonType); + +@@ -537,7 +467,7 @@ radeon_mode_fixup(xf86OutputPtr output, DisplayModePtr mode, + if (IS_AVIVO_VARIANT) { + /* set to the panel's native mode */ + adjusted_mode->HDisplay = radeon_output->PanelXRes; +- adjusted_mode->HDisplay = radeon_output->PanelYRes; ++ adjusted_mode->VDisplay = radeon_output->PanelYRes; + adjusted_mode->HTotal = radeon_output->PanelXRes + radeon_output->HBlank; + adjusted_mode->HSyncStart = radeon_output->PanelXRes + radeon_output->HOverPlus; + adjusted_mode->HSyncEnd = adjusted_mode->HSyncStart + radeon_output->HSyncWidth; +@@ -580,12 +510,20 @@ radeon_mode_fixup(xf86OutputPtr output, DisplayModePtr mode, + } + } + ++ if (IS_AVIVO_VARIANT) { ++ /* hw bug */ ++ if ((mode->Flags & V_INTERLACE) ++ && (mode->CrtcVSyncStart < (mode->CrtcVDisplay + 2))) ++ adjusted_mode->CrtcVSyncStart = adjusted_mode->CrtcVDisplay + 2; ++ } ++ + return TRUE; + } + + static void + radeon_mode_prepare(xf86OutputPtr output) + { ++ RADEONInfoPtr info = RADEONPTR(output->scrn); + xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR (output->scrn); + int o; + +@@ -595,9 +533,12 @@ radeon_mode_prepare(xf86OutputPtr output) + continue; + else if (loop_output->crtc) { + xf86CrtcPtr other_crtc = loop_output->crtc; ++ RADEONCrtcPrivatePtr other_radeon_crtc = other_crtc->driver_private; + if (other_crtc->enabled) { +- radeon_dpms(loop_output, DPMSModeOff); + radeon_crtc_dpms(other_crtc, DPMSModeOff); ++ if (IS_AVIVO_VARIANT) ++ atombios_lock_crtc(info->atomBIOS, other_radeon_crtc->crtc_id, 1); ++ radeon_dpms(loop_output, DPMSModeOff); + } + } + } +@@ -625,6 +566,7 @@ radeon_mode_set(xf86OutputPtr output, DisplayModePtr mode, + static void + radeon_mode_commit(xf86OutputPtr output) + { ++ RADEONInfoPtr info = RADEONPTR(output->scrn); + xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR (output->scrn); + int o; + +@@ -634,9 +576,12 @@ radeon_mode_commit(xf86OutputPtr output) + continue; + else if (loop_output->crtc) { + xf86CrtcPtr other_crtc = loop_output->crtc; ++ RADEONCrtcPrivatePtr other_radeon_crtc = other_crtc->driver_private; + if (other_crtc->enabled) { +- radeon_dpms(loop_output, DPMSModeOn); + radeon_crtc_dpms(other_crtc, DPMSModeOn); ++ if (IS_AVIVO_VARIANT) ++ atombios_lock_crtc(info->atomBIOS, other_radeon_crtc->crtc_id, 0); ++ radeon_dpms(loop_output, DPMSModeOn); + } + } + } +@@ -1201,8 +1146,7 @@ radeon_create_resources(xf86OutputPtr output) + } + } + +- if (IS_DCE3_VARIANT && +- (OUTPUT_IS_DVI || (radeon_output->type == OUTPUT_HDMI))) { ++ if (OUTPUT_IS_DVI || (radeon_output->type == OUTPUT_HDMI)) { + coherent_mode_atom = MAKE_ATOM("coherent_mode"); + + range[0] = 0; /* off */ +@@ -1214,7 +1158,7 @@ radeon_create_resources(xf86OutputPtr output) + "RRConfigureOutputProperty error, %d\n", err); + } + +- data = 1; /* use coherent mode by default */ ++ data = 0; /* coherent mode off by default */ + + err = RRChangeOutputProperty(output->randr_output, coherent_mode_atom, + XA_INTEGER, 32, PropModeReplace, 1, &data, +@@ -1682,8 +1626,8 @@ Bool AVIVOI2CReset(ScrnInfoPtr pScrn) + } + #endif + +-static +-Bool AVIVOI2CDoLock(xf86OutputPtr output, int lock_state) ++Bool ++RADEONI2CDoLock(xf86OutputPtr output, int lock_state) + { + ScrnInfoPtr pScrn = output->scrn; + RADEONInfoPtr info = RADEONPTR(pScrn); +@@ -1692,19 +1636,29 @@ Bool AVIVOI2CDoLock(xf86OutputPtr output, int lock_state) + unsigned char *RADEONMMIO = info->MMIO; + uint32_t temp; + ++ if (lock_state) { ++ temp = INREG(pRADEONI2CBus->a_clk_reg); ++ temp &= ~(pRADEONI2CBus->a_clk_mask); ++ OUTREG(pRADEONI2CBus->a_clk_reg, temp); ++ ++ temp = INREG(pRADEONI2CBus->a_data_reg); ++ temp &= ~(pRADEONI2CBus->a_data_mask); ++ OUTREG(pRADEONI2CBus->a_data_reg, temp); ++ } ++ + temp = INREG(pRADEONI2CBus->mask_clk_reg); +- if (lock_state == AVIVO_I2C_ENABLE) +- temp |= (pRADEONI2CBus->put_clk_mask); ++ if (lock_state) ++ temp |= (pRADEONI2CBus->mask_clk_mask); + else +- temp &= ~(pRADEONI2CBus->put_clk_mask); ++ temp &= ~(pRADEONI2CBus->mask_clk_mask); + OUTREG(pRADEONI2CBus->mask_clk_reg, temp); + temp = INREG(pRADEONI2CBus->mask_clk_reg); + + temp = INREG(pRADEONI2CBus->mask_data_reg); +- if (lock_state == AVIVO_I2C_ENABLE) +- temp |= (pRADEONI2CBus->put_data_mask); ++ if (lock_state) ++ temp |= (pRADEONI2CBus->mask_data_mask); + else +- temp &= ~(pRADEONI2CBus->put_data_mask); ++ temp &= ~(pRADEONI2CBus->mask_data_mask); + OUTREG(pRADEONI2CBus->mask_data_reg, temp); + temp = INREG(pRADEONI2CBus->mask_data_reg); + +@@ -1786,8 +1740,12 @@ legacy_setup_i2c_bus(int ddc_line) + { + RADEONI2CBusRec i2c; + +- i2c.mask_clk_mask = RADEON_GPIO_EN_1 | RADEON_GPIO_Y_1; +- i2c.mask_data_mask = RADEON_GPIO_EN_0 | RADEON_GPIO_Y_0; ++ i2c.hw_line = 0; ++ i2c.hw_capable = FALSE; ++ i2c.mask_clk_mask = RADEON_GPIO_EN_1; ++ i2c.mask_data_mask = RADEON_GPIO_EN_0; ++ i2c.a_clk_mask = RADEON_GPIO_A_1; ++ i2c.a_data_mask = RADEON_GPIO_A_0; + i2c.put_clk_mask = RADEON_GPIO_EN_1; + i2c.put_data_mask = RADEON_GPIO_EN_0; + i2c.get_clk_mask = RADEON_GPIO_Y_1; +@@ -1796,6 +1754,8 @@ legacy_setup_i2c_bus(int ddc_line) + (ddc_line == RADEON_MDGPIO_EN_REG)) { + i2c.mask_clk_reg = ddc_line; + i2c.mask_data_reg = ddc_line; ++ i2c.a_clk_reg = ddc_line; ++ i2c.a_data_reg = ddc_line; + i2c.put_clk_reg = ddc_line; + i2c.put_data_reg = ddc_line; + i2c.get_clk_reg = ddc_line + 4; +@@ -1803,6 +1763,8 @@ legacy_setup_i2c_bus(int ddc_line) + } else { + i2c.mask_clk_reg = ddc_line; + i2c.mask_data_reg = ddc_line; ++ i2c.a_clk_reg = ddc_line; ++ i2c.a_data_reg = ddc_line; + i2c.put_clk_reg = ddc_line; + i2c.put_data_reg = ddc_line; + i2c.get_clk_reg = ddc_line; +@@ -1822,6 +1784,8 @@ atom_setup_i2c_bus(int ddc_line) + { + RADEONI2CBusRec i2c; + ++ i2c.hw_line = 0; ++ i2c.hw_capable = FALSE; + if (ddc_line == AVIVO_GPIO_0) { + i2c.put_clk_mask = (1 << 19); + i2c.put_data_mask = (1 << 18); +@@ -1829,6 +1793,8 @@ atom_setup_i2c_bus(int ddc_line) + i2c.get_data_mask = (1 << 18); + i2c.mask_clk_mask = (1 << 19); + i2c.mask_data_mask = (1 << 18); ++ i2c.a_clk_mask = (1 << 19); ++ i2c.a_data_mask = (1 << 18); + } else { + i2c.put_clk_mask = (1 << 0); + i2c.put_data_mask = (1 << 8); +@@ -1836,9 +1802,13 @@ atom_setup_i2c_bus(int ddc_line) + i2c.get_data_mask = (1 << 8); + i2c.mask_clk_mask = (1 << 0); + i2c.mask_data_mask = (1 << 8); ++ i2c.a_clk_mask = (1 << 0); ++ i2c.a_data_mask = (1 << 8); + } + i2c.mask_clk_reg = ddc_line; + i2c.mask_data_reg = ddc_line; ++ i2c.a_clk_reg = ddc_line + 0x4; ++ i2c.a_data_reg = ddc_line + 0x4; + i2c.put_clk_reg = ddc_line + 0x8; + i2c.put_data_reg = ddc_line + 0x8; + i2c.get_clk_reg = ddc_line + 0xc; +@@ -2301,13 +2271,13 @@ static Bool RADEONSetupAppleConnectors(ScrnInfoPtr pScrn) + info->BiosConnector[0].ddc_i2c = legacy_setup_i2c_bus(RADEON_GPIO_DVI_DDC); + info->BiosConnector[0].DACType = DAC_NONE; + info->BiosConnector[0].TMDSType = TMDS_NONE; +- info->BiosConnector[0].ConnectorType = CONNECTOR_VGA; ++ info->BiosConnector[0].ConnectorType = CONNECTOR_LVDS; + info->BiosConnector[0].valid = TRUE; + + info->BiosConnector[1].ddc_i2c = legacy_setup_i2c_bus(RADEON_GPIO_VGA_DDC); + info->BiosConnector[1].DACType = DAC_PRIMARY; +- info->BiosConnector[1].TMDSType = TMDS_INT; +- info->BiosConnector[1].ConnectorType = CONNECTOR_DVI_I; ++ info->BiosConnector[1].TMDSType = TMDS_NONE; ++ info->BiosConnector[1].ConnectorType = CONNECTOR_VGA; + info->BiosConnector[1].valid = TRUE; + + info->BiosConnector[2].ConnectorType = CONNECTOR_STV; +@@ -2677,7 +2647,6 @@ Bool RADEONSetupConnectors(ScrnInfoPtr pScrn) + { + xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(pScrn); + RADEONInfoPtr info = RADEONPTR(pScrn); +- RADEONEntPtr pRADEONEnt = RADEONEntPriv(pScrn); + xf86OutputPtr output; + char *optstr; + int i = 0; +@@ -2742,13 +2711,6 @@ Bool RADEONSetupConnectors(ScrnInfoPtr pScrn) + RADEONSetupGenericConnectors(pScrn); + } + +- if (!pRADEONEnt->HasCRTC2) { +- for (i = 0; i < RADEON_MAX_BIOS_CONNECTOR; i++) { +- if (info->BiosConnector[i].ConnectorType == CONNECTOR_VGA) +- info->BiosConnector[i].DACType = DAC_PRIMARY; +- } +- } +- + /* parse connector table option */ + optstr = (char *)xf86GetOptValString(info->Options, OPTION_CONNECTORTABLE); + +diff --git a/src/radeon_pci_chipset_gen.h b/src/radeon_pci_chipset_gen.h +index 39adb5e..ff1801f 100644 +--- a/src/radeon_pci_chipset_gen.h ++++ b/src/radeon_pci_chipset_gen.h +@@ -1,6 +1,7 @@ + /* This file is autogenerated please do not edit */ + PciChipsets RADEONPciChipsets[] = { + { PCI_CHIP_RV380_3150, PCI_CHIP_RV380_3150, RES_SHARED_VGA }, ++ { PCI_CHIP_RV380_3151, PCI_CHIP_RV380_3151, RES_SHARED_VGA }, + { PCI_CHIP_RV380_3152, PCI_CHIP_RV380_3152, RES_SHARED_VGA }, + { PCI_CHIP_RV380_3154, PCI_CHIP_RV380_3154, RES_SHARED_VGA }, + { PCI_CHIP_RV380_3E50, PCI_CHIP_RV380_3E50, RES_SHARED_VGA }, +@@ -250,6 +251,9 @@ PciChipsets RADEONPciChipsets[] = { + { PCI_CHIP_R600_940A, PCI_CHIP_R600_940A, RES_SHARED_VGA }, + { PCI_CHIP_R600_940B, PCI_CHIP_R600_940B, RES_SHARED_VGA }, + { PCI_CHIP_R600_940F, PCI_CHIP_R600_940F, RES_SHARED_VGA }, ++ { PCI_CHIP_RV770_9440, PCI_CHIP_RV770_9440, RES_SHARED_VGA }, ++ { PCI_CHIP_RV770_9441, PCI_CHIP_RV770_9441, RES_SHARED_VGA }, ++ { PCI_CHIP_RV770_9442, PCI_CHIP_RV770_9442, RES_SHARED_VGA }, + { PCI_CHIP_RV610_94C0, PCI_CHIP_RV610_94C0, RES_SHARED_VGA }, + { PCI_CHIP_RV610_94C1, PCI_CHIP_RV610_94C1, RES_SHARED_VGA }, + { PCI_CHIP_RV610_94C3, PCI_CHIP_RV610_94C3, RES_SHARED_VGA }, +@@ -267,6 +271,7 @@ PciChipsets RADEONPciChipsets[] = { + { PCI_CHIP_RV670_9507, PCI_CHIP_RV670_9507, RES_SHARED_VGA }, + { PCI_CHIP_RV670_950F, PCI_CHIP_RV670_950F, RES_SHARED_VGA }, + { PCI_CHIP_RV670_9511, PCI_CHIP_RV670_9511, RES_SHARED_VGA }, ++ { PCI_CHIP_RV670_9515, PCI_CHIP_RV670_9515, RES_SHARED_VGA }, + { PCI_CHIP_RV630_9580, PCI_CHIP_RV630_9580, RES_SHARED_VGA }, + { PCI_CHIP_RV630_9581, PCI_CHIP_RV630_9581, RES_SHARED_VGA }, + { PCI_CHIP_RV630_9583, PCI_CHIP_RV630_9583, RES_SHARED_VGA }, +diff --git a/src/radeon_pci_device_match_gen.h b/src/radeon_pci_device_match_gen.h +index d81cbe3..d650f9f 100644 +--- a/src/radeon_pci_device_match_gen.h ++++ b/src/radeon_pci_device_match_gen.h +@@ -1,6 +1,7 @@ + /* This file is autogenerated please do not edit */ + static const struct pci_id_match radeon_device_match[] = { + ATI_DEVICE_MATCH( PCI_CHIP_RV380_3150, 0 ), ++ ATI_DEVICE_MATCH( PCI_CHIP_RV380_3151, 0 ), + ATI_DEVICE_MATCH( PCI_CHIP_RV380_3152, 0 ), + ATI_DEVICE_MATCH( PCI_CHIP_RV380_3154, 0 ), + ATI_DEVICE_MATCH( PCI_CHIP_RV380_3E50, 0 ), +@@ -250,6 +251,9 @@ static const struct pci_id_match radeon_device_match[] = { + ATI_DEVICE_MATCH( PCI_CHIP_R600_940A, 0 ), + ATI_DEVICE_MATCH( PCI_CHIP_R600_940B, 0 ), + ATI_DEVICE_MATCH( PCI_CHIP_R600_940F, 0 ), ++ ATI_DEVICE_MATCH( PCI_CHIP_RV770_9440, 0 ), ++ ATI_DEVICE_MATCH( PCI_CHIP_RV770_9441, 0 ), ++ ATI_DEVICE_MATCH( PCI_CHIP_RV770_9442, 0 ), + ATI_DEVICE_MATCH( PCI_CHIP_RV610_94C0, 0 ), + ATI_DEVICE_MATCH( PCI_CHIP_RV610_94C1, 0 ), + ATI_DEVICE_MATCH( PCI_CHIP_RV610_94C3, 0 ), +@@ -267,6 +271,7 @@ static const struct pci_id_match radeon_device_match[] = { + ATI_DEVICE_MATCH( PCI_CHIP_RV670_9507, 0 ), + ATI_DEVICE_MATCH( PCI_CHIP_RV670_950F, 0 ), + ATI_DEVICE_MATCH( PCI_CHIP_RV670_9511, 0 ), ++ ATI_DEVICE_MATCH( PCI_CHIP_RV670_9515, 0 ), + ATI_DEVICE_MATCH( PCI_CHIP_RV630_9580, 0 ), + ATI_DEVICE_MATCH( PCI_CHIP_RV630_9581, 0 ), + ATI_DEVICE_MATCH( PCI_CHIP_RV630_9583, 0 ), +diff --git a/src/radeon_probe.h b/src/radeon_probe.h +index 24af52b..c14241e 100644 +--- a/src/radeon_probe.h ++++ b/src/radeon_probe.h +@@ -166,6 +166,8 @@ typedef struct + Bool valid; + uint32_t mask_clk_reg; + uint32_t mask_data_reg; ++ uint32_t a_clk_reg; ++ uint32_t a_data_reg; + uint32_t put_clk_reg; + uint32_t put_data_reg; + uint32_t get_clk_reg; +@@ -176,15 +178,15 @@ typedef struct + uint32_t put_data_mask; + uint32_t get_clk_mask; + uint32_t get_data_mask; ++ uint32_t a_clk_mask; ++ uint32_t a_data_mask; ++ int hw_line; ++ Bool hw_capable; + } RADEONI2CBusRec, *RADEONI2CBusPtr; + + typedef struct _RADEONCrtcPrivateRec { +-#ifdef USE_XAA +- FBLinearPtr rotate_mem_xaa; +-#endif +-#ifdef USE_EXA +- ExaOffscreenArea *rotate_mem_exa; +-#endif ++ void *crtc_rotate_mem; ++ void *cursor_mem; + int crtc_id; + int binding; + uint32_t cursor_offset; +@@ -235,8 +237,10 @@ typedef struct _RADEONOutputPrivateRec { + int VSyncWidth; + int VBlank; + int Flags; /* Saved copy of mode flags */ +- int PanelPwrDly; + int DotClock; ++ int PanelPwrDly; ++ int lvds_misc; ++ int lvds_ss_id; + RADEONTMDSPll tmds_pll[4]; + RADEONRMXType rmx_type; + /* dvo */ +@@ -310,8 +314,10 @@ struct avivo_grph_state { + uint32_t x_end; + uint32_t y_end; + ++ uint32_t desktop_height; + uint32_t viewport_start; + uint32_t viewport_size; ++ uint32_t mode_data_format; + }; + + struct avivo_state +@@ -326,6 +332,7 @@ struct avivo_state + + uint32_t crtc_master_en; + uint32_t crtc_tv_control; ++ uint32_t dc_lb_memory_split; + + struct avivo_pll_state pll1; + struct avivo_pll_state pll2; +diff --git a/src/radeon_reg.h b/src/radeon_reg.h +index 59e2f12..19f9869 100644 +--- a/src/radeon_reg.h ++++ b/src/radeon_reg.h +@@ -1032,6 +1032,10 @@ + #define RADEON_OV0_BASE_ADDR 0x43c + #define RADEON_NB_TOM 0x15c + #define R300_MC_INIT_MISC_LAT_TIMER 0x180 ++# define R300_MC_DISP0R_INIT_LAT_SHIFT 8 ++# define R300_MC_DISP0R_INIT_LAT_MASK 0xf ++# define R300_MC_DISP1R_INIT_LAT_SHIFT 12 ++# define R300_MC_DISP1R_INIT_LAT_MASK 0xf + #define RADEON_MCLK_CNTL 0x0012 /* PLL */ + # define RADEON_FORCEON_MCLKA (1 << 16) + # define RADEON_FORCEON_MCLKB (1 << 17) +@@ -3185,6 +3189,7 @@ + #define RADEON_CP_VC_CNTL_PRIM_TYPE_RECT_LIST 0x00000008 + #define RADEON_CP_VC_CNTL_PRIM_TYPE_3VRT_POINT_LIST 0x00000009 + #define RADEON_CP_VC_CNTL_PRIM_TYPE_3VRT_LINE_LIST 0x0000000a ++#define RADEON_CP_VC_CNTL_PRIM_TYPE_QUAD_LIST 0x0000000d + #define RADEON_CP_VC_CNTL_PRIM_WALK_IND 0x00000010 + #define RADEON_CP_VC_CNTL_PRIM_WALK_LIST 0x00000020 + #define RADEON_CP_VC_CNTL_PRIM_WALK_RING 0x00000030 +@@ -3418,6 +3423,7 @@ + #define RS690_MC_AGP_LOCATION 0x101 + #define RS690_MC_AGP_BASE 0x102 + #define RS690_MC_AGP_BASE_2 0x103 ++#define RS690_MC_INIT_MISC_LAT_TIMER 0x104 + #define RS690_MC_STATUS 0x90 + #define RS690_MC_STATUS_IDLE (1 << 0) + +@@ -3431,12 +3437,13 @@ + #define RS600_MC_STATUS 0x0 + #define RS600_MC_STATUS_IDLE (1 << 0) + +-#define AVIVO_MC_INDEX 0x0070 +-#define R520_MC_STATUS 0x00 +-#define R520_MC_STATUS_IDLE (1<<1) +-#define RV515_MC_STATUS 0x08 +-#define RV515_MC_STATUS_IDLE (1<<4) +-#define AVIVO_MC_DATA 0x0074 ++#define AVIVO_MC_INDEX 0x0070 ++#define R520_MC_STATUS 0x00 ++# define R520_MC_STATUS_IDLE (1 << 1) ++#define RV515_MC_STATUS 0x08 ++# define RV515_MC_STATUS_IDLE (1 << 4) ++#define RV515_MC_INIT_MISC_LAT_TIMER 0x09 ++#define AVIVO_MC_DATA 0x0074 + + #define RV515_MC_FB_LOCATION 0x1 + #define RV515_MC_AGP_LOCATION 0x2 +@@ -3598,8 +3605,20 @@ + #define AVIVO_DC_LUTA_WHITE_OFFSET_GREEN 0x64d4 + #define AVIVO_DC_LUTA_WHITE_OFFSET_RED 0x64d8 + +- +-#define AVIVO_D1MODE_DESKTOP_HEIGHT 0x652C ++#define AVIVO_DC_LB_MEMORY_SPLIT 0x6520 ++# define AVIVO_DC_LB_MEMORY_SPLIT_MASK 0x3 ++# define AVIVO_DC_LB_MEMORY_SPLIT_SHIFT 0 ++# define AVIVO_DC_LB_MEMORY_SPLIT_D1HALF_D2HALF 0 ++# define AVIVO_DC_LB_MEMORY_SPLIT_D1_3Q_D2_1Q 1 ++# define AVIVO_DC_LB_MEMORY_SPLIT_D1_ONLY 2 ++# define AVIVO_DC_LB_MEMORY_SPLIT_D1_1Q_D2_3Q 3 ++# define AVIVO_DC_LB_MEMORY_SPLIT_SHIFT_MODE (1 << 2) ++# define AVIVO_DC_LB_DISP1_END_ADR_SHIFT 4 ++# define AVIVO_DC_LB_DISP1_END_ADR_MASK 0x7ff ++ ++#define AVIVO_D1MODE_DATA_FORMAT 0x6528 ++# define AVIVO_D1MODE_INTERLEAVE_EN (1 << 0) ++#define AVIVO_D1MODE_DESKTOP_HEIGHT 0x652c + #define AVIVO_D1MODE_VIEWPORT_START 0x6580 + #define AVIVO_D1MODE_VIEWPORT_SIZE 0x6584 + #define AVIVO_D1MODE_EXT_OVERSCAN_LEFT_RIGHT 0x6588 +@@ -3651,6 +3670,8 @@ + #define AVIVO_D2CUR_SIZE 0x6c10 + #define AVIVO_D2CUR_POSITION 0x6c14 + ++#define AVIVO_D2MODE_DATA_FORMAT 0x6d28 ++#define AVIVO_D2MODE_DESKTOP_HEIGHT 0x6d2c + #define AVIVO_D2MODE_VIEWPORT_START 0x6d80 + #define AVIVO_D2MODE_VIEWPORT_SIZE 0x6d84 + #define AVIVO_D2MODE_EXT_OVERSCAN_LEFT_RIGHT 0x6d88 +@@ -3658,6 +3679,7 @@ + + #define AVIVO_D2SCL_SCALER_ENABLE 0x6d90 + #define AVIVO_D2SCL_SCALER_TAP_CONTROL 0x6d94 ++#define AVIVO_D2SCL_UPDATE 0x6dcc + + #define AVIVO_DDIA_BIT_DEPTH_CONTROL 0x7214 + +@@ -3918,6 +3940,8 @@ + #define R600_MC_VM_SYSTEM_APERTURE_HIGH_ADDR 0x2194 + #define R600_MC_VM_SYSTEM_APERTURE_DEFAULT_ADDR 0x2198 + ++#define R700_MC_VM_FB_LOCATION 0x2024 ++ + #define R600_HDP_NONSURFACE_BASE 0x2c04 + + #define R600_BUS_CNTL 0x5420 +@@ -4234,7 +4258,7 @@ + #define R300_PVS_SRC_ADDR_SEL(x) (x << 29) + #define R300_PVS_SRC_ADDR_MODE_1 (1 << 31) + +-#define R300_VAP_PVS_FLOW_CNTL_OPC 0x22DC ++#define R300_VAP_PVS_FLOW_CNTL_OPC 0x22dc + #define R300_VAP_OUT_VTX_FMT_0 0x2090 + # define R300_VTX_POS_PRESENT (1 << 0) + # define R300_VTX_COLOR_0_PRESENT (1 << 1) +@@ -4322,6 +4346,7 @@ + + #define R300_TX_INVALTAGS 0x4100 + #define R300_TX_FILTER0_0 0x4400 ++#define R300_TX_FILTER0_1 0x4404 + # define R300_TX_CLAMP_S(x) (x << 0) + # define R300_TX_CLAMP_T(x) (x << 3) + # define R300_TX_CLAMP_R(x) (x << 6) +@@ -4339,7 +4364,9 @@ + # define R300_TX_MIN_FILTER_LINEAR (2 << 11) + # define R300_TX_ID_SHIFT 28 + #define R300_TX_FILTER1_0 0x4440 ++#define R300_TX_FILTER1_1 0x4444 + #define R300_TX_FORMAT0_0 0x4480 ++#define R300_TX_FORMAT0_1 0x4484 + # define R300_TXWIDTH_SHIFT 0 + # define R300_TXHEIGHT_SHIFT 11 + # define R300_NUM_LEVELS_SHIFT 26 +@@ -4347,6 +4374,7 @@ + # define R300_TXPROJECTED (1 << 30) + # define R300_TXPITCH_EN (1 << 31) + #define R300_TX_FORMAT1_0 0x44c0 ++#define R300_TX_FORMAT1_1 0x44c4 + # define R300_TX_FORMAT_X8 0x0 + # define R300_TX_FORMAT_X16 0x1 + # define R300_TX_FORMAT_Y4X4 0x2 +@@ -4420,10 +4448,12 @@ + # define R300_TX_FORMAT_SWAP_YUV (1 << 24) + + #define R300_TX_FORMAT2_0 0x4500 ++#define R300_TX_FORMAT2_1 0x4504 + # define R500_TXWIDTH_11 (1 << 15) + # define R500_TXHEIGHT_11 (1 << 16) + + #define R300_TX_OFFSET_0 0x4540 ++#define R300_TX_OFFSET_1 0x4544 + # define R300_ENDIAN_SWAP_16_BIT (1 << 0) + # define R300_ENDIAN_SWAP_32_BIT (2 << 0) + # define R300_ENDIAN_SWAP_HALF_DWORD (3 << 0) +@@ -4500,6 +4530,7 @@ + #define R300_US_TEX_INST_0 0x4620 + #define R300_US_TEX_INST_1 0x4624 + #define R300_US_TEX_INST_2 0x4628 ++#define R300_US_TEX_INST(x) (R300_US_TEX_INST_0 + (x)*4) + # define R300_TEX_SRC_ADDR(x) (x << 0) + # define R300_TEX_DST_ADDR(x) (x << 6) + # define R300_TEX_ID(x) (x << 11) +@@ -4512,11 +4543,13 @@ + #define R300_US_ALU_RGB_ADDR_0 0x46c0 + #define R300_US_ALU_RGB_ADDR_1 0x46c4 + #define R300_US_ALU_RGB_ADDR_2 0x46c8 ++#define R300_US_ALU_RGB_ADDR(x) (R300_US_ALU_RGB_ADDR_0 + (x)*4) + /* for ADDR0-2, values 0-31 specify a location in the pixel stack, + values 32-63 specify a constant */ + # define R300_ALU_RGB_ADDR0(x) (x << 0) + # define R300_ALU_RGB_ADDR1(x) (x << 6) + # define R300_ALU_RGB_ADDR2(x) (x << 12) ++# define R300_ALU_RGB_CONST(x) ((x) | (1 << 5)) + /* ADDRD - where on the pixel stack the result of this instruction + will be written */ + # define R300_ALU_RGB_ADDRD(x) (x << 18) +@@ -4526,6 +4559,7 @@ + # define R300_ALU_RGB_MASK_R 1 + # define R300_ALU_RGB_MASK_G 2 + # define R300_ALU_RGB_MASK_B 4 ++# define R300_ALU_RGB_MASK_RGB 7 + # define R300_ALU_RGB_TARGET_A (0 << 29) + # define R300_ALU_RGB_TARGET_B (1 << 29) + # define R300_ALU_RGB_TARGET_C (2 << 29) +@@ -4533,6 +4567,7 @@ + #define R300_US_ALU_RGB_INST_0 0x48c0 + #define R300_US_ALU_RGB_INST_1 0x48c4 + #define R300_US_ALU_RGB_INST_2 0x48c8 ++#define R300_US_ALU_RGB_INST(x) (R300_US_ALU_RGB_INST_0 + (x)*4) + # define R300_ALU_RGB_SEL_A(x) (x << 0) + # define R300_ALU_RGB_SRC0_RGB 0 + # define R300_ALU_RGB_SRC0_RRR 1 +@@ -4604,11 +4639,13 @@ + #define R300_US_ALU_ALPHA_ADDR_0 0x47c0 + #define R300_US_ALU_ALPHA_ADDR_1 0x47c4 + #define R300_US_ALU_ALPHA_ADDR_2 0x47c8 ++#define R300_US_ALU_ALPHA_ADDR(x) (R300_US_ALU_ALPHA_ADDR_0 + (x)*4) + /* for ADDR0-2, values 0-31 specify a location in the pixel stack, + values 32-63 specify a constant */ + # define R300_ALU_ALPHA_ADDR0(x) (x << 0) + # define R300_ALU_ALPHA_ADDR1(x) (x << 6) + # define R300_ALU_ALPHA_ADDR2(x) (x << 12) ++# define R300_ALU_ALPHA_CONST(x) ((x) | (1 << 5)) + /* ADDRD - where on the pixel stack the result of this instruction + will be written */ + # define R300_ALU_ALPHA_ADDRD(x) (x << 18) +@@ -4624,6 +4661,7 @@ + #define R300_US_ALU_ALPHA_INST_0 0x49c0 + #define R300_US_ALU_ALPHA_INST_1 0x49c4 + #define R300_US_ALU_ALPHA_INST_2 0x49c8 ++#define R300_US_ALU_ALPHA_INST(x) (R300_US_ALU_ALPHA_INST_0 + (x)*4) + # define R300_ALU_ALPHA_SEL_A(x) (x << 0) + # define R300_ALU_ALPHA_SRC0_R 0 + # define R300_ALU_ALPHA_SRC0_G 1 +@@ -4680,6 +4718,15 @@ + # define R300_ALU_ALPHA_OMOD_DIV_8 6 + # define R300_ALU_ALPHA_CLAMP (1 << 30) + ++#define R300_US_ALU_CONST_R_0 0x4c00 ++#define R300_US_ALU_CONST_R(x) (R300_US_ALU_CONST_R_0 + (x)*16) ++#define R300_US_ALU_CONST_G_0 0x4c04 ++#define R300_US_ALU_CONST_G(x) (R300_US_ALU_CONST_G_0 + (x)*16) ++#define R300_US_ALU_CONST_B_0 0x4c08 ++#define R300_US_ALU_CONST_B(x) (R300_US_ALU_CONST_B_0 + (x)*16) ++#define R300_US_ALU_CONST_A_0 0x4c0c ++#define R300_US_ALU_CONST_A(x) (R300_US_ALU_CONST_A_0 + (x)*16) ++ + #define R300_FG_DEPTH_SRC 0x4bd8 + #define R300_FG_FOG_BLEND 0x4bc0 + #define R300_FG_ALPHA_FUNC 0x4bd4 +@@ -4759,10 +4806,11 @@ + + /* R500 US has to be loaded through an index/data pair */ + #define R500_GA_US_VECTOR_INDEX 0x4250 +-# define R500_US_VECTOR_INDEX(x) (x << 0) + # define R500_US_VECTOR_TYPE_INST (0 << 16) + # define R500_US_VECTOR_TYPE_CONST (1 << 16) + # define R500_US_VECTOR_CLAMP (1 << 17) ++# define R500_US_VECTOR_INST_INDEX(x) ((x) | R500_US_VECTOR_TYPE_INST) ++# define R500_US_VECTOR_CONST_INDEX(x) ((x) | R500_US_VECTOR_TYPE_CONST) + #define R500_GA_US_VECTOR_DATA 0x4254 + + /* +diff --git a/src/radeon_render.c b/src/radeon_render.c +index dbd5b79..6668fe0 100644 +--- a/src/radeon_render.c ++++ b/src/radeon_render.c +@@ -268,7 +268,7 @@ RemoveLinear (FBLinearPtr linear) + { + RADEONInfoPtr info = (RADEONInfoPtr)(linear->devPrivate.ptr); + +- info->RenderTex = NULL; ++ info->accel_state->RenderTex = NULL; + } + + static void +@@ -276,13 +276,14 @@ RenderCallback (ScrnInfoPtr pScrn) + { + RADEONInfoPtr info = RADEONPTR(pScrn); + +- if ((currentTime.milliseconds > info->RenderTimeout) && info->RenderTex) { +- xf86FreeOffscreenLinear(info->RenderTex); +- info->RenderTex = NULL; ++ if ((currentTime.milliseconds > info->accel_state->RenderTimeout) && ++ info->accel_state->RenderTex) { ++ xf86FreeOffscreenLinear(info->accel_state->RenderTex); ++ info->accel_state->RenderTex = NULL; + } + +- if (!info->RenderTex) +- info->RenderCallback = NULL; ++ if (!info->accel_state->RenderTex) ++ info->accel_state->RenderCallback = NULL; + } + + static Bool +@@ -293,30 +294,30 @@ AllocateLinear ( + RADEONInfoPtr info = RADEONPTR(pScrn); + int cpp = info->CurrentLayout.bitsPerPixel / 8; + +- info->RenderTimeout = currentTime.milliseconds + 30000; +- info->RenderCallback = RenderCallback; ++ info->accel_state->RenderTimeout = currentTime.milliseconds + 30000; ++ info->accel_state->RenderCallback = RenderCallback; + + /* XAA allocates in units of pixels at the screen bpp, so adjust size + * appropriately. + */ + sizeNeeded = (sizeNeeded + cpp - 1) / cpp; + +- if (info->RenderTex) { +- if (info->RenderTex->size >= sizeNeeded) ++ if (info->accel_state->RenderTex) { ++ if (info->accel_state->RenderTex->size >= sizeNeeded) + return TRUE; + else { +- if (xf86ResizeOffscreenLinear(info->RenderTex, sizeNeeded)) ++ if (xf86ResizeOffscreenLinear(info->accel_state->RenderTex, sizeNeeded)) + return TRUE; + +- xf86FreeOffscreenLinear(info->RenderTex); +- info->RenderTex = NULL; ++ xf86FreeOffscreenLinear(info->accel_state->RenderTex); ++ info->accel_state->RenderTex = NULL; + } + } + +- info->RenderTex = xf86AllocateOffscreenLinear(pScrn->pScreen, sizeNeeded, 32, +- NULL, RemoveLinear, info); ++ info->accel_state->RenderTex = xf86AllocateOffscreenLinear(pScrn->pScreen, sizeNeeded, 32, ++ NULL, RemoveLinear, info); + +- return (info->RenderTex != NULL); ++ return (info->accel_state->RenderTex != NULL); + } + + #if X_BYTE_ORDER == X_BIG_ENDIAN +@@ -435,7 +436,7 @@ static Bool FUNC_NAME(R100SetupTexture)( + txformat |= RADEON_TXFORMAT_NON_POWER2; + } + +- offset = info->RenderTex->offset * pScrn->bitsPerPixel / 8; ++ offset = info->accel_state->RenderTex->offset * pScrn->bitsPerPixel / 8; + dst = (uint8_t*)(info->FB + offset); + + /* Upload texture to card. */ +@@ -459,8 +460,8 @@ static Bool FUNC_NAME(R100SetupTexture)( + + #else + +- if (info->accel->NeedToSync) +- info->accel->Sync(pScrn); ++ if (info->accel_state->accel->NeedToSync) ++ info->accel_state->accel->Sync(pScrn); + + while (height--) { + memcpy(dst, src, width * tex_bytepp); +@@ -514,7 +515,7 @@ FUNC_NAME(R100SetupForCPUToScreenAlphaTexture) ( + if (blend_cntl == 0) + return FALSE; + +- if (!info->XInited3D) ++ if (!info->accel_state->XInited3D) + RADEONInit3DEngine(pScrn); + + if (!FUNC_NAME(R100SetupTexture)(pScrn, maskFormat, alphaPtr, alphaPitch, +@@ -565,7 +566,7 @@ FUNC_NAME(R100SetupForCPUToScreenTexture) ( + if (blend_cntl == 0) + return FALSE; + +- if (!info->XInited3D) ++ if (!info->accel_state->XInited3D) + RADEONInit3DEngine(pScrn); + + if (!FUNC_NAME(R100SetupTexture)(pScrn, srcFormat, texPtr, texPitch, width, +@@ -772,10 +773,10 @@ static Bool FUNC_NAME(R200SetupTexture)( + txformat |= RADEON_TXFORMAT_NON_POWER2; + } + +- info->texW[0] = width; +- info->texH[0] = height; ++ info->accel_state->texW[0] = width; ++ info->accel_state->texH[0] = height; + +- offset = info->RenderTex->offset * pScrn->bitsPerPixel / 8; ++ offset = info->accel_state->RenderTex->offset * pScrn->bitsPerPixel / 8; + dst = (uint8_t*)(info->FB + offset); + + /* Upload texture to card. */ +@@ -799,8 +800,8 @@ static Bool FUNC_NAME(R200SetupTexture)( + + #else + +- if (info->accel->NeedToSync) +- info->accel->Sync(pScrn); ++ if (info->accel_state->accel->NeedToSync) ++ info->accel_state->accel->Sync(pScrn); + + while (height--) { + memcpy(dst, src, width * tex_bytepp); +@@ -855,7 +856,7 @@ FUNC_NAME(R200SetupForCPUToScreenAlphaTexture) ( + if (blend_cntl == 0) + return FALSE; + +- if (!info->XInited3D) ++ if (!info->accel_state->XInited3D) + RADEONInit3DEngine(pScrn); + + if (!FUNC_NAME(R200SetupTexture)(pScrn, maskFormat, alphaPtr, alphaPitch, +@@ -907,7 +908,7 @@ FUNC_NAME(R200SetupForCPUToScreenTexture) ( + if (blend_cntl == 0) + return FALSE; + +- if (!info->XInited3D) ++ if (!info->accel_state->XInited3D) + RADEONInit3DEngine(pScrn); + + if (!FUNC_NAME(R200SetupTexture)(pScrn, srcFormat, texPtr, texPitch, width, +@@ -974,10 +975,10 @@ FUNC_NAME(R200SubsequentCPUToScreenTexture) ( + + r = width + l; + b = height + t; +- fl = (float)srcx / info->texW[0]; +- fr = (float)(srcx + width) / info->texW[0]; +- ft = (float)srcy / info->texH[0]; +- fb = (float)(srcy + height) / info->texH[0]; ++ fl = (float)srcx / info->accel_state->texW[0]; ++ fr = (float)(srcx + width) / info->accel_state->texW[0]; ++ ft = (float)srcy / info->accel_state->texH[0]; ++ fb = (float)(srcy + height) / info->accel_state->texH[0]; + + #ifdef ACCEL_CP + BEGIN_RING(24); +diff --git a/src/radeon_sarea.h b/src/radeon_sarea.h +deleted file mode 100644 +index 80333a4..0000000 +--- a/src/radeon_sarea.h ++++ /dev/null +@@ -1,231 +0,0 @@ +-/* +- * Copyright 2000 ATI Technologies Inc., Markham, Ontario, +- * VA Linux Systems Inc., Fremont, California. +- * +- * All Rights Reserved. +- * +- * Permission is hereby granted, free of charge, to any person obtaining +- * a copy of this software and associated documentation files (the +- * "Software"), to deal in the Software without restriction, including +- * without limitation on the rights to use, copy, modify, merge, +- * publish, distribute, sublicense, and/or sell copies of the Software, +- * and to permit persons to whom the Software is furnished to do so, +- * subject to the following conditions: +- * +- * The above copyright notice and this permission notice (including the +- * next paragraph) shall be included in all copies or substantial +- * portions of the Software. +- * +- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +- * NON-INFRINGEMENT. IN NO EVENT SHALL ATI, VA LINUX SYSTEMS AND/OR +- * THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +- * DEALINGS IN THE SOFTWARE. +- */ +- +-/* +- * Authors: +- * Kevin E. Martin <martin@xfree86.org> +- * Gareth Hughes <gareth@valinux.com> +- * +- */ +- +-#ifndef _RADEON_SAREA_H_ +-#define _RADEON_SAREA_H_ +- +-/* WARNING: If you change any of these defines, make sure to change the +- * defines in the kernel file (radeon_drm.h) +- */ +-#ifndef __RADEON_SAREA_DEFINES__ +-#define __RADEON_SAREA_DEFINES__ +- +-/* What needs to be changed for the current vertex buffer? */ +-#define RADEON_UPLOAD_CONTEXT 0x00000001 +-#define RADEON_UPLOAD_VERTFMT 0x00000002 +-#define RADEON_UPLOAD_LINE 0x00000004 +-#define RADEON_UPLOAD_BUMPMAP 0x00000008 +-#define RADEON_UPLOAD_MASKS 0x00000010 +-#define RADEON_UPLOAD_VIEWPORT 0x00000020 +-#define RADEON_UPLOAD_SETUP 0x00000040 +-#define RADEON_UPLOAD_TCL 0x00000080 +-#define RADEON_UPLOAD_MISC 0x00000100 +-#define RADEON_UPLOAD_TEX0 0x00000200 +-#define RADEON_UPLOAD_TEX1 0x00000400 +-#define RADEON_UPLOAD_TEX2 0x00000800 +-#define RADEON_UPLOAD_TEX0IMAGES 0x00001000 +-#define RADEON_UPLOAD_TEX1IMAGES 0x00002000 +-#define RADEON_UPLOAD_TEX2IMAGES 0x00004000 +-#define RADEON_UPLOAD_CLIPRECTS 0x00008000 /* handled client-side */ +-#define RADEON_REQUIRE_QUIESCENCE 0x00010000 +-#define RADEON_UPLOAD_ZBIAS 0x00020000 +-#define RADEON_UPLOAD_ALL 0x0002ffff +-#define RADEON_UPLOAD_CONTEXT_ALL 0x000201ff +- +-#define RADEON_FRONT 0x1 +-#define RADEON_BACK 0x2 +-#define RADEON_DEPTH 0x4 +-#define RADEON_STENCIL 0x8 +- +-/* Primitive types */ +-#define RADEON_POINTS 0x1 +-#define RADEON_LINES 0x2 +-#define RADEON_LINE_STRIP 0x3 +-#define RADEON_TRIANGLES 0x4 +-#define RADEON_TRIANGLE_FAN 0x5 +-#define RADEON_TRIANGLE_STRIP 0x6 +-#define RADEON_3VTX_POINTS 0x9 +-#define RADEON_3VTX_LINES 0xa +- +-/* Vertex/indirect buffer size */ +-#define RADEON_BUFFER_SIZE 65536 +- +-/* Byte offsets for indirect buffer data */ +-#define RADEON_INDEX_PRIM_OFFSET 20 +-#define RADEON_HOSTDATA_BLIT_OFFSET 32 +- +-#define RADEON_SCRATCH_REG_OFFSET 32 +- +-/* Keep these small for testing */ +-#define RADEON_NR_SAREA_CLIPRECTS 12 +- +-/* There are 2 heaps (local/GART). Each region within a heap is a +- * minimum of 64k, and there are at most 64 of them per heap. +- */ +-#define RADEON_CARD_HEAP 0 +-#define RADEON_GART_HEAP 1 +-#define RADEON_NR_TEX_HEAPS 2 +-#define RADEON_NR_TEX_REGIONS 64 +-#define RADEON_LOG_TEX_GRANULARITY 16 +- +-#define RADEON_MAX_TEXTURE_LEVELS 12 +-#define RADEON_MAX_TEXTURE_UNITS 3 +- +-/* Blits have strict offset rules. All blit offset must be aligned on +- * a 1K-byte boundary. +- */ +-#define RADEON_OFFSET_SHIFT 10 +-#define RADEON_OFFSET_ALIGN (1 << RADEON_OFFSET_SHIFT) +-#define RADEON_OFFSET_MASK (RADEON_OFFSET_ALIGN - 1) +- +-#endif /* __RADEON_SAREA_DEFINES__ */ +- +-typedef struct { +- unsigned int red; +- unsigned int green; +- unsigned int blue; +- unsigned int alpha; +-} radeon_color_regs_t; +- +-typedef struct { +- /* Context state */ +- unsigned int pp_misc; +- unsigned int pp_fog_color; +- unsigned int re_solid_color; +- unsigned int rb3d_blendcntl; +- unsigned int rb3d_depthoffset; +- unsigned int rb3d_depthpitch; +- unsigned int rb3d_zstencilcntl; +- +- unsigned int pp_cntl; +- unsigned int rb3d_cntl; +- unsigned int rb3d_coloroffset; +- unsigned int re_width_height; +- unsigned int rb3d_colorpitch; +- unsigned int se_cntl; +- +- /* Vertex format state */ +- unsigned int se_coord_fmt; +- +- /* Line state */ +- unsigned int re_line_pattern; +- unsigned int re_line_state; +- +- unsigned int se_line_width; +- +- /* Bumpmap state */ +- unsigned int pp_lum_matrix; +- +- unsigned int pp_rot_matrix_0; +- unsigned int pp_rot_matrix_1; +- +- /* Mask state */ +- unsigned int rb3d_stencilrefmask; +- unsigned int rb3d_ropcntl; +- unsigned int rb3d_planemask; +- +- /* Viewport state */ +- unsigned int se_vport_xscale; +- unsigned int se_vport_xoffset; +- unsigned int se_vport_yscale; +- unsigned int se_vport_yoffset; +- unsigned int se_vport_zscale; +- unsigned int se_vport_zoffset; +- +- /* Setup state */ +- unsigned int se_cntl_status; +- +- /* Misc state */ +- unsigned int re_top_left; +- unsigned int re_misc; +-} radeon_context_regs_t; +- +-/* Setup registers for each texture unit */ +-typedef struct { +- unsigned int pp_txfilter; +- unsigned int pp_txformat; +- unsigned int pp_txoffset; +- unsigned int pp_txcblend; +- unsigned int pp_txablend; +- unsigned int pp_tfactor; +- unsigned int pp_border_color; +-} radeon_texture_regs_t; +- +-typedef struct { +- /* The channel for communication of state information to the kernel +- * on firing a vertex buffer. +- */ +- radeon_context_regs_t ContextState; +- radeon_texture_regs_t TexState[RADEON_MAX_TEXTURE_UNITS]; +- unsigned int dirty; +- unsigned int vertsize; +- unsigned int vc_format; +- +- /* The current cliprects, or a subset thereof */ +- drm_clip_rect_t boxes[RADEON_NR_SAREA_CLIPRECTS]; +- unsigned int nbox; +- +- /* Counters for throttling of rendering clients */ +- unsigned int last_frame; +- unsigned int last_dispatch; +- unsigned int last_clear; +- +- /* Maintain an LRU of contiguous regions of texture space. If you +- * think you own a region of texture memory, and it has an age +- * different to the one you set, then you are mistaken and it has +- * been stolen by another client. If global texAge hasn't changed, +- * there is no need to walk the list. +- * +- * These regions can be used as a proxy for the fine-grained texture +- * information of other clients - by maintaining them in the same +- * lru which is used to age their own textures, clients have an +- * approximate lru for the whole of global texture space, and can +- * make informed decisions as to which areas to kick out. There is +- * no need to choose whether to kick out your own texture or someone +- * else's - simply eject them all in LRU order. +- */ +- /* Last elt is sentinal */ +- drmTextureRegion texList[RADEON_NR_TEX_HEAPS][RADEON_NR_TEX_REGIONS+1]; +- /* last time texture was uploaded */ +- unsigned int texAge[RADEON_NR_TEX_HEAPS]; +- +- int ctxOwner; /* last context to upload state */ +- int pfAllowPageFlip; /* set by the 2d driver, read by the client */ +- int pfCurrentPage; /* set by kernel, read by others */ +- int crtc2_base; /* for pageflipping with CloneMode */ +- int tiling_enabled; /* set by drm, read by 2d + 3d clients */ +- } RADEONSAREAPriv, *RADEONSAREAPrivPtr; +- +-#endif +diff --git a/src/radeon_textured_video.c b/src/radeon_textured_video.c +index cfa349d..c185b46 100644 +--- a/src/radeon_textured_video.c ++++ b/src/radeon_textured_video.c +@@ -81,33 +81,43 @@ static __inline__ uint32_t F_TO_DW(float val) + } + + #define ACCEL_MMIO +-#define VIDEO_PREAMBLE() unsigned char *RADEONMMIO = info->MMIO +-#define BEGIN_VIDEO(n) RADEONWaitForFifo(pScrn, (n)) +-#define OUT_VIDEO_REG(reg, val) OUTREG(reg, val) +-#define OUT_VIDEO_REG_F(reg, val) OUTREG(reg, F_TO_DW(val)) +-#define FINISH_VIDEO() ++#define ACCEL_PREAMBLE() unsigned char *RADEONMMIO = info->MMIO ++#define BEGIN_ACCEL(n) RADEONWaitForFifo(pScrn, (n)) ++#define OUT_ACCEL_REG(reg, val) OUTREG(reg, val) ++#define OUT_ACCEL_REG_F(reg, val) OUTREG(reg, F_TO_DW(val)) ++#define FINISH_ACCEL() + + #include "radeon_textured_videofuncs.c" + + #undef ACCEL_MMIO +-#undef VIDEO_PREAMBLE +-#undef BEGIN_VIDEO +-#undef OUT_VIDEO_REG +-#undef FINISH_VIDEO ++#undef ACCEL_PREAMBLE ++#undef BEGIN_ACCEL ++#undef OUT_ACCEL_REG ++#undef OUT_ACCEL_REG_F ++#undef FINISH_ACCEL + + #ifdef XF86DRI + + #define ACCEL_CP +-#define VIDEO_PREAMBLE() \ ++#define ACCEL_PREAMBLE() \ + RING_LOCALS; \ + RADEONCP_REFRESH(pScrn, info) +-#define BEGIN_VIDEO(n) BEGIN_RING(2*(n)) +-#define OUT_VIDEO_REG(reg, val) OUT_RING_REG(reg, val) +-#define FINISH_VIDEO() ADVANCE_RING() +-#define OUT_VIDEO_RING_F(x) OUT_RING(F_TO_DW(x)) ++#define BEGIN_ACCEL(n) BEGIN_RING(2*(n)) ++#define OUT_ACCEL_REG(reg, val) OUT_RING_REG(reg, val) ++#define OUT_ACCEL_REG_F(reg, val) OUT_ACCEL_REG(reg, F_TO_DW(val)) ++#define FINISH_ACCEL() ADVANCE_RING() ++#define OUT_RING_F(x) OUT_RING(F_TO_DW(x)) + + #include "radeon_textured_videofuncs.c" + ++#undef ACCEL_CP ++#undef ACCEL_PREAMBLE ++#undef BEGIN_ACCEL ++#undef OUT_ACCEL_REG ++#undef OUT_ACCEL_REG_F ++#undef FINISH_ACCEL ++#undef OUT_RING_F ++ + #endif /* XF86DRI */ + + static int +@@ -187,18 +197,30 @@ RADEONPutImageTextured(ScrnInfoPtr pScrn, + dstPitch = (dstPitch + 15) & ~15; + + if (pPriv->video_memory != NULL && size != pPriv->size) { +- RADEONFreeMemory(pScrn, pPriv->video_memory); ++ radeon_legacy_free_memory(pScrn, pPriv->video_memory); + pPriv->video_memory = NULL; + } + + if (pPriv->video_memory == NULL) { +- pPriv->video_offset = RADEONAllocateMemory(pScrn, +- &pPriv->video_memory, +- size * 2); ++ pPriv->video_offset = radeon_legacy_allocate_memory(pScrn, ++ &pPriv->video_memory, ++ size * 2, 64); + if (pPriv->video_offset == 0) + return BadAlloc; + } + ++ /* Bicubic filter loading */ ++ if (!IS_R500_3D) ++ pPriv->bicubic_enabled = FALSE; ++ if (pPriv->bicubic_memory == NULL && pPriv->bicubic_enabled) { ++ pPriv->bicubic_offset = radeon_legacy_allocate_memory(pScrn, ++ &pPriv->bicubic_memory, ++ sizeof(bicubic_tex_512), 64); ++ pPriv->bicubic_src_offset = pPriv->bicubic_offset + info->fbLocation + pScrn->fbOffset; ++ if (pPriv->bicubic_offset == 0) ++ pPriv->bicubic_enabled = FALSE; ++ } ++ + if (pDraw->type == DRAWABLE_WINDOW) + pPriv->pPixmap = (*pScreen->GetWindowPixmap)((WindowPtr)pDraw); + else +@@ -267,6 +289,10 @@ RADEONPutImageTextured(ScrnInfoPtr pScrn, + break; + } + ++ /* Upload bicubic filter tex */ ++ if (pPriv->bicubic_enabled) ++ RADEONCopyData(pScrn, (uint8_t *)bicubic_tex_512, (uint8_t *)(info->FB + pPriv->bicubic_offset), 1024, 1024, 1, 512, 2); ++ + /* update cliplist */ + if (!REGION_EQUAL(pScrn->pScreen, &pPriv->clip, clipBoxes)) { + REGION_COPY(pScrn->pScreen, &pPriv->clip, clipBoxes); +@@ -320,12 +346,16 @@ static XF86VideoFormatRec Formats[NUM_FORMATS] = + {15, TrueColor}, {16, TrueColor}, {24, TrueColor} + }; + +-#define NUM_ATTRIBUTES 0 ++#define NUM_ATTRIBUTES 1 + +-static XF86AttributeRec Attributes[NUM_ATTRIBUTES] = ++static XF86AttributeRec Attributes[NUM_ATTRIBUTES+1] = + { ++ {XvSettable | XvGettable, 0, 1, "XV_BICUBIC"}, ++ {0, 0, 0, NULL} + }; + ++static Atom xvBicubic; ++ + #define NUM_IMAGES 4 + + static XF86ImageRec Images[NUM_IMAGES] = +@@ -336,6 +366,44 @@ static XF86ImageRec Images[NUM_IMAGES] = + XVIMAGE_UYVY + }; + ++int ++RADEONGetTexPortAttribute(ScrnInfoPtr pScrn, ++ Atom attribute, ++ INT32 *value, ++ pointer data) ++{ ++ RADEONInfoPtr info = RADEONPTR(pScrn); ++ RADEONPortPrivPtr pPriv = (RADEONPortPrivPtr)data; ++ ++ if (info->accelOn) RADEON_SYNC(info, pScrn); ++ ++ if (attribute == xvBicubic) ++ *value = pPriv->bicubic_enabled ? 1 : 0; ++ else ++ return BadMatch; ++ ++ return Success; ++} ++ ++int ++RADEONSetTexPortAttribute(ScrnInfoPtr pScrn, ++ Atom attribute, ++ INT32 value, ++ pointer data) ++{ ++ RADEONInfoPtr info = RADEONPTR(pScrn); ++ RADEONPortPrivPtr pPriv = (RADEONPortPrivPtr)data; ++ ++ RADEON_SYNC(info, pScrn); ++ ++ if (attribute == xvBicubic) ++ pPriv->bicubic_enabled = ClipValue (value, 0, 1); ++ else ++ return BadMatch; ++ ++ return Success; ++} ++ + XF86VideoAdaptorPtr + RADEONSetupImageTexturedVideo(ScreenPtr pScreen) + { +@@ -351,6 +419,8 @@ RADEONSetupImageTexturedVideo(ScreenPtr pScreen) + if (adapt == NULL) + return NULL; + ++ xvBicubic = MAKE_ATOM("XV_BICUBIC"); ++ + adapt->type = XvWindowMask | XvInputMask | XvImageMask; + adapt->flags = 0; + adapt->name = "Radeon Textured Video"; +@@ -367,8 +437,13 @@ RADEONSetupImageTexturedVideo(ScreenPtr pScreen) + pPortPriv = + (RADEONPortPrivPtr)(&adapt->pPortPrivates[num_texture_ports]); + +- adapt->nAttributes = NUM_ATTRIBUTES; +- adapt->pAttributes = Attributes; ++ if (IS_R500_3D) { ++ adapt->nAttributes = NUM_ATTRIBUTES; ++ adapt->pAttributes = Attributes; ++ } else { ++ adapt->nAttributes = 0; ++ adapt->pAttributes = NULL; ++ } + adapt->pImages = Images; + adapt->nImages = NUM_IMAGES; + adapt->PutVideo = NULL; +@@ -376,8 +451,8 @@ RADEONSetupImageTexturedVideo(ScreenPtr pScreen) + adapt->GetVideo = NULL; + adapt->GetStill = NULL; + adapt->StopVideo = RADEONStopVideo; +- adapt->SetPortAttribute = RADEONSetPortAttribute; +- adapt->GetPortAttribute = RADEONGetPortAttribute; ++ adapt->SetPortAttribute = RADEONSetTexPortAttribute; ++ adapt->GetPortAttribute = RADEONGetTexPortAttribute; + adapt->QueryBestSize = RADEONQueryBestSize; + adapt->PutImage = RADEONPutImageTextured; + adapt->ReputImage = NULL; +@@ -390,6 +465,7 @@ RADEONSetupImageTexturedVideo(ScreenPtr pScreen) + pPriv->videoStatus = 0; + pPriv->currentBuffer = 0; + pPriv->doubleBuffer = 0; ++ pPriv->bicubic_enabled = (info->ChipFamily >= CHIP_FAMILY_RV515); + + /* gotta uninit this someplace, XXX: shouldn't be necessary for textured */ + REGION_NULL(pScreen, &pPriv->clip); +diff --git a/src/radeon_textured_videofuncs.c b/src/radeon_textured_videofuncs.c +index 277d9b2..c5ad0e1 100644 +--- a/src/radeon_textured_videofuncs.c ++++ b/src/radeon_textured_videofuncs.c +@@ -45,26 +45,47 @@ + #endif + #endif + ++#define VTX_DWORD_COUNT_FILTER 6 + #define VTX_DWORD_COUNT 4 + + #ifdef ACCEL_CP + ++#define VTX_OUT_FILTER(_dstX, _dstY, _srcX, _srcY, _maskX, _maskY) \ ++do { \ ++ OUT_RING_F(_dstX); \ ++ OUT_RING_F(_dstY); \ ++ OUT_RING_F(_srcX); \ ++ OUT_RING_F(_srcY); \ ++ OUT_RING_F(_maskX); \ ++ OUT_RING_F(_maskY); \ ++} while (0) ++ + #define VTX_OUT(_dstX, _dstY, _srcX, _srcY) \ + do { \ +- OUT_VIDEO_RING_F(_dstX); \ +- OUT_VIDEO_RING_F(_dstY); \ +- OUT_VIDEO_RING_F(_srcX); \ +- OUT_VIDEO_RING_F(_srcY); \ ++ OUT_RING_F(_dstX); \ ++ OUT_RING_F(_dstY); \ ++ OUT_RING_F(_srcX); \ ++ OUT_RING_F(_srcY); \ + } while (0) + + #else /* ACCEL_CP */ + ++#define VTX_OUT_FILTER(_dstX, _dstY, _srcX, _srcY, _maskX, _maskY) \ ++do { \ ++ OUT_ACCEL_REG_F(RADEON_SE_PORT_DATA0, _dstX); \ ++ OUT_ACCEL_REG_F(RADEON_SE_PORT_DATA0, _dstY); \ ++ OUT_ACCEL_REG_F(RADEON_SE_PORT_DATA0, _srcX); \ ++ OUT_ACCEL_REG_F(RADEON_SE_PORT_DATA0, _srcY); \ ++ OUT_ACCEL_REG_F(RADEON_SE_PORT_DATA0, _maskX); \ ++ OUT_ACCEL_REG_F(RADEON_SE_PORT_DATA0, _maskY); \ ++} while (0) ++ + #define VTX_OUT(_dstX, _dstY, _srcX, _srcY) \ + do { \ +- OUT_VIDEO_REG_F(RADEON_SE_PORT_DATA0, _dstX); \ +- OUT_VIDEO_REG_F(RADEON_SE_PORT_DATA0, _dstY); \ +- OUT_VIDEO_REG_F(RADEON_SE_PORT_DATA0, _srcX); \ +- OUT_VIDEO_REG_F(RADEON_SE_PORT_DATA0, _srcY); \ ++ OUT_ACCEL_REG_F(RADEON_SE_PORT_DATA0, _dstX); \ ++ OUT_ACCEL_REG_F(RADEON_SE_PORT_DATA0, _dstY); \ ++ OUT_ACCEL_REG_F(RADEON_SE_PORT_DATA0, _srcX); \ ++ OUT_ACCEL_REG_F(RADEON_SE_PORT_DATA0, _srcY); \ + } while (0) + + #endif /* !ACCEL_CP */ +@@ -79,10 +100,10 @@ FUNC_NAME(RADEONDisplayTexturedVideo)(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv + uint32_t dst_offset, dst_pitch, dst_format; + uint32_t txenable, colorpitch; + uint32_t blendcntl; +- int dstxoff, dstyoff, pixel_shift; ++ int dstxoff, dstyoff, pixel_shift, vtx_count; + BoxPtr pBox = REGION_RECTS(&pPriv->clip); + int nBox = REGION_NUM_RECTS(&pPriv->clip); +- VIDEO_PREAMBLE(); ++ ACCEL_PREAMBLE(); + + pixel_shift = pPixmap->drawable.bitsPerPixel >> 4; + +@@ -106,22 +127,27 @@ FUNC_NAME(RADEONDisplayTexturedVideo)(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv + dstyoff = 0; + #endif + +- if (!info->XInited3D) ++ if (!info->accel_state->XInited3D) + RADEONInit3DEngine(pScrn); + + /* we can probably improve this */ +- BEGIN_VIDEO(2); ++ BEGIN_ACCEL(2); + if (IS_R300_3D || IS_R500_3D) +- OUT_VIDEO_REG(R300_RB3D_DSTCACHE_CTLSTAT, R300_DC_FLUSH_3D); ++ OUT_ACCEL_REG(R300_RB3D_DSTCACHE_CTLSTAT, R300_DC_FLUSH_3D); + else +- OUT_VIDEO_REG(RADEON_RB3D_DSTCACHE_CTLSTAT, RADEON_RB3D_DC_FLUSH); ++ OUT_ACCEL_REG(RADEON_RB3D_DSTCACHE_CTLSTAT, RADEON_RB3D_DC_FLUSH); + /* We must wait for 3d to idle, in case source was just written as a dest. */ +- OUT_VIDEO_REG(RADEON_WAIT_UNTIL, ++ OUT_ACCEL_REG(RADEON_WAIT_UNTIL, + RADEON_WAIT_HOST_IDLECLEAN | + RADEON_WAIT_2D_IDLECLEAN | + RADEON_WAIT_3D_IDLECLEAN | + RADEON_WAIT_DMA_GUI_IDLE); +- FINISH_VIDEO(); ++ FINISH_ACCEL(); ++ ++ if (pPriv->bicubic_enabled) ++ vtx_count = VTX_DWORD_COUNT_FILTER; ++ else ++ vtx_count = VTX_DWORD_COUNT; + + if (IS_R300_3D || IS_R500_3D) { + uint32_t output_fmt; +@@ -160,16 +186,17 @@ FUNC_NAME(RADEONDisplayTexturedVideo)(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv + txformat1 |= R300_TX_FORMAT_YUV_TO_RGB_CLAMP; + + txformat0 = ((((pPriv->w - 1) & 0x7ff) << R300_TXWIDTH_SHIFT) | +- (((pPriv->h - 1) & 0x7ff) << R300_TXHEIGHT_SHIFT)); +- +- txformat0 |= R300_TXPITCH_EN; ++ (((pPriv->h - 1) & 0x7ff) << R300_TXHEIGHT_SHIFT) | ++ R300_TXPITCH_EN); + +- info->texW[0] = pPriv->w; +- info->texH[0] = pPriv->h; ++ info->accel_state->texW[0] = pPriv->w; ++ info->accel_state->texH[0] = pPriv->h; + + txfilter = (R300_TX_CLAMP_S(R300_TX_CLAMP_CLAMP_LAST) | + R300_TX_CLAMP_T(R300_TX_CLAMP_CLAMP_LAST) | +- R300_TX_MAG_FILTER_LINEAR | R300_TX_MIN_FILTER_LINEAR); ++ R300_TX_MAG_FILTER_LINEAR | ++ R300_TX_MIN_FILTER_LINEAR | ++ (0 << R300_TX_ID_SHIFT)); + + /* pitch is in pixels */ + txpitch = pPriv->src_pitch / 2; +@@ -183,22 +210,58 @@ FUNC_NAME(RADEONDisplayTexturedVideo)(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv + + txoffset = pPriv->src_offset; + +- BEGIN_VIDEO(6); +- OUT_VIDEO_REG(R300_TX_FILTER0_0, txfilter); +- OUT_VIDEO_REG(R300_TX_FILTER1_0, 0); +- OUT_VIDEO_REG(R300_TX_FORMAT0_0, txformat0); +- OUT_VIDEO_REG(R300_TX_FORMAT1_0, txformat1); +- OUT_VIDEO_REG(R300_TX_FORMAT2_0, txpitch); +- OUT_VIDEO_REG(R300_TX_OFFSET_0, txoffset); +- FINISH_VIDEO(); ++ BEGIN_ACCEL(6); ++ OUT_ACCEL_REG(R300_TX_FILTER0_0, txfilter); ++ OUT_ACCEL_REG(R300_TX_FILTER1_0, 0); ++ OUT_ACCEL_REG(R300_TX_FORMAT0_0, txformat0); ++ OUT_ACCEL_REG(R300_TX_FORMAT1_0, txformat1); ++ OUT_ACCEL_REG(R300_TX_FORMAT2_0, txpitch); ++ OUT_ACCEL_REG(R300_TX_OFFSET_0, txoffset); ++ FINISH_ACCEL(); + + txenable = R300_TEX_0_ENABLE; + ++ if (pPriv->bicubic_enabled) { ++ /* Size is 128x1 */ ++ txformat0 = ((0x7f << R300_TXWIDTH_SHIFT) | ++ (0x0 << R300_TXHEIGHT_SHIFT) | ++ R300_TXPITCH_EN); ++ /* Format is 32-bit floats, 4bpp */ ++ txformat1 = R300_EASY_TX_FORMAT(Z, Y, X, W, FL_R16G16B16A16); ++ /* Pitch is 127 (128-1) */ ++ txpitch = 0x7f; ++ /* Tex filter */ ++ txfilter = (R300_TX_CLAMP_S(R300_TX_CLAMP_WRAP) | ++ R300_TX_CLAMP_T(R300_TX_CLAMP_WRAP) | ++ R300_TX_MIN_FILTER_NEAREST | ++ R300_TX_MAG_FILTER_NEAREST | ++ (1 << R300_TX_ID_SHIFT)); ++ ++ BEGIN_ACCEL(6); ++ OUT_ACCEL_REG(R300_TX_FILTER0_1, txfilter); ++ OUT_ACCEL_REG(R300_TX_FILTER1_1, 0); ++ OUT_ACCEL_REG(R300_TX_FORMAT0_1, txformat0); ++ OUT_ACCEL_REG(R300_TX_FORMAT1_1, txformat1); ++ OUT_ACCEL_REG(R300_TX_FORMAT2_1, txpitch); ++ OUT_ACCEL_REG(R300_TX_OFFSET_1, pPriv->bicubic_src_offset); ++ FINISH_ACCEL(); ++ ++ /* Enable tex 1 */ ++ txenable |= R300_TEX_1_ENABLE; ++ } ++ + /* setup the VAP */ +- if (info->has_tcl) +- BEGIN_VIDEO(6); +- else +- BEGIN_VIDEO(4); ++ if (info->accel_state->has_tcl) { ++ if (pPriv->bicubic_enabled) ++ BEGIN_ACCEL(7); ++ else ++ BEGIN_ACCEL(6); ++ } else { ++ if (pPriv->bicubic_enabled) ++ BEGIN_ACCEL(5); ++ else ++ BEGIN_ACCEL(4); ++ } + + /* These registers define the number, type, and location of data submitted + * to the PVS unit of GA input (when PVS is disabled) +@@ -213,56 +276,90 @@ FUNC_NAME(RADEONDisplayTexturedVideo)(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv + * Textures 0-7 + * Fog + */ +- OUT_VIDEO_REG(R300_VAP_PROG_STREAM_CNTL_0, +- ((R300_DATA_TYPE_FLOAT_2 << R300_DATA_TYPE_0_SHIFT) | +- (0 << R300_SKIP_DWORDS_0_SHIFT) | +- (0 << R300_DST_VEC_LOC_0_SHIFT) | +- R300_SIGNED_0 | +- (R300_DATA_TYPE_FLOAT_2 << R300_DATA_TYPE_1_SHIFT) | +- (0 << R300_SKIP_DWORDS_1_SHIFT) | +- (6 << R300_DST_VEC_LOC_1_SHIFT) | +- R300_LAST_VEC_1 | +- R300_SIGNED_1)); ++ if (pPriv->bicubic_enabled) { ++ OUT_ACCEL_REG(R300_VAP_PROG_STREAM_CNTL_0, ++ ((R300_DATA_TYPE_FLOAT_2 << R300_DATA_TYPE_0_SHIFT) | ++ (0 << R300_SKIP_DWORDS_0_SHIFT) | ++ (0 << R300_DST_VEC_LOC_0_SHIFT) | ++ R300_SIGNED_0 | ++ (R300_DATA_TYPE_FLOAT_2 << R300_DATA_TYPE_1_SHIFT) | ++ (0 << R300_SKIP_DWORDS_1_SHIFT) | ++ (6 << R300_DST_VEC_LOC_1_SHIFT) | ++ R300_SIGNED_1)); ++ OUT_ACCEL_REG(R300_VAP_PROG_STREAM_CNTL_1, ++ ((R300_DATA_TYPE_FLOAT_2 << R300_DATA_TYPE_2_SHIFT) | ++ (0 << R300_SKIP_DWORDS_2_SHIFT) | ++ (7 << R300_DST_VEC_LOC_2_SHIFT) | ++ R300_LAST_VEC_2 | ++ R300_SIGNED_2)); ++ } else { ++ OUT_ACCEL_REG(R300_VAP_PROG_STREAM_CNTL_0, ++ ((R300_DATA_TYPE_FLOAT_2 << R300_DATA_TYPE_0_SHIFT) | ++ (0 << R300_SKIP_DWORDS_0_SHIFT) | ++ (0 << R300_DST_VEC_LOC_0_SHIFT) | ++ R300_SIGNED_0 | ++ (R300_DATA_TYPE_FLOAT_2 << R300_DATA_TYPE_1_SHIFT) | ++ (0 << R300_SKIP_DWORDS_1_SHIFT) | ++ (6 << R300_DST_VEC_LOC_1_SHIFT) | ++ R300_LAST_VEC_1 | ++ R300_SIGNED_1)); ++ } + + /* load the vertex shader + * We pre-load vertex programs in RADEONInit3DEngine(): ++ * - exa mask/Xv bicubic + * - exa no mask +- * - exa mask + * - Xv + * Here we select the offset of the vertex program we want to use + */ +- if (info->has_tcl) { +- OUT_VIDEO_REG(R300_VAP_PVS_CODE_CNTL_0, +- ((5 << R300_PVS_FIRST_INST_SHIFT) | +- (6 << R300_PVS_XYZW_VALID_INST_SHIFT) | +- (6 << R300_PVS_LAST_INST_SHIFT))); +- OUT_VIDEO_REG(R300_VAP_PVS_CODE_CNTL_1, +- (6 << R300_PVS_LAST_VTX_SRC_INST_SHIFT)); ++ if (info->accel_state->has_tcl) { ++ if (pPriv->bicubic_enabled) { ++ OUT_ACCEL_REG(R300_VAP_PVS_CODE_CNTL_0, ++ ((0 << R300_PVS_FIRST_INST_SHIFT) | ++ (2 << R300_PVS_XYZW_VALID_INST_SHIFT) | ++ (2 << R300_PVS_LAST_INST_SHIFT))); ++ OUT_ACCEL_REG(R300_VAP_PVS_CODE_CNTL_1, ++ (2 << R300_PVS_LAST_VTX_SRC_INST_SHIFT)); ++ } else { ++ OUT_ACCEL_REG(R300_VAP_PVS_CODE_CNTL_0, ++ ((5 << R300_PVS_FIRST_INST_SHIFT) | ++ (6 << R300_PVS_XYZW_VALID_INST_SHIFT) | ++ (6 << R300_PVS_LAST_INST_SHIFT))); ++ OUT_ACCEL_REG(R300_VAP_PVS_CODE_CNTL_1, ++ (6 << R300_PVS_LAST_VTX_SRC_INST_SHIFT)); ++ } + } + + /* Position and one set of 2 texture coordinates */ +- OUT_VIDEO_REG(R300_VAP_OUT_VTX_FMT_0, R300_VTX_POS_PRESENT); +- OUT_VIDEO_REG(R300_VAP_OUT_VTX_FMT_1, (2 << R300_TEX_0_COMP_CNT_SHIFT)); +- OUT_VIDEO_REG(R300_US_OUT_FMT_0, output_fmt); +- FINISH_VIDEO(); ++ OUT_ACCEL_REG(R300_VAP_OUT_VTX_FMT_0, R300_VTX_POS_PRESENT); ++ if (pPriv->bicubic_enabled) ++ OUT_ACCEL_REG(R300_VAP_OUT_VTX_FMT_1, ((2 << R300_TEX_0_COMP_CNT_SHIFT) | ++ (2 << R300_TEX_1_COMP_CNT_SHIFT))); ++ else ++ OUT_ACCEL_REG(R300_VAP_OUT_VTX_FMT_1, (2 << R300_TEX_0_COMP_CNT_SHIFT)); ++ ++ OUT_ACCEL_REG(R300_US_OUT_FMT_0, output_fmt); ++ FINISH_ACCEL(); + + /* setup pixel shader */ + if (IS_R300_3D) { +- BEGIN_VIDEO(8); ++ BEGIN_ACCEL(9); + /* 2 components: 2 for tex0 */ +- OUT_VIDEO_REG(R300_RS_COUNT, ++ OUT_ACCEL_REG(R300_RS_COUNT, + ((2 << R300_RS_COUNT_IT_COUNT_SHIFT) | + R300_RS_COUNT_HIRES_EN)); + /* R300_INST_COUNT_RS - highest RS instruction used */ +- OUT_VIDEO_REG(R300_RS_INST_COUNT, R300_INST_COUNT_RS(0) | R300_TX_OFFSET_RS(6)); ++ OUT_ACCEL_REG(R300_RS_INST_COUNT, R300_INST_COUNT_RS(0) | R300_TX_OFFSET_RS(6)); + +- OUT_VIDEO_REG(R300_US_CODE_OFFSET, ++ OUT_ACCEL_REG(R300_US_PIXSIZE, 0); /* highest temp used */ ++ ++ OUT_ACCEL_REG(R300_US_CODE_OFFSET, + (R300_ALU_CODE_OFFSET(0) | + R300_ALU_CODE_SIZE(1) | + R300_TEX_CODE_OFFSET(0) | + R300_TEX_CODE_SIZE(1))); + +- OUT_VIDEO_REG(R300_US_CODE_ADDR_3, ++ OUT_ACCEL_REG(R300_US_CODE_ADDR_3, + (R300_ALU_START(0) | + R300_ALU_SIZE(0) | + R300_TEX_START(0) | +@@ -273,7 +370,7 @@ FUNC_NAME(RADEONDisplayTexturedVideo)(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv + + /* ALU inst */ + /* RGB */ +- OUT_VIDEO_REG(R300_US_ALU_RGB_ADDR_0, ++ OUT_ACCEL_REG(R300_US_ALU_RGB_ADDR_0, + (R300_ALU_RGB_ADDR0(0) | + R300_ALU_RGB_ADDR1(0) | + R300_ALU_RGB_ADDR2(0) | +@@ -282,7 +379,7 @@ FUNC_NAME(RADEONDisplayTexturedVideo)(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv + R300_ALU_RGB_MASK_G | + R300_ALU_RGB_MASK_B)) | + R300_ALU_RGB_TARGET_A)); +- OUT_VIDEO_REG(R300_US_ALU_RGB_INST_0, ++ OUT_ACCEL_REG(R300_US_ALU_RGB_INST_0, + (R300_ALU_RGB_SEL_A(R300_ALU_RGB_SRC0_RGB) | + R300_ALU_RGB_MOD_A(R300_ALU_RGB_MOD_NOP) | + R300_ALU_RGB_SEL_B(R300_ALU_RGB_1_0) | +@@ -293,7 +390,7 @@ FUNC_NAME(RADEONDisplayTexturedVideo)(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv + R300_ALU_RGB_OMOD(R300_ALU_RGB_OMOD_NONE) | + R300_ALU_RGB_CLAMP)); + /* Alpha */ +- OUT_VIDEO_REG(R300_US_ALU_ALPHA_ADDR_0, ++ OUT_ACCEL_REG(R300_US_ALU_ALPHA_ADDR_0, + (R300_ALU_ALPHA_ADDR0(0) | + R300_ALU_ALPHA_ADDR1(0) | + R300_ALU_ALPHA_ADDR2(0) | +@@ -301,7 +398,7 @@ FUNC_NAME(RADEONDisplayTexturedVideo)(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv + R300_ALU_ALPHA_OMASK(R300_ALU_ALPHA_MASK_A) | + R300_ALU_ALPHA_TARGET_A | + R300_ALU_ALPHA_OMASK_W(R300_ALU_ALPHA_MASK_NONE))); +- OUT_VIDEO_REG(R300_US_ALU_ALPHA_INST_0, ++ OUT_ACCEL_REG(R300_US_ALU_ALPHA_INST_0, + (R300_ALU_ALPHA_SEL_A(R300_ALU_ALPHA_SRC0_A) | + R300_ALU_ALPHA_MOD_A(R300_ALU_ALPHA_MOD_NOP) | + R300_ALU_ALPHA_SEL_B(R300_ALU_ALPHA_1_0) | +@@ -311,118 +408,591 @@ FUNC_NAME(RADEONDisplayTexturedVideo)(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv + R300_ALU_ALPHA_OP(R300_ALU_ALPHA_OP_MAD) | + R300_ALU_ALPHA_OMOD(R300_ALU_ALPHA_OMOD_NONE) | + R300_ALU_ALPHA_CLAMP)); +- FINISH_VIDEO(); ++ FINISH_ACCEL(); + } else { +- BEGIN_VIDEO(18); +- /* 2 components: 2 for tex0 */ +- OUT_VIDEO_REG(R300_RS_COUNT, +- ((2 << R300_RS_COUNT_IT_COUNT_SHIFT) | +- R300_RS_COUNT_HIRES_EN)); +- +- /* R300_INST_COUNT_RS - highest RS instruction used */ +- OUT_VIDEO_REG(R300_RS_INST_COUNT, R300_INST_COUNT_RS(0) | R300_TX_OFFSET_RS(6)); +- +- OUT_VIDEO_REG(R500_US_CODE_ADDR, (R500_US_CODE_START_ADDR(0) | +- R500_US_CODE_END_ADDR(1))); +- OUT_VIDEO_REG(R500_US_CODE_RANGE, (R500_US_CODE_RANGE_ADDR(0) | +- R500_US_CODE_RANGE_SIZE(1))); +- OUT_VIDEO_REG(R500_US_CODE_OFFSET, 0); +- OUT_VIDEO_REG(R500_GA_US_VECTOR_INDEX, 0); +- +- /* tex inst */ +- OUT_VIDEO_REG(R500_GA_US_VECTOR_DATA, (R500_INST_TYPE_TEX | +- R500_INST_TEX_SEM_WAIT | +- R500_INST_RGB_WMASK_R | +- R500_INST_RGB_WMASK_G | +- R500_INST_RGB_WMASK_B | +- R500_INST_ALPHA_WMASK | +- R500_INST_RGB_CLAMP | +- R500_INST_ALPHA_CLAMP)); +- +- OUT_VIDEO_REG(R500_GA_US_VECTOR_DATA, (R500_TEX_ID(0) | +- R500_TEX_INST_LD | +- R500_TEX_SEM_ACQUIRE | +- R500_TEX_IGNORE_UNCOVERED)); +- +- OUT_VIDEO_REG(R500_GA_US_VECTOR_DATA, (R500_TEX_SRC_ADDR(0) | +- R500_TEX_SRC_S_SWIZ_R | +- R500_TEX_SRC_T_SWIZ_G | +- R500_TEX_DST_ADDR(0) | +- R500_TEX_DST_R_SWIZ_R | +- R500_TEX_DST_G_SWIZ_G | +- R500_TEX_DST_B_SWIZ_B | +- R500_TEX_DST_A_SWIZ_A)); +- OUT_VIDEO_REG(R500_GA_US_VECTOR_DATA, (R500_DX_ADDR(0) | +- R500_DX_S_SWIZ_R | +- R500_DX_T_SWIZ_R | +- R500_DX_R_SWIZ_R | +- R500_DX_Q_SWIZ_R | +- R500_DY_ADDR(0) | +- R500_DY_S_SWIZ_R | +- R500_DY_T_SWIZ_R | +- R500_DY_R_SWIZ_R | +- R500_DY_Q_SWIZ_R)); +- OUT_VIDEO_REG(R500_GA_US_VECTOR_DATA, 0x00000000); +- OUT_VIDEO_REG(R500_GA_US_VECTOR_DATA, 0x00000000); +- +- /* ALU inst */ +- OUT_VIDEO_REG(R500_GA_US_VECTOR_DATA, (R500_INST_TYPE_OUT | +- R500_INST_TEX_SEM_WAIT | +- R500_INST_LAST | +- R500_INST_RGB_OMASK_R | +- R500_INST_RGB_OMASK_G | +- R500_INST_RGB_OMASK_B | +- R500_INST_ALPHA_OMASK | +- R500_INST_RGB_CLAMP | +- R500_INST_ALPHA_CLAMP)); +- +- OUT_VIDEO_REG(R500_GA_US_VECTOR_DATA, (R500_RGB_ADDR0(0) | +- R500_RGB_ADDR1(0) | +- R500_RGB_ADDR1_CONST | +- R500_RGB_ADDR2(0) | +- R500_RGB_ADDR2_CONST)); +- OUT_VIDEO_REG(R500_GA_US_VECTOR_DATA, (R500_ALPHA_ADDR0(0) | +- R500_ALPHA_ADDR1(0) | +- R500_ALPHA_ADDR1_CONST | +- R500_ALPHA_ADDR2(0) | +- R500_ALPHA_ADDR2_CONST)); +- +- OUT_VIDEO_REG(R500_GA_US_VECTOR_DATA, (R500_ALU_RGB_SEL_A_SRC0 | +- R500_ALU_RGB_R_SWIZ_A_R | +- R500_ALU_RGB_G_SWIZ_A_G | +- R500_ALU_RGB_B_SWIZ_A_B | +- R500_ALU_RGB_SEL_B_SRC0 | +- R500_ALU_RGB_R_SWIZ_B_1 | +- R500_ALU_RGB_B_SWIZ_B_1 | +- R500_ALU_RGB_G_SWIZ_B_1)); +- +- OUT_VIDEO_REG(R500_GA_US_VECTOR_DATA, (R500_ALPHA_OP_MAD | +- R500_ALPHA_SWIZ_A_A | +- R500_ALPHA_SWIZ_B_1)); +- +- OUT_VIDEO_REG(R500_GA_US_VECTOR_DATA, (R500_ALU_RGBA_OP_MAD | +- R500_ALU_RGBA_R_SWIZ_0 | +- R500_ALU_RGBA_G_SWIZ_0 | +- R500_ALU_RGBA_B_SWIZ_0 | +- R500_ALU_RGBA_A_SWIZ_0)); +- FINISH_VIDEO(); ++ if (pPriv->bicubic_enabled) { ++ BEGIN_ACCEL(7); ++ ++ /* 4 components: 2 for tex0 and 2 for tex1 */ ++ OUT_ACCEL_REG(R300_RS_COUNT, ++ ((4 << R300_RS_COUNT_IT_COUNT_SHIFT) | ++ R300_RS_COUNT_HIRES_EN)); ++ ++ /* R300_INST_COUNT_RS - highest RS instruction used */ ++ OUT_ACCEL_REG(R300_RS_INST_COUNT, R300_INST_COUNT_RS(1) | R300_TX_OFFSET_RS(6)); ++ ++ /* Pixel stack frame size. */ ++ OUT_ACCEL_REG(R300_US_PIXSIZE, 5); ++ ++ /* FP length. */ ++ OUT_ACCEL_REG(R500_US_CODE_ADDR, (R500_US_CODE_START_ADDR(0) | ++ R500_US_CODE_END_ADDR(13))); ++ OUT_ACCEL_REG(R500_US_CODE_RANGE, (R500_US_CODE_RANGE_ADDR(0) | ++ R500_US_CODE_RANGE_SIZE(13))); ++ ++ /* Prepare for FP emission. */ ++ OUT_ACCEL_REG(R500_US_CODE_OFFSET, 0); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_INDEX, R500_US_VECTOR_INST_INDEX(0)); ++ FINISH_ACCEL(); ++ ++ BEGIN_ACCEL(89); ++ /* Pixel shader. ++ * I've gone ahead and annotated each instruction, since this ++ * thing is MASSIVE. :3 ++ * Note: In order to avoid buggies with temps and multiple ++ * inputs, all temps are offset by 2. temp0 -> register2. */ ++ ++ /* TEX temp2, input1.xxxx, tex1, 1D */ ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_INST_TYPE_TEX | ++ R500_INST_RGB_WMASK_R | ++ R500_INST_RGB_WMASK_G | ++ R500_INST_RGB_WMASK_B)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_TEX_ID(1) | ++ R500_TEX_INST_LD | ++ R500_TEX_IGNORE_UNCOVERED)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_TEX_SRC_ADDR(1) | ++ R500_TEX_SRC_S_SWIZ_R | ++ R500_TEX_SRC_T_SWIZ_R | ++ R500_TEX_SRC_R_SWIZ_R | ++ R500_TEX_SRC_Q_SWIZ_R | ++ R500_TEX_DST_ADDR(2) | ++ R500_TEX_DST_R_SWIZ_R | ++ R500_TEX_DST_G_SWIZ_G | ++ R500_TEX_DST_B_SWIZ_B | ++ R500_TEX_DST_A_SWIZ_A)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, 0x00000000); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, 0x00000000); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, 0x00000000); ++ ++ /* TEX temp5, input1.yyyy, tex1, 1D */ ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_INST_TYPE_TEX | ++ R500_INST_TEX_SEM_WAIT | ++ R500_INST_RGB_WMASK_R | ++ R500_INST_RGB_WMASK_G | ++ R500_INST_RGB_WMASK_B)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_TEX_ID(1) | ++ R500_TEX_INST_LD | ++ R500_TEX_SEM_ACQUIRE | ++ R500_TEX_IGNORE_UNCOVERED)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_TEX_SRC_ADDR(1) | ++ R500_TEX_SRC_S_SWIZ_G | ++ R500_TEX_SRC_T_SWIZ_G | ++ R500_TEX_SRC_R_SWIZ_G | ++ R500_TEX_SRC_Q_SWIZ_G | ++ R500_TEX_DST_ADDR(5) | ++ R500_TEX_DST_R_SWIZ_R | ++ R500_TEX_DST_G_SWIZ_G | ++ R500_TEX_DST_B_SWIZ_B | ++ R500_TEX_DST_A_SWIZ_A)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, 0x00000000); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, 0x00000000); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, 0x00000000); ++ ++ /* MUL temp4, const0.x0x0, temp2.yyxx */ ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_INST_TYPE_ALU | ++ R500_INST_TEX_SEM_WAIT | ++ R500_INST_RGB_WMASK_R | ++ R500_INST_RGB_WMASK_G | ++ R500_INST_RGB_WMASK_B | ++ R500_INST_ALPHA_WMASK)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_RGB_ADDR0(0) | ++ R500_RGB_ADDR0_CONST | ++ R500_RGB_ADDR1(2))); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALPHA_ADDR0(0) | ++ R500_ALPHA_ADDR0_CONST | ++ R500_ALPHA_ADDR1(2))); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALU_RGB_SEL_A_SRC0 | ++ R500_ALU_RGB_R_SWIZ_A_R | ++ R500_ALU_RGB_G_SWIZ_A_0 | ++ R500_ALU_RGB_B_SWIZ_A_R | ++ R500_ALU_RGB_SEL_B_SRC1 | ++ R500_ALU_RGB_R_SWIZ_B_G | ++ R500_ALU_RGB_G_SWIZ_B_G | ++ R500_ALU_RGB_B_SWIZ_B_R)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALPHA_ADDRD(4) | ++ R500_ALPHA_OP_MAD | ++ R500_ALPHA_SEL_A_SRC0 | ++ R500_ALPHA_SWIZ_A_0 | ++ R500_ALPHA_SEL_B_SRC1 | ++ R500_ALPHA_SWIZ_B_R)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALU_RGBA_ADDRD(4) | ++ R500_ALU_RGBA_OP_MAD | ++ R500_ALU_RGBA_R_SWIZ_0 | ++ R500_ALU_RGBA_G_SWIZ_0 | ++ R500_ALU_RGBA_B_SWIZ_0 | ++ R500_ALU_RGBA_A_SWIZ_0)); ++ ++ /* MAD temp3, const0.0y0y, temp5.xxxx, temp4 */ ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_INST_TYPE_ALU | ++ R500_INST_RGB_WMASK_R | ++ R500_INST_RGB_WMASK_G | ++ R500_INST_RGB_WMASK_B | ++ R500_INST_ALPHA_WMASK)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_RGB_ADDR0(0) | ++ R500_RGB_ADDR0_CONST | ++ R500_RGB_ADDR1(5) | ++ R500_RGB_ADDR2(4))); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALPHA_ADDR0(0) | ++ R500_ALPHA_ADDR0_CONST | ++ R500_ALPHA_ADDR1(5) | ++ R500_ALPHA_ADDR2(4))); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALU_RGB_SEL_A_SRC0 | ++ R500_ALU_RGB_R_SWIZ_A_0 | ++ R500_ALU_RGB_G_SWIZ_A_G | ++ R500_ALU_RGB_B_SWIZ_A_0 | ++ R500_ALU_RGB_SEL_B_SRC1 | ++ R500_ALU_RGB_R_SWIZ_B_R | ++ R500_ALU_RGB_G_SWIZ_B_R | ++ R500_ALU_RGB_B_SWIZ_B_R)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALPHA_ADDRD(3) | ++ R500_ALPHA_OP_MAD | ++ R500_ALPHA_SEL_A_SRC0 | ++ R500_ALPHA_SWIZ_A_G | ++ R500_ALPHA_SEL_B_SRC1 | ++ R500_ALPHA_SWIZ_B_R)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALU_RGBA_ADDRD(3) | ++ R500_ALU_RGBA_OP_MAD | ++ R500_ALU_RGBA_SEL_C_SRC2 | ++ R500_ALU_RGBA_R_SWIZ_R | ++ R500_ALU_RGBA_G_SWIZ_G | ++ R500_ALU_RGBA_B_SWIZ_B | ++ R500_ALU_RGBA_A_SWIZ_A)); ++ ++ /* ADD temp3, temp3, input0.xyxy */ ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_INST_TYPE_ALU | ++ R500_INST_RGB_WMASK_R | ++ R500_INST_RGB_WMASK_G | ++ R500_INST_RGB_WMASK_B | ++ R500_INST_ALPHA_WMASK)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_RGB_ADDR1(3) | ++ R500_RGB_ADDR2(0))); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALPHA_ADDR1(3) | ++ R500_ALPHA_ADDR2(0))); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALU_RGB_R_SWIZ_A_1 | ++ R500_ALU_RGB_G_SWIZ_A_1 | ++ R500_ALU_RGB_B_SWIZ_A_1 | ++ R500_ALU_RGB_SEL_B_SRC1 | ++ R500_ALU_RGB_R_SWIZ_B_R | ++ R500_ALU_RGB_G_SWIZ_B_G | ++ R500_ALU_RGB_B_SWIZ_B_B)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALPHA_ADDRD(3) | ++ R500_ALPHA_OP_MAD | ++ R500_ALPHA_SWIZ_A_1 | ++ R500_ALPHA_SEL_B_SRC1 | ++ R500_ALPHA_SWIZ_B_A)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALU_RGBA_ADDRD(3) | ++ R500_ALU_RGBA_OP_MAD | ++ R500_ALU_RGBA_SEL_C_SRC2 | ++ R500_ALU_RGBA_R_SWIZ_R | ++ R500_ALU_RGBA_G_SWIZ_G | ++ R500_ALU_RGBA_B_SWIZ_R | ++ R500_ALU_RGBA_A_SWIZ_G)); ++ ++ /* TEX temp1, temp3.zwxy, tex0, 1D */ ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_INST_TYPE_TEX | ++ R500_INST_RGB_WMASK_R | ++ R500_INST_RGB_WMASK_G | ++ R500_INST_RGB_WMASK_B | ++ R500_INST_ALPHA_WMASK)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_TEX_ID(0) | ++ R500_TEX_INST_LD | ++ R500_TEX_IGNORE_UNCOVERED)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_TEX_SRC_ADDR(3) | ++ R500_TEX_SRC_S_SWIZ_B | ++ R500_TEX_SRC_T_SWIZ_A | ++ R500_TEX_SRC_R_SWIZ_R | ++ R500_TEX_SRC_Q_SWIZ_G | ++ R500_TEX_DST_ADDR(1) | ++ R500_TEX_DST_R_SWIZ_R | ++ R500_TEX_DST_G_SWIZ_G | ++ R500_TEX_DST_B_SWIZ_B | ++ R500_TEX_DST_A_SWIZ_A)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, 0x00000000); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, 0x00000000); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, 0x00000000); ++ ++ /* TEX temp3, temp3.xyzw, tex0, 1D */ ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_INST_TYPE_TEX | ++ R500_INST_TEX_SEM_WAIT | ++ R500_INST_RGB_WMASK_R | ++ R500_INST_RGB_WMASK_G | ++ R500_INST_RGB_WMASK_B | ++ R500_INST_ALPHA_WMASK)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_TEX_ID(0) | ++ R500_TEX_INST_LD | ++ R500_TEX_SEM_ACQUIRE | ++ R500_TEX_IGNORE_UNCOVERED)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_TEX_SRC_ADDR(3) | ++ R500_TEX_SRC_S_SWIZ_R | ++ R500_TEX_SRC_T_SWIZ_G | ++ R500_TEX_SRC_R_SWIZ_B | ++ R500_TEX_SRC_Q_SWIZ_A | ++ R500_TEX_DST_ADDR(3) | ++ R500_TEX_DST_R_SWIZ_R | ++ R500_TEX_DST_G_SWIZ_G | ++ R500_TEX_DST_B_SWIZ_B | ++ R500_TEX_DST_A_SWIZ_A)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, 0x00000000); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, 0x00000000); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, 0x00000000); ++ ++ /* MAD temp4, const1.0y0y, temp5.yyyy, temp4 */ ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_INST_TYPE_ALU | ++ R500_INST_RGB_WMASK_R | ++ R500_INST_RGB_WMASK_G | ++ R500_INST_RGB_WMASK_B | ++ R500_INST_ALPHA_WMASK)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_RGB_ADDR0(0) | ++ R500_RGB_ADDR0_CONST | ++ R500_RGB_ADDR1(5) | ++ R500_RGB_ADDR2(4))); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALPHA_ADDR0(0) | ++ R500_ALPHA_ADDR0_CONST | ++ R500_ALPHA_ADDR1(5) | ++ R500_ALPHA_ADDR2(4))); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALU_RGB_SEL_A_SRC0 | ++ R500_ALU_RGB_R_SWIZ_A_0 | ++ R500_ALU_RGB_G_SWIZ_A_G | ++ R500_ALU_RGB_B_SWIZ_A_0 | ++ R500_ALU_RGB_SEL_B_SRC1 | ++ R500_ALU_RGB_R_SWIZ_B_G | ++ R500_ALU_RGB_G_SWIZ_B_G | ++ R500_ALU_RGB_B_SWIZ_B_G)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALPHA_ADDRD(4) | ++ R500_ALPHA_OP_MAD | ++ R500_ALPHA_SEL_A_SRC0 | ++ R500_ALPHA_SWIZ_A_G | ++ R500_ALPHA_SEL_B_SRC1 | ++ R500_ALPHA_SWIZ_B_G)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALU_RGBA_ADDRD(4) | ++ R500_ALU_RGBA_OP_MAD | ++ R500_ALU_RGBA_SEL_C_SRC2 | ++ R500_ALU_RGBA_R_SWIZ_R | ++ R500_ALU_RGBA_G_SWIZ_G | ++ R500_ALU_RGBA_B_SWIZ_B | ++ R500_ALU_RGBA_A_SWIZ_A)); ++ ++ /* ADD temp0, temp4, input0.xyxy */ ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_INST_TYPE_ALU | ++ R500_INST_RGB_WMASK_R | ++ R500_INST_RGB_WMASK_G | ++ R500_INST_RGB_WMASK_B | ++ R500_INST_ALPHA_WMASK)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_RGB_ADDR1(4) | ++ R500_RGB_ADDR2(0))); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALPHA_ADDR1(4) | ++ R500_ALPHA_ADDR2(0))); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALU_RGB_R_SWIZ_A_1 | ++ R500_ALU_RGB_G_SWIZ_A_1 | ++ R500_ALU_RGB_B_SWIZ_A_1 | ++ R500_ALU_RGB_SEL_B_SRC1 | ++ R500_ALU_RGB_R_SWIZ_B_R | ++ R500_ALU_RGB_G_SWIZ_B_G | ++ R500_ALU_RGB_B_SWIZ_B_B)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALPHA_ADDRD(0) | ++ R500_ALPHA_OP_MAD | ++ R500_ALPHA_SWIZ_A_1 | ++ R500_ALPHA_SEL_B_SRC1 | ++ R500_ALPHA_SWIZ_B_A)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALU_RGBA_ADDRD(0) | ++ R500_ALU_RGBA_OP_MAD | ++ R500_ALU_RGBA_SEL_C_SRC2 | ++ R500_ALU_RGBA_R_SWIZ_R | ++ R500_ALU_RGBA_G_SWIZ_G | ++ R500_ALU_RGBA_B_SWIZ_R | ++ R500_ALU_RGBA_A_SWIZ_G)); ++ ++ /* TEX temp4, temp0.zwzw, tex0, 1D */ ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_INST_TYPE_TEX | ++ R500_INST_TEX_SEM_WAIT | ++ R500_INST_RGB_WMASK_R | ++ R500_INST_RGB_WMASK_G | ++ R500_INST_RGB_WMASK_B | ++ R500_INST_ALPHA_WMASK)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_TEX_ID(0) | ++ R500_TEX_INST_LD | ++ R500_TEX_IGNORE_UNCOVERED)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_TEX_SRC_ADDR(0) | ++ R500_TEX_SRC_S_SWIZ_B | ++ R500_TEX_SRC_T_SWIZ_A | ++ R500_TEX_SRC_R_SWIZ_B | ++ R500_TEX_SRC_Q_SWIZ_A | ++ R500_TEX_DST_ADDR(4) | ++ R500_TEX_DST_R_SWIZ_R | ++ R500_TEX_DST_G_SWIZ_G | ++ R500_TEX_DST_B_SWIZ_B | ++ R500_TEX_DST_A_SWIZ_A)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, 0x00000000); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, 0x00000000); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, 0x00000000); ++ ++ /* TEX temp0, temp0.xyzw, tex0, 1D */ ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_INST_TYPE_TEX | ++ R500_INST_TEX_SEM_WAIT | ++ R500_INST_RGB_WMASK_R | ++ R500_INST_RGB_WMASK_G | ++ R500_INST_RGB_WMASK_B | ++ R500_INST_ALPHA_WMASK)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_TEX_ID(0) | ++ R500_TEX_INST_LD | ++ R500_TEX_SEM_ACQUIRE | ++ R500_TEX_IGNORE_UNCOVERED)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_TEX_SRC_ADDR(0) | ++ R500_TEX_SRC_S_SWIZ_R | ++ R500_TEX_SRC_T_SWIZ_G | ++ R500_TEX_SRC_R_SWIZ_B | ++ R500_TEX_SRC_Q_SWIZ_A | ++ R500_TEX_DST_ADDR(0) | ++ R500_TEX_DST_R_SWIZ_R | ++ R500_TEX_DST_G_SWIZ_G | ++ R500_TEX_DST_B_SWIZ_B | ++ R500_TEX_DST_A_SWIZ_A)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, 0x00000000); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, 0x00000000); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, 0x00000000); ++ ++ /* LRP temp3, temp2.zzzz, temp1, temp3 -> ++ * - PRESUB temps, temp1 - temp3 ++ * - MAD temp2.zzzz, temps, temp3 */ ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_INST_TYPE_ALU | ++ R500_INST_RGB_WMASK_R | ++ R500_INST_RGB_WMASK_G | ++ R500_INST_RGB_WMASK_B | ++ R500_INST_ALPHA_WMASK)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_RGB_ADDR0(3) | ++ R500_RGB_SRCP_OP_RGB1_MINUS_RGB0 | ++ R500_RGB_ADDR1(1) | ++ R500_RGB_ADDR2(2))); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALPHA_ADDR0(3) | ++ R500_ALPHA_SRCP_OP_A1_MINUS_A0 | ++ R500_ALPHA_ADDR1(1) | ++ R500_ALPHA_ADDR2(2))); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALU_RGB_SEL_A_SRC2 | ++ R500_ALU_RGB_R_SWIZ_A_B | ++ R500_ALU_RGB_G_SWIZ_A_B | ++ R500_ALU_RGB_B_SWIZ_A_B | ++ R500_ALU_RGB_SEL_B_SRCP | ++ R500_ALU_RGB_R_SWIZ_B_R | ++ R500_ALU_RGB_G_SWIZ_B_G | ++ R500_ALU_RGB_B_SWIZ_B_B)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALPHA_ADDRD(3) | ++ R500_ALPHA_OP_MAD | ++ R500_ALPHA_SEL_A_SRC2 | ++ R500_ALPHA_SWIZ_A_B | ++ R500_ALPHA_SEL_B_SRCP | ++ R500_ALPHA_SWIZ_B_A)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALU_RGBA_ADDRD(3) | ++ R500_ALU_RGBA_OP_MAD | ++ R500_ALU_RGBA_SEL_C_SRC0 | ++ R500_ALU_RGBA_R_SWIZ_R | ++ R500_ALU_RGBA_G_SWIZ_G | ++ R500_ALU_RGBA_B_SWIZ_B | ++ R500_ALU_RGBA_A_SWIZ_A)); ++ ++ /* LRP temp0, temp2.zzzz, temp4, temp0 -> ++ * - PRESUB temps, temp4 - temp1 ++ * - MAD temp2.zzzz, temps, temp0 */ ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_INST_TYPE_ALU | ++ R500_INST_TEX_SEM_WAIT | ++ R500_INST_RGB_WMASK_R | ++ R500_INST_RGB_WMASK_G | ++ R500_INST_RGB_WMASK_B | ++ R500_INST_ALPHA_WMASK)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_RGB_ADDR0(0) | ++ R500_RGB_SRCP_OP_RGB1_MINUS_RGB0 | ++ R500_RGB_ADDR1(4) | ++ R500_RGB_ADDR2(2))); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALPHA_ADDR0(0) | ++ R500_ALPHA_SRCP_OP_A1_MINUS_A0 | ++ R500_ALPHA_ADDR1(4) | ++ R500_ALPHA_ADDR2(2))); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALU_RGB_SEL_A_SRC2 | ++ R500_ALU_RGB_R_SWIZ_A_B | ++ R500_ALU_RGB_G_SWIZ_A_B | ++ R500_ALU_RGB_B_SWIZ_A_B | ++ R500_ALU_RGB_SEL_B_SRCP | ++ R500_ALU_RGB_R_SWIZ_B_R | ++ R500_ALU_RGB_G_SWIZ_B_G | ++ R500_ALU_RGB_B_SWIZ_B_B)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALPHA_ADDRD(0) | ++ R500_ALPHA_OP_MAD | ++ R500_ALPHA_SEL_A_SRC2 | ++ R500_ALPHA_SWIZ_A_B | ++ R500_ALPHA_SEL_B_SRCP | ++ R500_ALPHA_SWIZ_B_A)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALU_RGBA_ADDRD(0) | ++ R500_ALU_RGBA_OP_MAD | ++ R500_ALU_RGBA_SEL_C_SRC0 | ++ R500_ALU_RGBA_R_SWIZ_R | ++ R500_ALU_RGBA_G_SWIZ_G | ++ R500_ALU_RGBA_B_SWIZ_B | ++ R500_ALU_RGBA_A_SWIZ_A)); ++ ++ /* LRP output, temp5.zzzz, temp3, temp0 -> ++ * - PRESUB temps, temp3 - temp0 ++ * - MAD temp5.zzzz, temps, temp0 */ ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_INST_TYPE_OUT | ++ R500_INST_LAST | ++ R500_INST_TEX_SEM_WAIT | ++ R500_INST_RGB_WMASK_R | ++ R500_INST_RGB_WMASK_G | ++ R500_INST_RGB_WMASK_B | ++ R500_INST_ALPHA_WMASK | ++ R500_INST_RGB_OMASK_R | ++ R500_INST_RGB_OMASK_G | ++ R500_INST_RGB_OMASK_B | ++ R500_INST_ALPHA_OMASK)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_RGB_ADDR0(0) | ++ R500_RGB_SRCP_OP_RGB1_MINUS_RGB0 | ++ R500_RGB_ADDR1(3) | ++ R500_RGB_ADDR2(5))); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALPHA_ADDR0(0) | ++ R500_ALPHA_SRCP_OP_A1_MINUS_A0 | ++ R500_ALPHA_ADDR1(3) | ++ R500_ALPHA_ADDR2(5))); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALU_RGB_SEL_A_SRC2 | ++ R500_ALU_RGB_R_SWIZ_A_B | ++ R500_ALU_RGB_G_SWIZ_A_B | ++ R500_ALU_RGB_B_SWIZ_A_B | ++ R500_ALU_RGB_SEL_B_SRCP | ++ R500_ALU_RGB_R_SWIZ_B_R | ++ R500_ALU_RGB_G_SWIZ_B_G | ++ R500_ALU_RGB_B_SWIZ_B_B)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALPHA_ADDRD(0) | ++ R500_ALPHA_OP_MAD | ++ R500_ALPHA_SEL_A_SRC2 | ++ R500_ALPHA_SWIZ_A_B | ++ R500_ALPHA_SEL_B_SRCP | ++ R500_ALPHA_SWIZ_B_A)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALU_RGBA_ADDRD(0) | ++ R500_ALU_RGBA_OP_MAD | ++ R500_ALU_RGBA_SEL_C_SRC0 | ++ R500_ALU_RGBA_R_SWIZ_R | ++ R500_ALU_RGBA_G_SWIZ_G | ++ R500_ALU_RGBA_B_SWIZ_B | ++ R500_ALU_RGBA_A_SWIZ_A)); ++ ++ /* Shader constants. */ ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_INDEX, R500_US_VECTOR_CONST_INDEX(0)); ++ ++ /* const0 = {1 / texture[0].width, 0, 0, 0} */ ++ OUT_ACCEL_REG_F(R500_GA_US_VECTOR_DATA, (1.0/(float)pPriv->w)); ++ OUT_ACCEL_REG_F(R500_GA_US_VECTOR_DATA, (1.0/(float)pPriv->h)); ++ OUT_ACCEL_REG_F(R500_GA_US_VECTOR_DATA, 0x0); ++ OUT_ACCEL_REG_F(R500_GA_US_VECTOR_DATA, 0x0); ++ ++ FINISH_ACCEL(); ++ ++ } else { ++ BEGIN_ACCEL(19); ++ /* 2 components: 2 for tex0 */ ++ OUT_ACCEL_REG(R300_RS_COUNT, ++ ((2 << R300_RS_COUNT_IT_COUNT_SHIFT) | ++ R300_RS_COUNT_HIRES_EN)); ++ ++ /* R300_INST_COUNT_RS - highest RS instruction used */ ++ OUT_ACCEL_REG(R300_RS_INST_COUNT, R300_INST_COUNT_RS(0) | R300_TX_OFFSET_RS(6)); ++ ++ /* Pixel stack frame size. */ ++ OUT_ACCEL_REG(R300_US_PIXSIZE, 0); /* highest temp used */ ++ ++ /* FP length. */ ++ OUT_ACCEL_REG(R500_US_CODE_ADDR, (R500_US_CODE_START_ADDR(0) | ++ R500_US_CODE_END_ADDR(1))); ++ OUT_ACCEL_REG(R500_US_CODE_RANGE, (R500_US_CODE_RANGE_ADDR(0) | ++ R500_US_CODE_RANGE_SIZE(1))); ++ ++ /* Prepare for FP emission. */ ++ OUT_ACCEL_REG(R500_US_CODE_OFFSET, 0); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_INDEX, R500_US_VECTOR_INST_INDEX(0)); ++ ++ /* tex inst */ ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_INST_TYPE_TEX | ++ R500_INST_TEX_SEM_WAIT | ++ R500_INST_RGB_WMASK_R | ++ R500_INST_RGB_WMASK_G | ++ R500_INST_RGB_WMASK_B | ++ R500_INST_ALPHA_WMASK | ++ R500_INST_RGB_CLAMP | ++ R500_INST_ALPHA_CLAMP)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_TEX_ID(0) | ++ R500_TEX_INST_LD | ++ R500_TEX_SEM_ACQUIRE | ++ R500_TEX_IGNORE_UNCOVERED)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_TEX_SRC_ADDR(0) | ++ R500_TEX_SRC_S_SWIZ_R | ++ R500_TEX_SRC_T_SWIZ_G | ++ R500_TEX_DST_ADDR(0) | ++ R500_TEX_DST_R_SWIZ_R | ++ R500_TEX_DST_G_SWIZ_G | ++ R500_TEX_DST_B_SWIZ_B | ++ R500_TEX_DST_A_SWIZ_A)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_DX_ADDR(0) | ++ R500_DX_S_SWIZ_R | ++ R500_DX_T_SWIZ_R | ++ R500_DX_R_SWIZ_R | ++ R500_DX_Q_SWIZ_R | ++ R500_DY_ADDR(0) | ++ R500_DY_S_SWIZ_R | ++ R500_DY_T_SWIZ_R | ++ R500_DY_R_SWIZ_R | ++ R500_DY_Q_SWIZ_R)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, 0x00000000); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, 0x00000000); ++ ++ /* ALU inst */ ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_INST_TYPE_OUT | ++ R500_INST_TEX_SEM_WAIT | ++ R500_INST_LAST | ++ R500_INST_RGB_OMASK_R | ++ R500_INST_RGB_OMASK_G | ++ R500_INST_RGB_OMASK_B | ++ R500_INST_ALPHA_OMASK | ++ R500_INST_RGB_CLAMP | ++ R500_INST_ALPHA_CLAMP)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_RGB_ADDR0(0) | ++ R500_RGB_ADDR1(0) | ++ R500_RGB_ADDR1_CONST | ++ R500_RGB_ADDR2(0) | ++ R500_RGB_ADDR2_CONST)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALPHA_ADDR0(0) | ++ R500_ALPHA_ADDR1(0) | ++ R500_ALPHA_ADDR1_CONST | ++ R500_ALPHA_ADDR2(0) | ++ R500_ALPHA_ADDR2_CONST)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALU_RGB_SEL_A_SRC0 | ++ R500_ALU_RGB_R_SWIZ_A_R | ++ R500_ALU_RGB_G_SWIZ_A_G | ++ R500_ALU_RGB_B_SWIZ_A_B | ++ R500_ALU_RGB_SEL_B_SRC0 | ++ R500_ALU_RGB_R_SWIZ_B_1 | ++ R500_ALU_RGB_B_SWIZ_B_1 | ++ R500_ALU_RGB_G_SWIZ_B_1)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALPHA_OP_MAD | ++ R500_ALPHA_SWIZ_A_A | ++ R500_ALPHA_SWIZ_B_1)); ++ OUT_ACCEL_REG(R500_GA_US_VECTOR_DATA, (R500_ALU_RGBA_OP_MAD | ++ R500_ALU_RGBA_R_SWIZ_0 | ++ R500_ALU_RGBA_G_SWIZ_0 | ++ R500_ALU_RGBA_B_SWIZ_0 | ++ R500_ALU_RGBA_A_SWIZ_0)); ++ FINISH_ACCEL(); ++ } + } + +- BEGIN_VIDEO(5); +- OUT_VIDEO_REG(R300_TX_INVALTAGS, 0); +- OUT_VIDEO_REG(R300_TX_ENABLE, txenable); ++ BEGIN_ACCEL(6); ++ OUT_ACCEL_REG(R300_TX_INVALTAGS, 0); ++ OUT_ACCEL_REG(R300_TX_ENABLE, txenable); + +- OUT_VIDEO_REG(R300_RB3D_COLOROFFSET0, dst_offset); +- OUT_VIDEO_REG(R300_RB3D_COLORPITCH0, colorpitch); ++ OUT_ACCEL_REG(R300_RB3D_COLOROFFSET0, dst_offset); ++ OUT_ACCEL_REG(R300_RB3D_COLORPITCH0, colorpitch); + + blendcntl = RADEON_SRC_BLEND_GL_ONE | RADEON_DST_BLEND_GL_ZERO; + /* no need to enable blending */ +- OUT_VIDEO_REG(R300_RB3D_BLENDCNTL, blendcntl); +- FINISH_VIDEO(); ++ OUT_ACCEL_REG(R300_RB3D_BLENDCNTL, blendcntl); + +- BEGIN_VIDEO(1); +- OUT_VIDEO_REG(R300_VAP_VTX_SIZE, VTX_DWORD_COUNT); +- FINISH_VIDEO(); ++ OUT_ACCEL_REG(R300_VAP_VTX_SIZE, vtx_count); ++ FINISH_ACCEL(); + + } else { + +@@ -453,20 +1023,20 @@ FUNC_NAME(RADEONDisplayTexturedVideo)(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv + if (RADEONTilingEnabled(pScrn, pPixmap)) + colorpitch |= RADEON_COLOR_TILE_ENABLE; + +- BEGIN_VIDEO(5); ++ BEGIN_ACCEL(5); + +- OUT_VIDEO_REG(RADEON_PP_CNTL, +- RADEON_TEX_0_ENABLE | RADEON_TEX_BLEND_0_ENABLE); +- OUT_VIDEO_REG(RADEON_RB3D_CNTL, +- dst_format | RADEON_ALPHA_BLEND_ENABLE); +- OUT_VIDEO_REG(RADEON_RB3D_COLOROFFSET, dst_offset); ++ OUT_ACCEL_REG(RADEON_PP_CNTL, ++ RADEON_TEX_0_ENABLE | RADEON_TEX_BLEND_0_ENABLE); ++ OUT_ACCEL_REG(RADEON_RB3D_CNTL, ++ dst_format | RADEON_ALPHA_BLEND_ENABLE); ++ OUT_ACCEL_REG(RADEON_RB3D_COLOROFFSET, dst_offset); + +- OUT_VIDEO_REG(RADEON_RB3D_COLORPITCH, colorpitch); ++ OUT_ACCEL_REG(RADEON_RB3D_COLORPITCH, colorpitch); + +- OUT_VIDEO_REG(RADEON_RB3D_BLENDCNTL, +- RADEON_SRC_BLEND_GL_ONE | RADEON_DST_BLEND_GL_ZERO); ++ OUT_ACCEL_REG(RADEON_RB3D_BLENDCNTL, ++ RADEON_SRC_BLEND_GL_ONE | RADEON_DST_BLEND_GL_ZERO); + +- FINISH_VIDEO(); ++ FINISH_ACCEL(); + + + if ((info->ChipFamily == CHIP_FAMILY_RV250) || +@@ -474,77 +1044,82 @@ FUNC_NAME(RADEONDisplayTexturedVideo)(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv + (info->ChipFamily == CHIP_FAMILY_RS300) || + (info->ChipFamily == CHIP_FAMILY_R200)) { + +- info->texW[0] = pPriv->w; +- info->texH[0] = pPriv->h; +- +- BEGIN_VIDEO(12); +- +- OUT_VIDEO_REG(R200_SE_VTX_FMT_0, R200_VTX_XY); +- OUT_VIDEO_REG(R200_SE_VTX_FMT_1, +- (2 << R200_VTX_TEX0_COMP_CNT_SHIFT)); +- +- OUT_VIDEO_REG(R200_PP_TXFILTER_0, +- R200_MAG_FILTER_LINEAR | +- R200_MIN_FILTER_LINEAR | +- R200_YUV_TO_RGB); +- OUT_VIDEO_REG(R200_PP_TXFORMAT_0, txformat); +- OUT_VIDEO_REG(R200_PP_TXFORMAT_X_0, 0); +- OUT_VIDEO_REG(R200_PP_TXSIZE_0, +- (pPriv->w - 1) | +- ((pPriv->h - 1) << RADEON_TEX_VSIZE_SHIFT)); +- OUT_VIDEO_REG(R200_PP_TXPITCH_0, pPriv->src_pitch - 32); +- +- OUT_VIDEO_REG(R200_PP_TXOFFSET_0, pPriv->src_offset); +- +- OUT_VIDEO_REG(R200_PP_TXCBLEND_0, +- R200_TXC_ARG_A_ZERO | +- R200_TXC_ARG_B_ZERO | +- R200_TXC_ARG_C_R0_COLOR | +- R200_TXC_OP_MADD); +- OUT_VIDEO_REG(R200_PP_TXCBLEND2_0, +- R200_TXC_CLAMP_0_1 | R200_TXC_OUTPUT_REG_R0); +- OUT_VIDEO_REG(R200_PP_TXABLEND_0, +- R200_TXA_ARG_A_ZERO | +- R200_TXA_ARG_B_ZERO | +- R200_TXA_ARG_C_R0_ALPHA | +- R200_TXA_OP_MADD); +- OUT_VIDEO_REG(R200_PP_TXABLEND2_0, +- R200_TXA_CLAMP_0_1 | R200_TXA_OUTPUT_REG_R0); +- FINISH_VIDEO(); ++ info->accel_state->texW[0] = pPriv->w; ++ info->accel_state->texH[0] = pPriv->h; ++ ++ BEGIN_ACCEL(12); ++ ++ OUT_ACCEL_REG(R200_SE_VTX_FMT_0, R200_VTX_XY); ++ OUT_ACCEL_REG(R200_SE_VTX_FMT_1, ++ (2 << R200_VTX_TEX0_COMP_CNT_SHIFT)); ++ ++ OUT_ACCEL_REG(R200_PP_TXFILTER_0, ++ R200_MAG_FILTER_LINEAR | ++ R200_MIN_FILTER_LINEAR | ++ R200_CLAMP_S_CLAMP_LAST | ++ R200_CLAMP_T_CLAMP_LAST | ++ R200_YUV_TO_RGB); ++ OUT_ACCEL_REG(R200_PP_TXFORMAT_0, txformat); ++ OUT_ACCEL_REG(R200_PP_TXFORMAT_X_0, 0); ++ OUT_ACCEL_REG(R200_PP_TXSIZE_0, ++ (pPriv->w - 1) | ++ ((pPriv->h - 1) << RADEON_TEX_VSIZE_SHIFT)); ++ OUT_ACCEL_REG(R200_PP_TXPITCH_0, pPriv->src_pitch - 32); ++ ++ OUT_ACCEL_REG(R200_PP_TXOFFSET_0, pPriv->src_offset); ++ ++ OUT_ACCEL_REG(R200_PP_TXCBLEND_0, ++ R200_TXC_ARG_A_ZERO | ++ R200_TXC_ARG_B_ZERO | ++ R200_TXC_ARG_C_R0_COLOR | ++ R200_TXC_OP_MADD); ++ OUT_ACCEL_REG(R200_PP_TXCBLEND2_0, ++ R200_TXC_CLAMP_0_1 | R200_TXC_OUTPUT_REG_R0); ++ OUT_ACCEL_REG(R200_PP_TXABLEND_0, ++ R200_TXA_ARG_A_ZERO | ++ R200_TXA_ARG_B_ZERO | ++ R200_TXA_ARG_C_R0_ALPHA | ++ R200_TXA_OP_MADD); ++ OUT_ACCEL_REG(R200_PP_TXABLEND2_0, ++ R200_TXA_CLAMP_0_1 | R200_TXA_OUTPUT_REG_R0); ++ FINISH_ACCEL(); + } else { + +- info->texW[0] = 1; +- info->texH[0] = 1; +- +- BEGIN_VIDEO(8); +- +- OUT_VIDEO_REG(RADEON_SE_VTX_FMT, RADEON_SE_VTX_FMT_XY | +- RADEON_SE_VTX_FMT_ST0); +- +- OUT_VIDEO_REG(RADEON_PP_TXFILTER_0, RADEON_MAG_FILTER_LINEAR | +- RADEON_MIN_FILTER_LINEAR | +- RADEON_YUV_TO_RGB); +- OUT_VIDEO_REG(RADEON_PP_TXFORMAT_0, txformat); +- OUT_VIDEO_REG(RADEON_PP_TXOFFSET_0, pPriv->src_offset); +- OUT_VIDEO_REG(RADEON_PP_TXCBLEND_0, +- RADEON_COLOR_ARG_A_ZERO | +- RADEON_COLOR_ARG_B_ZERO | +- RADEON_COLOR_ARG_C_T0_COLOR | +- RADEON_BLEND_CTL_ADD | +- RADEON_CLAMP_TX); +- OUT_VIDEO_REG(RADEON_PP_TXABLEND_0, +- RADEON_ALPHA_ARG_A_ZERO | +- RADEON_ALPHA_ARG_B_ZERO | +- RADEON_ALPHA_ARG_C_T0_ALPHA | +- RADEON_BLEND_CTL_ADD | +- RADEON_CLAMP_TX); +- +- OUT_VIDEO_REG(RADEON_PP_TEX_SIZE_0, +- (pPriv->w - 1) | +- ((pPriv->h - 1) << RADEON_TEX_VSIZE_SHIFT)); +- OUT_VIDEO_REG(RADEON_PP_TEX_PITCH_0, +- pPriv->src_pitch - 32); +- FINISH_VIDEO(); ++ info->accel_state->texW[0] = 1; ++ info->accel_state->texH[0] = 1; ++ ++ BEGIN_ACCEL(8); ++ ++ OUT_ACCEL_REG(RADEON_SE_VTX_FMT, (RADEON_SE_VTX_FMT_XY | ++ RADEON_SE_VTX_FMT_ST0)); ++ ++ OUT_ACCEL_REG(RADEON_PP_TXFILTER_0, ++ RADEON_MAG_FILTER_LINEAR | ++ RADEON_MIN_FILTER_LINEAR | ++ RADEON_CLAMP_S_CLAMP_LAST | ++ RADEON_CLAMP_T_CLAMP_LAST | ++ RADEON_YUV_TO_RGB); ++ OUT_ACCEL_REG(RADEON_PP_TXFORMAT_0, txformat); ++ OUT_ACCEL_REG(RADEON_PP_TXOFFSET_0, pPriv->src_offset); ++ OUT_ACCEL_REG(RADEON_PP_TXCBLEND_0, ++ RADEON_COLOR_ARG_A_ZERO | ++ RADEON_COLOR_ARG_B_ZERO | ++ RADEON_COLOR_ARG_C_T0_COLOR | ++ RADEON_BLEND_CTL_ADD | ++ RADEON_CLAMP_TX); ++ OUT_ACCEL_REG(RADEON_PP_TXABLEND_0, ++ RADEON_ALPHA_ARG_A_ZERO | ++ RADEON_ALPHA_ARG_B_ZERO | ++ RADEON_ALPHA_ARG_C_T0_ALPHA | ++ RADEON_BLEND_CTL_ADD | ++ RADEON_CLAMP_TX); ++ ++ OUT_ACCEL_REG(RADEON_PP_TEX_SIZE_0, ++ (pPriv->w - 1) | ++ ((pPriv->h - 1) << RADEON_TEX_VSIZE_SHIFT)); ++ OUT_ACCEL_REG(RADEON_PP_TEX_PITCH_0, ++ pPriv->src_pitch - 32); ++ FINISH_ACCEL(); + } + } + +@@ -582,77 +1157,96 @@ FUNC_NAME(RADEONDisplayTexturedVideo)(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv + + #ifdef ACCEL_CP + if (info->ChipFamily < CHIP_FAMILY_R200) { +- BEGIN_RING(4 * VTX_DWORD_COUNT + 3); ++ BEGIN_RING(3 * vtx_count + 3); + OUT_RING(CP_PACKET3(RADEON_CP_PACKET3_3D_DRAW_IMMD, +- 4 * VTX_DWORD_COUNT + 1)); ++ 3 * vtx_count + 1)); + OUT_RING(RADEON_CP_VC_FRMT_XY | + RADEON_CP_VC_FRMT_ST0); +- OUT_RING(RADEON_CP_VC_CNTL_PRIM_TYPE_TRI_FAN | ++ OUT_RING(RADEON_CP_VC_CNTL_PRIM_TYPE_RECT_LIST | + RADEON_CP_VC_CNTL_PRIM_WALK_RING | + RADEON_CP_VC_CNTL_MAOS_ENABLE | + RADEON_CP_VC_CNTL_VTX_FMT_RADEON_MODE | +- (4 << RADEON_CP_VC_CNTL_NUM_SHIFT)); ++ (3 << RADEON_CP_VC_CNTL_NUM_SHIFT)); + } else { + if (IS_R300_3D || IS_R500_3D) +- BEGIN_RING(4 * VTX_DWORD_COUNT + 4); ++ BEGIN_RING(4 * vtx_count + 4); + else +- BEGIN_RING(4 * VTX_DWORD_COUNT + 2); ++ BEGIN_RING(4 * vtx_count + 2); + OUT_RING(CP_PACKET3(R200_CP_PACKET3_3D_DRAW_IMMD_2, +- 4 * VTX_DWORD_COUNT)); +- OUT_RING(RADEON_CP_VC_CNTL_PRIM_TYPE_TRI_FAN | ++ 4 * vtx_count)); ++ OUT_RING(RADEON_CP_VC_CNTL_PRIM_TYPE_QUAD_LIST | + RADEON_CP_VC_CNTL_PRIM_WALK_RING | + (4 << RADEON_CP_VC_CNTL_NUM_SHIFT)); + } + #else /* ACCEL_CP */ + if (IS_R300_3D || IS_R500_3D) +- BEGIN_VIDEO(2 + VTX_DWORD_COUNT * 4); ++ BEGIN_ACCEL(2 + vtx_count * 4); ++ else if (info->ChipFamily < CHIP_FAMILY_R200) ++ BEGIN_ACCEL(1 + vtx_count * 3); + else +- BEGIN_VIDEO(1 + VTX_DWORD_COUNT * 4); ++ BEGIN_ACCEL(1 + vtx_count * 4); + +- if (info->ChipFamily < CHIP_FAMILY_R200) { +- OUT_VIDEO_REG(RADEON_SE_VF_CNTL, (RADEON_VF_PRIM_TYPE_TRIANGLE_FAN | ++ if (info->ChipFamily < CHIP_FAMILY_R200) ++ OUT_ACCEL_REG(RADEON_SE_VF_CNTL, (RADEON_VF_PRIM_TYPE_RECTANGLE_LIST | + RADEON_VF_PRIM_WALK_DATA | + RADEON_VF_RADEON_MODE | +- 4 << RADEON_VF_NUM_VERTICES_SHIFT)); +- } else { +- OUT_VIDEO_REG(RADEON_SE_VF_CNTL, (RADEON_VF_PRIM_TYPE_QUAD_LIST | ++ (3 << RADEON_VF_NUM_VERTICES_SHIFT))); ++ else ++ OUT_ACCEL_REG(RADEON_SE_VF_CNTL, (RADEON_VF_PRIM_TYPE_QUAD_LIST | + RADEON_VF_PRIM_WALK_DATA | +- 4 << RADEON_VF_NUM_VERTICES_SHIFT)); +- } +-#endif ++ (4 << RADEON_VF_NUM_VERTICES_SHIFT))); + +- VTX_OUT((float)dstX, (float)dstY, +- xFixedToFloat(srcTopLeft.x) / info->texW[0], xFixedToFloat(srcTopLeft.y) / info->texH[0]); +- VTX_OUT((float)dstX, (float)(dstY + dsth), +- xFixedToFloat(srcBottomLeft.x) / info->texW[0], xFixedToFloat(srcBottomLeft.y) / info->texH[0]); +- VTX_OUT((float)(dstX + dstw), (float)(dstY + dsth), +- xFixedToFloat(srcBottomRight.x) / info->texW[0], xFixedToFloat(srcBottomRight.y) / info->texH[0]); +- VTX_OUT((float)(dstX + dstw), (float)dstY, +- xFixedToFloat(srcTopRight.x) / info->texW[0], xFixedToFloat(srcTopRight.y) / info->texH[0]); ++#endif ++ if (pPriv->bicubic_enabled) { ++ VTX_OUT_FILTER((float)dstX, (float)dstY, ++ xFixedToFloat(srcTopLeft.x) / info->accel_state->texW[0], xFixedToFloat(srcTopLeft.y) / info->accel_state->texH[0], ++ xFixedToFloat(srcTopLeft.x) + 0.5, xFixedToFloat(srcTopLeft.y) + 0.5); ++ VTX_OUT_FILTER((float)dstX, (float)(dstY + dsth), ++ xFixedToFloat(srcBottomLeft.x) / info->accel_state->texW[0], xFixedToFloat(srcBottomLeft.y) / info->accel_state->texH[0], ++ xFixedToFloat(srcBottomLeft.x) + 0.5, xFixedToFloat(srcBottomLeft.y) + 0.5); ++ VTX_OUT_FILTER((float)(dstX + dstw), (float)(dstY + dsth), ++ xFixedToFloat(srcBottomRight.x) / info->accel_state->texW[0], xFixedToFloat(srcBottomRight.y) / info->accel_state->texH[0], ++ xFixedToFloat(srcBottomRight.x) + 0.5, xFixedToFloat(srcBottomRight.y) + 0.5); ++ VTX_OUT_FILTER((float)(dstX + dstw), (float)dstY, ++ xFixedToFloat(srcTopRight.x) / info->accel_state->texW[0], xFixedToFloat(srcTopRight.y) / info->accel_state->texH[0], ++ xFixedToFloat(srcTopRight.x) + 0.5, xFixedToFloat(srcTopRight.y) + 0.5); ++ } else { ++ if (info->ChipFamily >= CHIP_FAMILY_R200) { ++ VTX_OUT((float)dstX, (float)dstY, ++ xFixedToFloat(srcTopLeft.x) / info->accel_state->texW[0], xFixedToFloat(srcTopLeft.y) / info->accel_state->texH[0]); ++ } ++ VTX_OUT((float)dstX, (float)(dstY + dsth), ++ xFixedToFloat(srcBottomLeft.x) / info->accel_state->texW[0], xFixedToFloat(srcBottomLeft.y) / info->accel_state->texH[0]); ++ VTX_OUT((float)(dstX + dstw), (float)(dstY + dsth), ++ xFixedToFloat(srcBottomRight.x) / info->accel_state->texW[0], xFixedToFloat(srcBottomRight.y) / info->accel_state->texH[0]); ++ VTX_OUT((float)(dstX + dstw), (float)dstY, ++ xFixedToFloat(srcTopRight.x) / info->accel_state->texW[0], xFixedToFloat(srcTopRight.y) / info->accel_state->texH[0]); ++ } + + if (IS_R300_3D || IS_R500_3D) + /* flushing is pipelined, free/finish is not */ +- OUT_VIDEO_REG(R300_RB3D_DSTCACHE_CTLSTAT, R300_DC_FLUSH_3D); ++ OUT_ACCEL_REG(R300_RB3D_DSTCACHE_CTLSTAT, R300_DC_FLUSH_3D); + + #ifdef ACCEL_CP + ADVANCE_RING(); + #else +- FINISH_VIDEO(); ++ FINISH_ACCEL(); + #endif /* !ACCEL_CP */ + + pBox++; + } + + if (IS_R300_3D || IS_R500_3D) { +- BEGIN_VIDEO(2); +- OUT_VIDEO_REG(R300_RB3D_DSTCACHE_CTLSTAT, R300_RB3D_DC_FLUSH_ALL); ++ BEGIN_ACCEL(2); ++ OUT_ACCEL_REG(R300_RB3D_DSTCACHE_CTLSTAT, R300_RB3D_DC_FLUSH_ALL); + } else +- BEGIN_VIDEO(1); +- OUT_VIDEO_REG(RADEON_WAIT_UNTIL, RADEON_WAIT_3D_IDLECLEAN); +- FINISH_VIDEO(); ++ BEGIN_ACCEL(1); ++ OUT_ACCEL_REG(RADEON_WAIT_UNTIL, RADEON_WAIT_3D_IDLECLEAN); ++ FINISH_ACCEL(); + + DamageDamageRegion(pPriv->pDraw, &pPriv->clip); + } + + #undef VTX_OUT ++#undef VTX_OUT_FILTER + #undef FUNC_NAME +diff --git a/src/radeon_tv.c b/src/radeon_tv.c +index 90020b3..90d1ac9 100644 +--- a/src/radeon_tv.c ++++ b/src/radeon_tv.c +@@ -140,7 +140,7 @@ static const uint16_t vert_timing_PAL[] = + **********************************************************************/ + static const TVModeConstants availableTVModes[] = + { +- { ++ { /* NTSC timing for 27 Mhz ref clk */ + 800, /* horResolution */ + 600, /* verResolution */ + TV_STD_NTSC, /* standard */ +@@ -155,7 +155,7 @@ static const TVModeConstants availableTVModes[] = + 4, /* crtcPLL_postDiv */ + 1022, /* pixToTV */ + }, +- { ++ { /* PAL timing for 27 Mhz ref clk */ + 800, /* horResolution */ + 600, /* verResolution */ + TV_STD_PAL, /* standard */ +@@ -169,7 +169,22 @@ static const TVModeConstants availableTVModes[] = + 231, /* crtcPLL_M */ + 4, /* crtcPLL_postDiv */ + 759, /* pixToTV */ +- } ++ }, ++ { /* NTSC timing for 14 Mhz ref clk */ ++ 800, /* horResolution */ ++ 600, /* verResolution */ ++ TV_STD_NTSC, /* standard */ ++ 1018, /* horTotal */ ++ 727, /* verTotal */ ++ 813, /* horStart */ ++ 840, /* horSyncStart */ ++ 633, /* verSyncStart */ ++ 630627, /* defRestart */ ++ 347, /* crtcPLL_N */ ++ 14, /* crtcPLL_M */ ++ 8, /* crtcPLL_postDiv */ ++ 1022, /* pixToTV */ ++ }, + }; + + #define N_AVAILABLE_MODES (sizeof(availableModes) / sizeof(availableModes[ 0 ])) +@@ -582,6 +597,8 @@ static Bool RADEONInitTVRestarts(xf86OutputPtr output, RADEONSavePtr save, + DisplayModePtr mode) + { + RADEONOutputPrivatePtr radeon_output = output->driver_private; ++ RADEONInfoPtr info = RADEONPTR(output->scrn); ++ RADEONPLLPtr pll = &info->pll; + int restart; + unsigned hTotal; + unsigned vTotal; +@@ -597,14 +614,21 @@ static Bool RADEONInitTVRestarts(xf86OutputPtr output, RADEONSavePtr save, + /* FIXME: need to revisit this when we add more modes */ + if (radeon_output->tvStd == TV_STD_NTSC || + radeon_output->tvStd == TV_STD_NTSC_J || +- radeon_output->tvStd == TV_STD_PAL_M) +- constPtr = &availableTVModes[0]; +- else +- constPtr = &availableTVModes[1]; ++ radeon_output->tvStd == TV_STD_PAL_M) { ++ if (pll->reference_freq == 2700) ++ constPtr = &availableTVModes[0]; ++ else ++ constPtr = &availableTVModes[2]; ++ } else { ++ if (pll->reference_freq == 2700) ++ constPtr = &availableTVModes[1]; ++ else ++ constPtr = &availableTVModes[1]; /* FIXME */ ++ } + + hTotal = constPtr->horTotal; + vTotal = constPtr->verTotal; +- ++ + if (radeon_output->tvStd == TV_STD_NTSC || + radeon_output->tvStd == TV_STD_NTSC_J || + radeon_output->tvStd == TV_STD_PAL_M || +@@ -696,6 +720,8 @@ void RADEONInitTVRegisters(xf86OutputPtr output, RADEONSavePtr save, + ScrnInfoPtr pScrn = output->scrn; + RADEONOutputPrivatePtr radeon_output = output->driver_private; + RADEONInfoPtr info = RADEONPTR(pScrn); ++ RADEONPLLPtr pll = &info->pll; ++ unsigned m, n, p; + unsigned i; + unsigned long vert_space, flicker_removal; + uint32_t tmp; +@@ -703,14 +729,20 @@ void RADEONInitTVRegisters(xf86OutputPtr output, RADEONSavePtr save, + const uint16_t *hor_timing; + const uint16_t *vert_timing; + +- + /* FIXME: need to revisit this when we add more modes */ + if (radeon_output->tvStd == TV_STD_NTSC || + radeon_output->tvStd == TV_STD_NTSC_J || +- radeon_output->tvStd == TV_STD_PAL_M) +- constPtr = &availableTVModes[0]; +- else +- constPtr = &availableTVModes[1]; ++ radeon_output->tvStd == TV_STD_PAL_M) { ++ if (pll->reference_freq == 2700) ++ constPtr = &availableTVModes[0]; ++ else ++ constPtr = &availableTVModes[2]; ++ } else { ++ if (pll->reference_freq == 2700) ++ constPtr = &availableTVModes[1]; ++ else ++ constPtr = &availableTVModes[1]; /* FIXME */ ++ } + + save->tv_crc_cntl = 0; + +@@ -796,7 +828,10 @@ void RADEONInitTVRegisters(xf86OutputPtr output, RADEONSavePtr save, + save->tv_vscaler_cntl1 = RADEON_Y_W_EN; + save->tv_vscaler_cntl1 = + (save->tv_vscaler_cntl1 & 0xe3ff0000) | (vert_space * (1 << FRAC_BITS) / 10000); +- save->tv_vscaler_cntl1 |= RADEON_RESTART_FIELD; ++ ++ if (pll->reference_freq == 2700) ++ save->tv_vscaler_cntl1 |= RADEON_RESTART_FIELD; ++ + if (constPtr->horResolution == 1024) + save->tv_vscaler_cntl1 |= (4 << RADEON_Y_DEL_W_SIG_SHIFT); + else +@@ -873,18 +908,33 @@ void RADEONInitTVRegisters(xf86OutputPtr output, RADEONSavePtr save, + #endif + + if (radeon_output->tvStd == TV_STD_NTSC || +- radeon_output->tvStd == TV_STD_NTSC_J) +- save->tv_pll_cntl = (NTSC_TV_PLL_M & RADEON_TV_M0LO_MASK) | +- (((NTSC_TV_PLL_M >> 8) & RADEON_TV_M0HI_MASK) << RADEON_TV_M0HI_SHIFT) | +- ((NTSC_TV_PLL_N & RADEON_TV_N0LO_MASK) << RADEON_TV_N0LO_SHIFT) | +- (((NTSC_TV_PLL_N >> 9) & RADEON_TV_N0HI_MASK) << RADEON_TV_N0HI_SHIFT) | +- ((NTSC_TV_PLL_P & RADEON_TV_P_MASK) << RADEON_TV_P_SHIFT); +- else +- save->tv_pll_cntl = (PAL_TV_PLL_M & RADEON_TV_M0LO_MASK) | +- (((PAL_TV_PLL_M >> 8) & RADEON_TV_M0HI_MASK) << RADEON_TV_M0HI_SHIFT) | +- ((PAL_TV_PLL_N & RADEON_TV_N0LO_MASK) << RADEON_TV_N0LO_SHIFT) | +- (((PAL_TV_PLL_N >> 9) & RADEON_TV_N0HI_MASK) << RADEON_TV_N0HI_SHIFT) | +- ((PAL_TV_PLL_P & RADEON_TV_P_MASK) << RADEON_TV_P_SHIFT); ++ radeon_output->tvStd == TV_STD_NTSC_J) { ++ if (pll->reference_freq == 2700) { ++ m = NTSC_TV_PLL_M_27; ++ n = NTSC_TV_PLL_N_27; ++ p = NTSC_TV_PLL_P_27; ++ } else { ++ m = NTSC_TV_PLL_M_14; ++ n = NTSC_TV_PLL_N_14; ++ p = NTSC_TV_PLL_P_14; ++ } ++ } else { ++ if (pll->reference_freq == 2700) { ++ m = PAL_TV_PLL_M_27; ++ n = PAL_TV_PLL_N_27; ++ p = PAL_TV_PLL_P_27; ++ } else { ++ /* FIXME */ ++ m = PAL_TV_PLL_M_27; ++ n = PAL_TV_PLL_N_27; ++ p = PAL_TV_PLL_P_27; ++ } ++ } ++ save->tv_pll_cntl = (m & RADEON_TV_M0LO_MASK) | ++ (((m >> 8) & RADEON_TV_M0HI_MASK) << RADEON_TV_M0HI_SHIFT) | ++ ((n & RADEON_TV_N0LO_MASK) << RADEON_TV_N0LO_SHIFT) | ++ (((n >> 9) & RADEON_TV_N0HI_MASK) << RADEON_TV_N0HI_SHIFT) | ++ ((p & RADEON_TV_P_MASK) << RADEON_TV_P_SHIFT); + + save->tv_pll_cntl1 = (((4 & RADEON_TVPCP_MASK)<< RADEON_TVPCP_SHIFT) | + ((4 & RADEON_TVPVG_MASK) << RADEON_TVPVG_SHIFT) | +@@ -999,14 +1049,23 @@ void RADEONAdjustCrtcRegistersForTV(ScrnInfoPtr pScrn, RADEONSavePtr save, + { + const TVModeConstants *constPtr; + RADEONOutputPrivatePtr radeon_output = output->driver_private; ++ RADEONInfoPtr info = RADEONPTR(pScrn); ++ RADEONPLLPtr pll = &info->pll; + + /* FIXME: need to revisit this when we add more modes */ + if (radeon_output->tvStd == TV_STD_NTSC || + radeon_output->tvStd == TV_STD_NTSC_J || +- radeon_output->tvStd == TV_STD_PAL_M) +- constPtr = &availableTVModes[0]; +- else +- constPtr = &availableTVModes[1]; ++ radeon_output->tvStd == TV_STD_PAL_M) { ++ if (pll->reference_freq == 2700) ++ constPtr = &availableTVModes[0]; ++ else ++ constPtr = &availableTVModes[2]; ++ } else { ++ if (pll->reference_freq == 2700) ++ constPtr = &availableTVModes[1]; ++ else ++ constPtr = &availableTVModes[1]; /* FIXME */ ++ } + + save->crtc_h_total_disp = (((constPtr->horResolution / 8) - 1) << RADEON_CRTC_H_DISP_SHIFT) | + (((constPtr->horTotal / 8) - 1) << RADEON_CRTC_H_TOTAL_SHIFT); +@@ -1030,14 +1089,23 @@ void RADEONAdjustPLLRegistersForTV(ScrnInfoPtr pScrn, RADEONSavePtr save, + unsigned postDiv; + const TVModeConstants *constPtr; + RADEONOutputPrivatePtr radeon_output = output->driver_private; ++ RADEONInfoPtr info = RADEONPTR(pScrn); ++ RADEONPLLPtr pll = &info->pll; + + /* FIXME: need to revisit this when we add more modes */ + if (radeon_output->tvStd == TV_STD_NTSC || + radeon_output->tvStd == TV_STD_NTSC_J || +- radeon_output->tvStd == TV_STD_PAL_M) +- constPtr = &availableTVModes[0]; +- else +- constPtr = &availableTVModes[1]; ++ radeon_output->tvStd == TV_STD_PAL_M) { ++ if (pll->reference_freq == 2700) ++ constPtr = &availableTVModes[0]; ++ else ++ constPtr = &availableTVModes[2]; ++ } else { ++ if (pll->reference_freq == 2700) ++ constPtr = &availableTVModes[1]; ++ else ++ constPtr = &availableTVModes[1]; /* FIXME */ ++ } + + save->htotal_cntl = (constPtr->horTotal & 0x7 /*0xf*/) | RADEON_HTOT_CNTL_VGA_EN; + +@@ -1083,14 +1151,23 @@ void RADEONAdjustCrtc2RegistersForTV(ScrnInfoPtr pScrn, RADEONSavePtr save, + { + const TVModeConstants *constPtr; + RADEONOutputPrivatePtr radeon_output = output->driver_private; ++ RADEONInfoPtr info = RADEONPTR(pScrn); ++ RADEONPLLPtr pll = &info->pll; + + /* FIXME: need to revisit this when we add more modes */ + if (radeon_output->tvStd == TV_STD_NTSC || + radeon_output->tvStd == TV_STD_NTSC_J || +- radeon_output->tvStd == TV_STD_PAL_M) +- constPtr = &availableTVModes[0]; +- else +- constPtr = &availableTVModes[1]; ++ radeon_output->tvStd == TV_STD_PAL_M) { ++ if (pll->reference_freq == 2700) ++ constPtr = &availableTVModes[0]; ++ else ++ constPtr = &availableTVModes[2]; ++ } else { ++ if (pll->reference_freq == 2700) ++ constPtr = &availableTVModes[1]; ++ else ++ constPtr = &availableTVModes[1]; /* FIXME */ ++ } + + save->crtc2_h_total_disp = (((constPtr->horResolution / 8) - 1) << RADEON_CRTC_H_DISP_SHIFT) | + (((constPtr->horTotal / 8) - 1) << RADEON_CRTC_H_TOTAL_SHIFT); +@@ -1114,14 +1191,23 @@ void RADEONAdjustPLL2RegistersForTV(ScrnInfoPtr pScrn, RADEONSavePtr save, + unsigned postDiv; + const TVModeConstants *constPtr; + RADEONOutputPrivatePtr radeon_output = output->driver_private; ++ RADEONInfoPtr info = RADEONPTR(pScrn); ++ RADEONPLLPtr pll = &info->pll; + + /* FIXME: need to revisit this when we add more modes */ + if (radeon_output->tvStd == TV_STD_NTSC || + radeon_output->tvStd == TV_STD_NTSC_J || +- radeon_output->tvStd == TV_STD_PAL_M) +- constPtr = &availableTVModes[0]; +- else +- constPtr = &availableTVModes[1]; ++ radeon_output->tvStd == TV_STD_PAL_M) { ++ if (pll->reference_freq == 2700) ++ constPtr = &availableTVModes[0]; ++ else ++ constPtr = &availableTVModes[2]; ++ } else { ++ if (pll->reference_freq == 2700) ++ constPtr = &availableTVModes[1]; ++ else ++ constPtr = &availableTVModes[1]; /* FIXME */ ++ } + + save->htotal_cntl2 = (constPtr->horTotal & 0x7); /* 0xf */ + +diff --git a/src/radeon_tv.h b/src/radeon_tv.h +index c4b7838..8d77a77 100644 +--- a/src/radeon_tv.h ++++ b/src/radeon_tv.h +@@ -27,24 +27,31 @@ + #define MAX_H_SIZE 5 /* Range: [-5..5], negative is smaller, positive is larger */ + + /* tv standard constants */ +-#define NTSC_TV_PLL_M 22 +-#define NTSC_TV_PLL_N 175 +-#define NTSC_TV_PLL_P 5 + #define NTSC_TV_CLOCK_T 233 + #define NTSC_TV_VFTOTAL 1 + #define NTSC_TV_LINES_PER_FRAME 525 + #define NTSC_TV_ZERO_H_SIZE 479166 + #define NTSC_TV_H_SIZE_UNIT 9478 + +-#define PAL_TV_PLL_M 113 +-#define PAL_TV_PLL_N 668 +-#define PAL_TV_PLL_P 3 + #define PAL_TV_CLOCK_T 188 + #define PAL_TV_VFTOTAL 3 + #define PAL_TV_LINES_PER_FRAME 625 + #define PAL_TV_ZERO_H_SIZE 473200 + #define PAL_TV_H_SIZE_UNIT 9360 + ++/* tv pll setting for 27 mhz ref clk */ ++#define NTSC_TV_PLL_M_27 22 ++#define NTSC_TV_PLL_N_27 175 ++#define NTSC_TV_PLL_P_27 5 ++ ++#define PAL_TV_PLL_M_27 113 ++#define PAL_TV_PLL_N_27 668 ++#define PAL_TV_PLL_P_27 3 ++ ++/* tv pll setting for 14 mhz ref clk */ ++#define NTSC_TV_PLL_M_14 33 ++#define NTSC_TV_PLL_N_14 693 ++#define NTSC_TV_PLL_P_14 7 + + #define VERT_LEAD_IN_LINES 2 + #define FRAC_BITS 0xe +diff --git a/src/radeon_version.h b/src/radeon_version.h +index ccc1367..5717ead 100644 +--- a/src/radeon_version.h ++++ b/src/radeon_version.h +@@ -39,10 +39,9 @@ + #define R200_DRIVER_NAME "r200" + #define R300_DRIVER_NAME "r300" + +-#define RADEON_VERSION_MAJOR 4 +-#define RADEON_VERSION_MAJOR_TILED 5 +-#define RADEON_VERSION_MINOR 3 +-#define RADEON_VERSION_PATCH 0 ++#define RADEON_VERSION_MAJOR PACKAGE_VERSION_MAJOR ++#define RADEON_VERSION_MINOR PACKAGE_VERSION_MINOR ++#define RADEON_VERSION_PATCH PACKAGE_VERSION_PATCHLEVEL + + #ifndef RADEON_VERSION_EXTRA + #define RADEON_VERSION_EXTRA "" +diff --git a/src/radeon_video.c b/src/radeon_video.c +index ac60166..6249cea 100644 +--- a/src/radeon_video.c ++++ b/src/radeon_video.c +@@ -89,10 +89,6 @@ static void RADEON_MSP_SetEncoding(RADEONPortPrivPtr pPriv); + static void RADEON_TDA9885_SetEncoding(RADEONPortPrivPtr pPriv); + static void RADEON_FI1236_SetEncoding(RADEONPortPrivPtr pPriv); + +- +- +-#define ClipValue(v,min,max) ((v) < (min) ? (min) : (v) > (max) ? (max) : (v)) +- + static Atom xvBrightness, xvColorKey, xvSaturation, xvDoubleBuffer; + static Atom xvRedIntensity, xvGreenIntensity, xvBlueIntensity; + static Atom xvContrast, xvHue, xvColor, xvAutopaintColorkey, xvSetDefaults; +@@ -106,7 +102,6 @@ static Atom xvEncoding, xvFrequency, xvVolume, xvMute, + + static Atom xvOvAlpha, xvGrAlpha, xvAlphaMode; + +- + #define GET_PORT_PRIVATE(pScrn) \ + (RADEONPortPrivPtr)((RADEONPTR(pScrn))->adaptor->pPortPrivates[0].ptr) + +@@ -245,19 +240,6 @@ radeon_crtc_clip_video(ScrnInfoPtr pScrn, + #endif + } + +-#ifdef USE_EXA +-static void +-ATIVideoSave(ScreenPtr pScreen, ExaOffscreenArea *area) +-{ +- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; +- RADEONInfoPtr info = RADEONPTR(pScrn); +- RADEONPortPrivPtr pPriv = info->adaptor->pPortPrivates[0].ptr; +- +- if (pPriv->video_memory == area) +- pPriv->video_memory = NULL; +-} +-#endif /* USE_EXA */ +- + void RADEONInitVideo(ScreenPtr pScreen) + { + ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; +@@ -1632,13 +1614,12 @@ RADEONSetupImageVideo(ScreenPtr pScreen) + + pPriv->textured = FALSE; + +- if(pPriv->theatre != NULL) +- { ++ if(pPriv->theatre != NULL) { + /* video decoder is present, extend capabilities */ + adapt->nEncodings = 13; + adapt->pEncodings = InputVideoEncodings; + adapt->type |= XvVideoMask; +- adapt->nAttributes = NUM_DEC_ATTRIBUTES; ++ adapt->nAttributes = NUM_DEC_ATTRIBUTES; + adapt->PutVideo = RADEONPutVideo; + } + +@@ -1654,8 +1635,19 @@ RADEONStopVideo(ScrnInfoPtr pScrn, pointer data, Bool cleanup) + unsigned char *RADEONMMIO = info->MMIO; + RADEONPortPrivPtr pPriv = (RADEONPortPrivPtr)data; + +- if (pPriv->textured) +- return; ++ if (pPriv->textured) { ++ if (cleanup) { ++ if (pPriv->bicubic_memory != NULL) { ++ radeon_legacy_free_memory(pScrn, pPriv->bicubic_memory); ++ pPriv->bicubic_memory = NULL; ++ } ++ if (pPriv->video_memory != NULL) { ++ radeon_legacy_free_memory(pScrn, pPriv->video_memory); ++ pPriv->video_memory = NULL; ++ } ++ } ++ return; ++ } + + REGION_EMPTY(pScrn->pScreen, &pPriv->clip); + +@@ -1675,7 +1667,7 @@ RADEONStopVideo(ScrnInfoPtr pScrn, pointer data, Bool cleanup) + if(pPriv->i2c != NULL) RADEON_board_setmisc(pPriv); + } + if (pPriv->video_memory != NULL) { +- RADEONFreeMemory(pScrn, pPriv->video_memory); ++ radeon_legacy_free_memory(pScrn, pPriv->video_memory); + pPriv->video_memory = NULL; + } + pPriv->videoStatus = 0; +@@ -1699,9 +1691,6 @@ RADEONSetPortAttribute(ScrnInfoPtr pScrn, + Bool setAlpha = FALSE; + unsigned char *RADEONMMIO = info->MMIO; + +- if (pPriv->textured) +- return BadMatch; +- + RADEON_SYNC(info, pScrn); + + #define RTFSaturation(a) (1.0 + ((a)*1.0)/1000.0) +@@ -1928,7 +1917,7 @@ RADEONSetPortAttribute(ScrnInfoPtr pScrn, + if(pPriv->fi1236!=NULL){ + xf86_fi1236_dump_status(pPriv->fi1236); + } +- } ++ } + else if(attribute == xvAdjustment) + { + pPriv->adjustment=value; +@@ -1973,9 +1962,6 @@ RADEONGetPortAttribute(ScrnInfoPtr pScrn, + RADEONInfoPtr info = RADEONPTR(pScrn); + RADEONPortPrivPtr pPriv = (RADEONPortPrivPtr)data; + +- if (pPriv->textured) +- return BadMatch; +- + if (info->accelOn) RADEON_SYNC(info, pScrn); + + if(attribute == xvAutopaintColorkey) +@@ -2433,120 +2419,13 @@ RADEONCopyMungedData( + } + } + +- +-/* Allocates memory, either by resizing the allocation pointed to by mem_struct, +- * or by freeing mem_struct (if non-NULL) and allocating a new space. The size +- * is measured in bytes, and the offset from the beginning of card space is +- * returned. +- */ +-uint32_t +-RADEONAllocateMemory( +- ScrnInfoPtr pScrn, +- void **mem_struct, +- int size +-){ +- ScreenPtr pScreen; +- RADEONInfoPtr info = RADEONPTR(pScrn); +- int offset = 0; +- +- pScreen = screenInfo.screens[pScrn->scrnIndex]; +-#ifdef USE_EXA +- if (info->useEXA) { +- ExaOffscreenArea *area = *mem_struct; +- +- if (area != NULL) { +- if (area->size >= size) +- return area->offset; +- +- exaOffscreenFree(pScrn->pScreen, area); +- } +- +- area = exaOffscreenAlloc(pScrn->pScreen, size, 64, TRUE, ATIVideoSave, +- NULL); +- *mem_struct = area; +- if (area == NULL) +- return 0; +- offset = area->offset; +- } +-#endif /* USE_EXA */ +-#ifdef USE_XAA +- if (!info->useEXA) { +- FBLinearPtr linear = *mem_struct; +- int cpp = info->CurrentLayout.bitsPerPixel / 8; +- +- /* XAA allocates in units of pixels at the screen bpp, so adjust size +- * appropriately. +- */ +- size = (size + cpp - 1) / cpp; +- +- if (linear) { +- if(linear->size >= size) +- return linear->offset * cpp; +- +- if(xf86ResizeOffscreenLinear(linear, size)) +- return linear->offset * cpp; +- +- xf86FreeOffscreenLinear(linear); +- } +- +- linear = xf86AllocateOffscreenLinear(pScreen, size, 16, +- NULL, NULL, NULL); +- *mem_struct = linear; +- +- if (!linear) { +- int max_size; +- +- xf86QueryLargestOffscreenLinear(pScreen, &max_size, 16, +- PRIORITY_EXTREME); +- +- if(max_size < size) +- return 0; +- +- xf86PurgeUnlockedOffscreenAreas(pScreen); +- linear = xf86AllocateOffscreenLinear(pScreen, size, 16, +- NULL, NULL, NULL); +- *mem_struct = linear; +- if (!linear) +- return 0; +- } +- offset = linear->offset * cpp; +- } +-#endif /* USE_XAA */ +- +- return offset; +-} +- +-void +-RADEONFreeMemory( +- ScrnInfoPtr pScrn, +- void *mem_struct +-){ +- RADEONInfoPtr info = RADEONPTR(pScrn); +- +-#ifdef USE_EXA +- if (info->useEXA) { +- ExaOffscreenArea *area = mem_struct; +- +- if (area != NULL) +- exaOffscreenFree(pScrn->pScreen, area); +- } +-#endif /* USE_EXA */ +-#ifdef USE_XAA +- if (!info->useEXA) { +- FBLinearPtr linear = mem_struct; +- +- if (linear != NULL) +- xf86FreeOffscreenLinear(linear); +- } +-#endif /* USE_XAA */ +-} +- + static void + RADEONDisplayVideo( + ScrnInfoPtr pScrn, + xf86CrtcPtr crtc, + RADEONPortPrivPtr pPriv, + int id, ++ int base_offset, + int offset1, int offset2, + int offset3, int offset4, + int offset5, int offset6, +@@ -2715,6 +2594,20 @@ RADEONDisplayVideo( + } + #endif + ++ /* Make the overlay base address as close to the buffers as possible to ++ * prevent the buffer offsets from exceeding the hardware limit of 128 MB. ++ * The base address must be aligned to a multiple of 4 MB. ++ */ ++ base_offset = ((info->fbLocation + base_offset) & (~0 << 22)) - ++ info->fbLocation; ++ ++ offset1 -= base_offset; ++ offset2 -= base_offset; ++ offset3 -= base_offset; ++ offset4 -= base_offset; ++ offset5 -= base_offset; ++ offset6 -= base_offset; ++ + /* keep everything in 16.16 */ + + if (is_planar) { +@@ -2846,6 +2739,12 @@ RADEONDisplayVideo( + src_w >>= 1; + OUTREG(RADEON_OV0_P2_X_START_END, (src_w + leftuv - 1) | (leftuv << 16)); + OUTREG(RADEON_OV0_P3_X_START_END, (src_w + leftuv - 1) | (leftuv << 16)); ++ if (info->ModeReg->ov0_base_addr != (info->fbLocation + base_offset)) { ++ ErrorF("Changing OV0_BASE_ADDR from 0x%08x to 0x%08x\n", ++ info->ModeReg->ov0_base_addr, info->fbLocation + base_offset); ++ info->ModeReg->ov0_base_addr = info->fbLocation + base_offset; ++ OUTREG(RADEON_OV0_BASE_ADDR, info->ModeReg->ov0_base_addr); ++ } + OUTREG(RADEON_OV0_VID_BUF0_BASE_ADRS, offset1); + OUTREG(RADEON_OV0_VID_BUF1_BASE_ADRS, offset2); + OUTREG(RADEON_OV0_VID_BUF2_BASE_ADRS, offset3); +@@ -3038,9 +2937,9 @@ RADEONPutImage( + if (idconv == FOURCC_YV12 || id == FOURCC_I420) { + new_size += (dstPitch >> 1) * ((height + 1) & ~1); + } +- pPriv->video_offset = RADEONAllocateMemory(pScrn, &pPriv->video_memory, +- (pPriv->doubleBuffer ? +- (new_size * 2) : new_size)); ++ pPriv->video_offset = radeon_legacy_allocate_memory(pScrn, &pPriv->video_memory, ++ (pPriv->doubleBuffer ? ++ (new_size * 2) : new_size), 64); + if (pPriv->video_offset == 0) + return BadAlloc; + +@@ -3150,9 +3049,10 @@ RADEONPutImage( + + /* FIXME: someone should look at these offsets, I don't think it makes sense how + they are handled throughout the source. */ +- RADEONDisplayVideo(pScrn, crtc, pPriv, idconv, offset, offset + d2line, offset + d3line, +- offset, offset + d2line, offset + d3line, width, height, dstPitch, +- xa, xb, ya, &dstBox, src_w, src_h, drw_w, drw_h, METHOD_BOB); ++ RADEONDisplayVideo(pScrn, crtc, pPriv, idconv, pPriv->video_offset, offset, ++ offset + d2line, offset + d3line, offset, offset + d2line, ++ offset + d3line, width, height, dstPitch, xa, xb, ya, ++ &dstBox, src_w, src_h, drw_w, drw_h, METHOD_BOB); + + pPriv->videoStatus = CLIENT_VIDEO_ON; + +@@ -3233,7 +3133,7 @@ RADEONVideoTimerCallback(ScrnInfoPtr pScrn, Time now) + } else { /* FREE_TIMER */ + if(pPriv->freeTime < now) { + if (pPriv->video_memory != NULL) { +- RADEONFreeMemory(pScrn, pPriv->video_memory); ++ radeon_legacy_free_memory(pScrn, pPriv->video_memory); + pPriv->video_memory = NULL; + } + pPriv->videoStatus = 0; +@@ -3268,7 +3168,7 @@ RADEONAllocateSurface( + pitch = ((w << 1) + 15) & ~15; + size = pitch * h; + +- offset = RADEONAllocateMemory(pScrn, &surface_memory, size); ++ offset = radeon_legacy_allocate_memory(pScrn, &surface_memory, size, 64); + if (offset == 0) + return BadAlloc; + +@@ -3276,18 +3176,18 @@ RADEONAllocateSurface( + surface->height = h; + + if(!(surface->pitches = xalloc(sizeof(int)))) { +- RADEONFreeMemory(pScrn, surface_memory); ++ radeon_legacy_free_memory(pScrn, surface_memory); + return BadAlloc; + } + if(!(surface->offsets = xalloc(sizeof(int)))) { + xfree(surface->pitches); +- RADEONFreeMemory(pScrn, surface_memory); ++ radeon_legacy_free_memory(pScrn, surface_memory); + return BadAlloc; + } + if(!(pPriv = xalloc(sizeof(OffscreenPrivRec)))) { + xfree(surface->pitches); + xfree(surface->offsets); +- RADEONFreeMemory(pScrn, surface_memory); ++ radeon_legacy_free_memory(pScrn, surface_memory); + return BadAlloc; + } + +@@ -3328,7 +3228,8 @@ RADEONFreeSurface( + + if(pPriv->isOn) + RADEONStopSurface(surface); +- RADEONFreeMemory(pScrn, pPriv->surface_memory); ++ radeon_legacy_free_memory(pScrn, pPriv->surface_memory); ++ pPriv->surface_memory = NULL; + xfree(surface->pitches); + xfree(surface->offsets); + xfree(surface->devPrivate.ptr); +@@ -3417,8 +3318,9 @@ RADEONDisplaySurface( + surface->offsets[0], surface->offsets[0], + surface->offsets[0], surface->offsets[0], + surface->offsets[0], surface->offsets[0], +- surface->width, surface->height, surface->pitches[0], +- xa, xb, ya, &dstBox, src_w, src_h, drw_w, drw_h, METHOD_BOB); ++ surface->offsets[0], surface->width, surface->height, ++ surface->pitches[0], xa, xb, ya, &dstBox, src_w, src_h, ++ drw_w, drw_h, METHOD_BOB); + + if (portPriv->autopaint_colorkey) + xf86XVFillKeyHelper(pScrn->pScreen, portPriv->colorKey, clipBoxes); +@@ -3602,9 +3504,9 @@ RADEONPutVideo( + if (pPriv->capture_vbi_data) + alloc_size += 2 * 2 * vbi_line_width * 21; + +- pPriv->video_offset = RADEONAllocateMemory(pScrn, &pPriv->video_memory, +- (pPriv->doubleBuffer ? +- (new_size * 2) : new_size)); ++ pPriv->video_offset = radeon_legacy_allocate_memory(pScrn, &pPriv->video_memory, ++ (pPriv->doubleBuffer ? ++ (new_size * 2) : new_size), 64); + if (pPriv->video_offset == 0) + return BadAlloc; + +@@ -3705,10 +3607,12 @@ RADEONPutVideo( + RADEONFillKeyHelper(pDraw, pPriv->colorKey, clipBoxes); + } + +- RADEONDisplayVideo(pScrn, crtc, pPriv, id, offset1+top*srcPitch, offset2+top*srcPitch, +- offset3+top*srcPitch, offset4+top*srcPitch, offset1+top*srcPitch, +- offset2+top*srcPitch, width, height, dstPitch*mult/2, +- xa, xb, ya, &dstBox, src_w, src_h*mult/2, drw_w, drw_h, pPriv->overlay_deinterlacing_method); ++ RADEONDisplayVideo(pScrn, crtc, pPriv, id, pPriv->video_offset, ++ offset1+top*srcPitch, offset2+top*srcPitch, ++ offset3+top*srcPitch, offset4+top*srcPitch, ++ offset1+top*srcPitch, offset2+top*srcPitch, width, height, ++ dstPitch*mult/2, xa, xb, ya, &dstBox, src_w, src_h*mult/2, ++ drw_w, drw_h, pPriv->overlay_deinterlacing_method); + + RADEONWaitForFifo(pScrn, 1); + OUTREG(RADEON_OV0_REG_LOAD_CNTL, RADEON_REG_LD_CTL_LOCK); +diff --git a/src/radeon_video.h b/src/radeon_video.h +index 096de37..11b8029 100644 +--- a/src/radeon_video.h ++++ b/src/radeon_video.h +@@ -13,6 +13,10 @@ + + #include "xf86Crtc.h" + ++#include "bicubic_table.h" ++ ++#define ClipValue(v,min,max) ((v) < (min) ? (min) : (v) > (max) ? (max) : (v)) ++ + /* Xvideo port struct */ + typedef struct { + uint32_t transform_index; +@@ -37,7 +41,7 @@ typedef struct { + uint32_t radeon_N; + uint32_t i2c_status; + uint32_t i2c_cntl; +- ++ + FI1236Ptr fi1236; + uint8_t tuner_type; + MSP3430Ptr msp3430; +@@ -46,7 +50,7 @@ typedef struct { + + /* VIP bus and devices */ + GENERIC_BUS_Ptr VIP; +- TheatrePtr theatre; ++ TheatrePtr theatre; + + Bool video_stream_active; + int encoding; +@@ -56,7 +60,7 @@ typedef struct { + int sap_channel; + int v; + uint32_t adjustment; /* general purpose variable */ +- ++ + #define METHOD_BOB 0 + #define METHOD_SINGLE 1 + #define METHOD_WEAVE 2 +@@ -82,13 +86,16 @@ typedef struct { + xf86CrtcPtr desired_crtc; + + int size; +-#ifdef USE_EXA +- ExaOffscreenArea *off_screen; +-#endif + + void *video_memory; + int video_offset; + ++ /* bicubic filtering */ ++ void *bicubic_memory; ++ int bicubic_offset; ++ Bool bicubic_enabled; ++ uint32_t bicubic_src_offset; ++ + Atom device_id, location_id, instance_id; + + /* textured video */ +@@ -106,18 +113,12 @@ typedef struct { + int drw_x, drw_y; + } RADEONPortPrivRec, *RADEONPortPrivPtr; + +- + void RADEONInitI2C(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv); + void RADEONResetI2C(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv); + + void RADEONVIP_init(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv); + void RADEONVIP_reset(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv); + +-uint32_t +-RADEONAllocateMemory(ScrnInfoPtr pScrn, void **mem_struct, int size); +-void +-RADEONFreeMemory(ScrnInfoPtr pScrn, void *mem_struct); +- + int RADEONSetPortAttribute(ScrnInfoPtr, Atom, INT32, pointer); + int RADEONGetPortAttribute(ScrnInfoPtr, Atom ,INT32 *, pointer); + void RADEONStopVideo(ScrnInfoPtr, pointer, Bool); diff --git a/abs/core-testing/xf86-video-ati/mesa-7.1-link-shared.patch b/abs/core-testing/xf86-video-ati/mesa-7.1-link-shared.patch new file mode 100644 index 0000000..7fdbf14 --- /dev/null +++ b/abs/core-testing/xf86-video-ati/mesa-7.1-link-shared.patch @@ -0,0 +1,102 @@ +diff -up mesa-20080814/src/mesa/drivers/dri/Makefile.dricore mesa-20080814/src/mesa/drivers/dri/Makefile +--- mesa-20080814/src/mesa/drivers/dri/Makefile.dricore 2008-08-14 02:28:38.000000000 +1000 ++++ mesa-20080814/src/mesa/drivers/dri/Makefile 2008-08-14 16:18:20.000000000 +1000 +@@ -6,12 +6,17 @@ include $(TOP)/configs/current + + + +-default: $(TOP)/$(LIB_DIR) subdirs ++default: $(TOP)/$(LIB_DIR) $(TOP)/$(LIB_DIR)/libdricore.so subdirs + + + $(TOP)/$(LIB_DIR): + -mkdir $(TOP)/$(LIB_DIR) + ++libdricore.so: ++ gcc -shared -o libdricore.so -Wl,--whole-archive ../../libmesa.a -Wl,--no-whole-archive -lm -lpthread -lc ++ ++$(TOP)/$(LIB_DIR)/libdricore.so: $(TOP)/$(LIB_DIR) libdricore.so ++ $(INSTALL) libdricore.so $(TOP)/$(LIB_DIR) + + subdirs: + @for dir in $(DRI_DIRS) ; do \ +@@ -31,12 +36,14 @@ dri.pc: dri.pc.in + $(pcedit) $< > $@ + + +-install: dri.pc ++install: dri.pc $(TOP)/$(LIB_DIR)/libdricore.so + @for dir in $(DRI_DIRS) ; do \ + if [ -d $$dir ] ; then \ + (cd $$dir && $(MAKE) install) || exit 1 ; \ + fi \ + done ++ $(INSTALL) -d $(DESTDIR)$(DRI_DRIVER_INSTALL_DIR) ++ $(INSTALL) -m 755 $(TOP)/$(LIB_DIR)/libdricore.so $(DESTDIR)$(DRI_DRIVER_INSTALL_DIR) + $(INSTALL) -d $(DESTDIR)$(INSTALL_INC_DIR)/GL/internal + $(INSTALL) -m 0644 $(TOP)/include/GL/internal/dri_interface.h \ + $(DESTDIR)$(INSTALL_INC_DIR)/GL/internal +@@ -52,5 +59,6 @@ clean: + (cd $$dir && $(MAKE) clean) ; \ + fi \ + done ++ -rm -f libdricore.so $(TOP)/$(LIB_DIR)/libdricore.so + -rm -f common/*.o + -rm -f *.pc +diff -up mesa-20080814/src/mesa/drivers/dri/Makefile.template.dricore mesa-20080814/src/mesa/drivers/dri/Makefile.template +--- mesa-20080814/src/mesa/drivers/dri/Makefile.template.dricore 2008-08-14 02:28:38.000000000 +1000 ++++ mesa-20080814/src/mesa/drivers/dri/Makefile.template 2008-08-14 16:19:37.000000000 +1000 +@@ -1,6 +1,6 @@ + # -*-makefile-*- + +-MESA_MODULES = $(TOP)/src/mesa/libmesa.a ++MESA_MODULES = $(TOP)/$(LIB_DIR)/libdricore.so + + COMMON_SOURCES = \ + ../common/utils.c \ +@@ -64,7 +64,9 @@ default: symlinks depend $(LIBNAME) $(TO + + $(LIBNAME): $(OBJECTS) $(MESA_MODULES) $(WINOBJ) Makefile $(TOP)/src/mesa/drivers/dri/Makefile.template + $(MKLIB) -o $@ -noprefix -linker '$(CC)' -ldflags '$(LDFLAGS)' \ +- $(OBJECTS) $(MESA_MODULES) $(WINOBJ) $(DRI_LIB_DEPS) ++ $(OBJECTS) $(WINOBJ) \ ++ -L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) -ldricore \ ++ $(DRI_LIB_DEPS) + + + $(TOP)/$(LIB_DIR)/$(LIBNAME): $(LIBNAME) +diff -up mesa-20080814/src/mesa/x86/read_rgba_span_x86.S.dricore mesa-20080814/src/mesa/x86/read_rgba_span_x86.S +--- mesa-20080814/src/mesa/x86/read_rgba_span_x86.S.dricore 2008-08-14 02:28:38.000000000 +1000 ++++ mesa-20080814/src/mesa/x86/read_rgba_span_x86.S 2008-08-14 16:16:49.000000000 +1000 +@@ -77,7 +77,6 @@ + */ + + .globl _generic_read_RGBA_span_BGRA8888_REV_MMX +-.hidden _generic_read_RGBA_span_BGRA8888_REV_MMX + .type _generic_read_RGBA_span_BGRA8888_REV_MMX, @function + _generic_read_RGBA_span_BGRA8888_REV_MMX: + pushl %ebx +@@ -172,7 +171,6 @@ _generic_read_RGBA_span_BGRA8888_REV_MMX + */ + + .globl _generic_read_RGBA_span_BGRA8888_REV_SSE +-.hidden _generic_read_RGBA_span_BGRA8888_REV_SSE + .type _generic_read_RGBA_span_BGRA8888_REV_SSE, @function + _generic_read_RGBA_span_BGRA8888_REV_SSE: + pushl %esi +@@ -335,7 +333,6 @@ _generic_read_RGBA_span_BGRA8888_REV_SSE + + .text + .globl _generic_read_RGBA_span_BGRA8888_REV_SSE2 +-.hidden _generic_read_RGBA_span_BGRA8888_REV_SSE2 + .type _generic_read_RGBA_span_BGRA8888_REV_SSE2, @function + _generic_read_RGBA_span_BGRA8888_REV_SSE2: + pushl %esi +@@ -494,7 +491,6 @@ _generic_read_RGBA_span_BGRA8888_REV_SSE + + .text + .globl _generic_read_RGBA_span_RGB565_MMX +- .hidden _generic_read_RGBA_span_RGB565_MMX + .type _generic_read_RGBA_span_RGB565_MMX, @function + + _generic_read_RGBA_span_RGB565_MMX: diff --git a/abs/core-testing/xf86-video-chips/PKGBUILD b/abs/core-testing/xf86-video-chips/PKGBUILD index 60161c3..f63366d 100644 --- a/abs/core-testing/xf86-video-chips/PKGBUILD +++ b/abs/core-testing/xf86-video-chips/PKGBUILD @@ -1,22 +1,23 @@ -# $Id: PKGBUILD 3258 2008-06-21 18:34:07Z jgc $ +# $Id: PKGBUILD 22287 2008-12-25 17:17:00Z jgc $ # Maintainer: Alexander Baldeck <alexander@archlinux.org> # Contributor: Jan de Groot <jgc@archlinux.org> pkgname=xf86-video-chips -pkgver=1.2.0 +pkgver=1.2.1 pkgrel=1 pkgdesc="X.org Chips and Technologies video driver" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" depends=(glibc) -makedepends=('pkgconfig' 'xorg-server>=1.4.0.90') +makedepends=('pkgconfig' 'xorg-server>=1.5.3') +conflicts=('xorg-server<1.5.3') groups=('xorg-video-drivers') options=('!libtool') source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) +md5sums=('2f2643fca6335f18024bffa6c4e0c12f') build() { - cd ${startdir}/src/${pkgname}-${pkgver} + cd "${srcdir}/${pkgname}-${pkgver}" ./configure --prefix=/usr make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 + make DESTDIR="${pkgdir}" install || return 1 } -md5sums=('0fec6bee65383790485d917247a61629') diff --git a/abs/core-testing/xf86-video-cirrus/PKGBUILD b/abs/core-testing/xf86-video-cirrus/PKGBUILD index 02aecfc..4527182 100644 --- a/abs/core-testing/xf86-video-cirrus/PKGBUILD +++ b/abs/core-testing/xf86-video-cirrus/PKGBUILD @@ -1,14 +1,15 @@ -# $Id: PKGBUILD 3247 2008-06-21 18:15:30Z jgc $ +# $Id: PKGBUILD 11420 2008-08-31 15:22:15Z jgc $ #Maintainer: Jan de Groot <jgc@archlinux.org> pkgname=xf86-video-cirrus pkgver=1.2.1 -pkgrel=1 +pkgrel=2 pkgdesc="X.org Cirrus Logic video driver" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" depends=('glibc') -makedepends=('pkgconfig' 'xorg-server>=1.4.2') +makedepends=('pkgconfig' 'xorg-server>=1.4.99.906') +conflicts=('xorg-server<1.4.99.906') groups=('xorg-video-drivers') options=('!libtool') source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) diff --git a/abs/core-testing/xf86-video-dummy/PKGBUILD b/abs/core-testing/xf86-video-dummy/PKGBUILD index 51763f6..b060c9c 100644 --- a/abs/core-testing/xf86-video-dummy/PKGBUILD +++ b/abs/core-testing/xf86-video-dummy/PKGBUILD @@ -1,23 +1,23 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 11419 2008-08-31 15:22:13Z jgc $ #Maintainer: Jan de Groot <jgc@archlinux.org> pkgname=xf86-video-dummy -pkgver=0.2.0 -pkgrel=4 +pkgver=0.3.0 +pkgrel=1 pkgdesc="X.org dummy video driver" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" depends=('glibc') -makedepends=('pkgconfig' 'xorg-server>=1.1.1') +makedepends=('pkgconfig' 'xorg-server>=1.4.99.906') +conflicts=('xorg-server<1.4.99.906') groups=('xorg-video-drivers') options=('!libtool') source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) -md5sums=('22b7cc20a33443cbd218bd2521850cfe') +md5sums=('3d96297556846bee02a74166ffb5d052') build() { cd ${startdir}/src/${pkgname}-${pkgver} - ./configure --prefix=/usr \ - --build=${CHOST} --host=${CHOST} + ./configure --prefix=/usr || return 1 make || return 1 make DESTDIR=${startdir}/pkg install || return 1 } diff --git a/abs/core-testing/xf86-video-fbdev/PKGBUILD b/abs/core-testing/xf86-video-fbdev/PKGBUILD index c5d835c..05bcbca 100644 --- a/abs/core-testing/xf86-video-fbdev/PKGBUILD +++ b/abs/core-testing/xf86-video-fbdev/PKGBUILD @@ -1,23 +1,26 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 11425 2008-08-31 15:24:08Z jgc $ #Maintainer: Jan de Groot <jgc@archlinux.org> pkgname=xf86-video-fbdev -pkgver=0.3.1 -pkgrel=4 +pkgver=0.4.0 +pkgrel=1 pkgdesc="X.org framebuffer video driver" arch=(i686 x86_64) +license=('custom') url="http://xorg.freedesktop.org/" depends=('glibc') -makedepends=('pkgconfig' 'xorg-server>=1.1.1') +makedepends=('pkgconfig' 'xorg-server>=1.4.99.906') +conflicts=('xorg-server<1.4.99.906') groups=('xorg-video-drivers') options=('!libtool') source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) -md5sums=('9ae810c6c6c3c9713a67866fe794d4ff') +md5sums=('6572b39fec77b8e6de1c858a93992924') build() { cd ${startdir}/src/${pkgname}-${pkgver} - ./configure --prefix=/usr \ - --build=${CHOST} --host=${CHOST} + ./configure --prefix=/usr || return 1 make || return 1 make DESTDIR=${startdir}/pkg install || return 1 + install -m755 -d ${pkgdir}/usr/share/licenses/${pkgname} + install -m644 COPYING ${pkgdir}/usr/share/licenses/${pkgname}/ || return 1 } diff --git a/abs/core-testing/xf86-video-glint/PKGBUILD b/abs/core-testing/xf86-video-glint/PKGBUILD index 15c0dce..f52d528 100644 --- a/abs/core-testing/xf86-video-glint/PKGBUILD +++ b/abs/core-testing/xf86-video-glint/PKGBUILD @@ -1,23 +1,23 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 22285 2008-12-25 17:13:14Z jgc $ # Maintainer: Alexander Baldeck <alexander@archlinux.org> # Contributor: Jan de Groot <jgc@archlinux.org> pkgname=xf86-video-glint -pkgver=1.1.1 -pkgrel=5 +pkgver=1.2.2 +pkgrel=1 pkgdesc="X.org GLINT/Permedia video driver" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" depends=('glibc') -makedepends=('pkgconfig' 'xorg-server>=1.3.99.2' 'xf86driproto' 'mesa') +makedepends=('pkgconfig' 'xorg-server>=1.5.3') +conflicts=('xorg-server<1.5.3') options=('!libtool') groups=('xorg-video-drivers') source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) +md5sums=('4295a46a75fa98470c6dfb0e1a4f7e9f') build() { - cd ${startdir}/src/${pkgname}-${pkgver} - ./configure --prefix=/usr \ - --build=${CHOST} --host=${CHOST} + cd "${srcdir}/${pkgname}-${pkgver}" + ./configure --prefix=/usr || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 + make DESTDIR="${pkgdir}" install || return 1 } -md5sums=('2cf49f701024a145bd25aff9da11d479') diff --git a/abs/core-testing/xf86-video-i128/PKGBUILD b/abs/core-testing/xf86-video-i128/PKGBUILD index fcf2c06..2c98984 100644 --- a/abs/core-testing/xf86-video-i128/PKGBUILD +++ b/abs/core-testing/xf86-video-i128/PKGBUILD @@ -1,23 +1,23 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 11431 2008-08-31 15:26:32Z jgc $ # Maintainer: Alexander Baldeck <alexander@archlinux.org> # Contributor: Jan de Groot <jgc@archlinux.org> pkgname=xf86-video-i128 -pkgver=1.2.1 -pkgrel=4 +pkgver=1.3.0 +pkgrel=1 pkgdesc="X.org Number 9 I128 video driver" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" depends=('glibc') -makedepends=('pkgconfig' 'xorg-server>=1.2.0') +makedepends=('pkgconfig' 'xorg-server>=1.4.99.906') +conflicts=('xorg-server<1.4.99.906') groups=('xorg-video-drivers') options=('!libtool') source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) +md5sums=('aff4922d2f02bad7e0d8649358edbcee') build() { cd ${startdir}/src/${pkgname}-${pkgver} - ./configure --prefix=/usr \ - --build=${CHOST} --host=${CHOST} + ./configure --prefix=/usr || return 1 make || return 1 make DESTDIR=${startdir}/pkg install || return 1 } -md5sums=('d0080732eaa15059b0a953aa3522185a') diff --git a/abs/core-testing/xf86-video-i740/PKGBUILD b/abs/core-testing/xf86-video-i740/PKGBUILD index 9101847..3e0fd57 100644 --- a/abs/core-testing/xf86-video-i740/PKGBUILD +++ b/abs/core-testing/xf86-video-i740/PKGBUILD @@ -1,23 +1,22 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 11440 2008-08-31 15:37:53Z jgc $ #Maintainer: Jan de Groot <jgc@archlinux.org> pkgname=xf86-video-i740 -pkgver=1.1.0 -pkgrel=4 +pkgver=1.2.0 +pkgrel=1 pkgdesc="X.org Intel i740 video driver" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" depends=('glibc') -makedepends=('pkgconfig' 'xorg-server>=1.1.1') +makedepends=('pkgconfig' 'xorg-server>=1.4.99.906') groups=('xorg-video-drivers') options=('!libtool') source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) -md5sums=('57302e225060a7286ae1a970c87a589b') +md5sums=('d0e5a805c546b29b1dd3b55a68d16dc4') build() { cd ${startdir}/src/${pkgname}-${pkgver} - ./configure --prefix=/usr \ - --build=${CHOST} --host=${CHOST} + ./configure --prefix=/usr || return 1 make || return 1 make DESTDIR=${startdir}/pkg install || return 1 } diff --git a/abs/core-testing/xf86-video-intel/20_thinkpad_g40_quirk.patch b/abs/core-testing/xf86-video-intel/20_thinkpad_g40_quirk.patch new file mode 100644 index 0000000..c2c72a7 --- /dev/null +++ b/abs/core-testing/xf86-video-intel/20_thinkpad_g40_quirk.patch @@ -0,0 +1,18 @@ +diff -Nurp xserver-xorg-video-intel-2.3.1-patched/src/i830_quirks.c xserver-xorg-video-intel-2.3.1-working/src/i830_quirks.c +--- xserver-xorg-video-intel-2.3.1-patched/src/i830_quirks.c 2008-06-20 00:05:23.000000000 -0700 ++++ xserver-xorg-video-intel-2.3.1-working/src/i830_quirks.c 2008-06-20 00:20:19.000000000 -0700 +@@ -266,9 +266,13 @@ static i830_quirk i830_quirk_list[] = { + /* HP Compaq 6730s has no TV output */ + { PCI_CHIP_IGD_GM, 0x103c, 0x30e8, quirk_ignore_tv }, + ++ /* Thinkpad G40 needs pipe A force quirk (See LP: #240457) */ ++ { PCI_CHIP_I855_GM, 0x1014, 0x0543, quirk_pipea_force }, + /* Thinkpad R31 needs pipe A force quirk */ + { PCI_CHIP_I830_M, 0x1014, 0x0505, quirk_pipea_force }, +- /* Dell Latitude D400 needs pipe A force quirk (LP: #228519) */ ++ /* Dell Latitude C400 needs pipe A force quirk (See LP: #216490) */ ++ { PCI_CHIP_I855_GM, 0x1028, 0x00c8, quirk_pipea_force }, ++ /* Dell Latitude D400 needs pipe A force quirk (See LP: #228519) */ + { PCI_CHIP_I855_GM, 0x1028, 0x0139, quirk_pipea_force }, + /* Dell Latitude D500 needs pipe A force quirk */ + { PCI_CHIP_I855_GM, 0x1028, 0x0152, quirk_pipea_force }, diff --git a/abs/core-testing/xf86-video-intel/21_quirk_lenovo.patch b/abs/core-testing/xf86-video-intel/21_quirk_lenovo.patch new file mode 100644 index 0000000..8479a40 --- /dev/null +++ b/abs/core-testing/xf86-video-intel/21_quirk_lenovo.patch @@ -0,0 +1,12 @@ +diff -Nurp xserver-xorg-video-intel-2.3.2-1ubuntu2-patched/src/i830_quirks.c xserver-xorg-video-intel-2.3.2-1ubuntu2-working/src/i830_quirks.c +--- xserver-xorg-video-intel-2.3.2-1ubuntu2-patched/src/i830_quirks.c 2008-06-26 20:21:14.000000000 -0700 ++++ xserver-xorg-video-intel-2.3.2-1ubuntu2-working/src/i830_quirks.c 2008-06-26 20:30:23.000000000 -0700 +@@ -242,6 +242,8 @@ static i830_quirk i830_quirk_list[] = { + + /* Lenovo Napa TV (use dmi)*/ + { PCI_CHIP_I945_GM, 0x17aa, SUBSYS_ANY, quirk_lenovo_tv_dmi }, ++ /* Lenovo T60/R60 needs pipe A force quirk (See LP: #243405) */ ++ { PCI_CHIP_I945_GM, 0x17aa, 0x201a, quirk_pipea_force }, + /* Lenovo T61 has no TV output */ + { PCI_CHIP_I965_GM, 0x17aa, 0x20b5, quirk_ignore_tv }, + /* Lenovo 3000 v200 */ diff --git a/abs/core-testing/xf86-video-intel/23_quirks_studiohybrid_eeepc_and_w251u.patch b/abs/core-testing/xf86-video-intel/23_quirks_studiohybrid_eeepc_and_w251u.patch new file mode 100644 index 0000000..d82923f --- /dev/null +++ b/abs/core-testing/xf86-video-intel/23_quirks_studiohybrid_eeepc_and_w251u.patch @@ -0,0 +1,13 @@ +diff -Nurp xserver-xorg-video-intel-2.4.1-patched/src/i830_quirks.c xserver-xorg-video-intel-2.4.1-working/src/i830_quirks.c +--- xserver-xorg-video-intel-2.4.1-patched/src/i830_quirks.c 2008-09-08 20:12:28.000000000 -0700 ++++ xserver-xorg-video-intel-2.4.1-working/src/i830_quirks.c 2008-09-08 21:02:53.000000000 -0700 +@@ -312,6 +317,9 @@ static i830_quirk i830_quirk_list[] = { + /* Sony vaio VGN-SZ4MN (See LP: #212163) */ + { PCI_CHIP_I830_M, 0x104d, 0x81e6, quirk_pipea_force }, + ++ /* Quanta Gigabyte W251U (See LP: #244242) */ ++ { PCI_CHIP_I945_GM, 0x152d, 0x0755, quirk_pipea_force }, ++ + /* Ordi Enduro UW31 (See LP: #152416) */ + { PCI_CHIP_I945_GM, 0x1584, 0x9900, quirk_ignore_tv }, + diff --git a/abs/core-testing/xf86-video-intel/25_quirk_nc6110.patch b/abs/core-testing/xf86-video-intel/25_quirk_nc6110.patch new file mode 100644 index 0000000..a6db410 --- /dev/null +++ b/abs/core-testing/xf86-video-intel/25_quirk_nc6110.patch @@ -0,0 +1,13 @@ +diff --git a/src/i830_quirks.c b/src/i830_quirks.c +index 089e458..09b7c53 100644 +--- a/src/i830_quirks.c ++++ b/src/i830_quirks.c +@@ -278,6 +278,8 @@ static i830_quirk i830_quirk_list[] = { + /* Samsung Q45 has no TV output */ + { PCI_CHIP_I965_GM, 0x144d, 0xc510, quirk_ignore_tv }, + ++ /* HP Compaq nx6110 has no TV output */ ++ { PCI_CHIP_I915_GM, 0x103c, 0x099c, quirk_ignore_tv }, + /* HP Compaq 6730s has no TV output */ + { PCI_CHIP_GM45_GM, 0x103c, 0x30e8, quirk_ignore_tv }, + diff --git a/abs/core-testing/xf86-video-intel/26_i830-use-lfp-data-ptrs.patch b/abs/core-testing/xf86-video-intel/26_i830-use-lfp-data-ptrs.patch new file mode 100644 index 0000000..d74b809 --- /dev/null +++ b/abs/core-testing/xf86-video-intel/26_i830-use-lfp-data-ptrs.patch @@ -0,0 +1,63 @@ +diff -Nurp patched/src/bios_reader/bios_reader.c working/src/bios_reader/bios_reader.c +--- patched/src/bios_reader/bios_reader.c 2008-10-16 14:06:07.000000000 -0700 ++++ working/src/bios_reader/bios_reader.c 2008-10-16 14:25:07.000000000 -0700 +@@ -180,6 +180,19 @@ static void dump_lvds_options(void *data + printf("\tPFIT mode: %d\n", options->pfit_mode); + } + ++static void dump_lvds_ptr_data(void *data, unsigned char *base) ++{ ++ struct bdb_lvds_lfp_data_ptrs *ptrs = data; ++ ++ struct lvds_fp_timing *fp_timing = ++ (struct lvds_fp_timing *)(base + ptrs->ptr[panel_type].fp_timing_offset); ++ ++ printf("LVDS timing pointer data:\n"); ++ ++ printf("\tpanel type %02i: %dx%d\n", panel_type, fp_timing->x_res, ++ fp_timing->y_res); ++} ++ + static void dump_lvds_data(void *data, unsigned char *base) + { + struct bdb_lvds_lfp_data *lvds_data = data; +@@ -274,6 +287,8 @@ int main(int argc, char **argv) + dump_general_definitions(find_section(bdb, BDB_GENERAL_DEFINITIONS)); + dump_lvds_options(find_section(bdb, BDB_LVDS_OPTIONS)); + dump_lvds_data(find_section(bdb, BDB_LVDS_LFP_DATA), bdb); ++ dump_lvds_ptr_data(find_section(bdb, BDB_LVDS_LFP_DATA_PTRS), ++ (unsigned char *)bdb); + + return 0; + } +diff -Nurp patched/src/i830_bios.c working/src/i830_bios.c +--- patched/src/i830_bios.c 2008-10-16 14:06:07.000000000 -0700 ++++ working/src/i830_bios.c 2008-10-16 14:27:15.000000000 -0700 +@@ -89,7 +89,8 @@ parse_panel_data(I830Ptr pI830, struct b + { + struct bdb_lvds_options *lvds_options; + struct bdb_lvds_lfp_data *lvds_lfp_data; +- struct bdb_lvds_lfp_data_entry *entry; ++ struct bdb_lvds_lfp_data_ptrs *lvds_lfp_data_ptrs; ++ int timing_offset; + DisplayModePtr fixed_mode; + unsigned char *timing_ptr; + +@@ -104,12 +105,13 @@ parse_panel_data(I830Ptr pI830, struct b + if (lvds_options->panel_type == 0xff) + return; + +- lvds_lfp_data = find_section(bdb, BDB_LVDS_LFP_DATA); +- if (!lvds_lfp_data) ++ lvds_lfp_data_ptrs = find_section(bdb, BDB_LVDS_LFP_DATA_PTRS); ++ if (!lvds_lfp_data_ptrs) + return; + +- entry = &lvds_lfp_data->data[lvds_options->panel_type]; +- timing_ptr = (unsigned char *)&entry->dvo_timing; ++ timing_offset = ++ lvds_lfp_data_ptrs->ptr[lvds_options->panel_type].dvo_timing_offset; ++ timing_ptr = (unsigned char *)bdb + timing_offset; + + fixed_mode = xnfalloc(sizeof(DisplayModeRec)); + memset(fixed_mode, 0, sizeof(*fixed_mode)); diff --git a/abs/core-testing/xf86-video-intel/27_disable_fbc_on_965.patch b/abs/core-testing/xf86-video-intel/27_disable_fbc_on_965.patch new file mode 100644 index 0000000..cc881b9 --- /dev/null +++ b/abs/core-testing/xf86-video-intel/27_disable_fbc_on_965.patch @@ -0,0 +1,18 @@ +diff --git a/src/i830.h b/src/i830.h +index 5b78236..89f19d2 100644 +--- a/src/i830.h ++++ b/src/i830.h +@@ -950,6 +950,13 @@ static inline int i830_fb_compression_supported(I830Ptr pI830) + */ + if (!pI830->tiling || (IS_I965G(pI830) && pI830->accel <= ACCEL_XAA)) + return FALSE; ++ /* We have not gotten FBC to work consistently on 965GM. Our best ++ * working theory right now is that FBC simply isn't reliable on ++ * that device. See this bug report for more details: ++ * https://bugs.freedesktop.org/show_bug.cgi?id=16257 ++ */ ++ if (IS_I965GM(pI830)) ++ return FALSE; + return TRUE; + } + diff --git a/abs/core-testing/xf86-video-intel/PKGBUILD b/abs/core-testing/xf86-video-intel/PKGBUILD index 106ec41..3530b90 100644 --- a/abs/core-testing/xf86-video-intel/PKGBUILD +++ b/abs/core-testing/xf86-video-intel/PKGBUILD @@ -1,25 +1,43 @@ -# $Id: PKGBUILD 3246 2008-06-21 18:13:57Z jgc $ +# $Id: PKGBUILD 19083 2008-11-14 21:09:00Z jgc $ # Maintainer: Alexander Baldeck <alexander@archlinux.org> +# Maintainer: Jan de Groot <jgc@archlinux.org> pkgname=xf86-video-intel -pkgver=2.3.2 +pkgver=2.4.3 pkgrel=1 -pkgdesc="X.org Intel i810/i830/i915 video drivers" +pkgdesc="X.org Intel i810/i830/i915/945G/G965+ video drivers" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" -depends=('intel-dri' 'libdrm') -makedepends=('pkgconfig' 'xorg-server>=1.4.2' 'xorg-util-macros' 'xf86driproto>=2.0.4' 'glproto>=1.4.9' 'mesa>=7.0.3') - -options=('!libtool') +depends=('intel-dri>=7.2' 'libpciaccess>=0.10.5' 'libdrm>=2.3.1') +makedepends=('pkgconfig' 'xorg-server>=1.5.3' 'xf86driproto>=2.0.4' 'glproto>=1.4.9' 'mesa>=7.2' 'libdrm=2.3.1') +conflicts=('xorg-server<1.5.3' 'xf86-video-i810') +replaces=('xf86-video-i810') +options=('!libtool' 'force') groups=('xorg-video-drivers') -source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) -md5sums=('fef32ffc428d9d565ab10b338ce17855') +source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2 + 20_thinkpad_g40_quirk.patch + 21_quirk_lenovo.patch + 23_quirks_studiohybrid_eeepc_and_w251u.patch + 25_quirk_nc6110.patch + 26_i830-use-lfp-data-ptrs.patch + 27_disable_fbc_on_965.patch) +md5sums=('a664819288b98a37f77ab6ae1e14c9d9' + '68a362a168ffa4f37d9f722f43855468' + '2d617364ac2e47ca366901d0b849b1a1' + '3d0f8e593e8eac3000154feb6b0f45b8' + '3deb800906e6845e8576d4e9d0f22b12' + 'cb7ee7a68858c038020e0cd991143d8e' + 'd215e428585c6e55aefd9f525ebfbe7b') build() { - cd ${startdir}/src/${pkgname}-${pkgver} + cd "${srcdir}/${pkgname}-${pkgver}" + patch -Np1 -i "${srcdir}/20_thinkpad_g40_quirk.patch" || return 1 + patch -Np1 -i "${srcdir}/21_quirk_lenovo.patch" || return 1 + patch -Np1 -i "${srcdir}/23_quirks_studiohybrid_eeepc_and_w251u.patch" || return 1 + patch -Np1 -i "${srcdir}/25_quirk_nc6110.patch" || return 1 + patch -Np1 -i "${srcdir}/26_i830-use-lfp-data-ptrs.patch" || return 1 + patch -Np1 -i "${srcdir}/27_disable_fbc_on_965.patch" || return 1 ./configure --prefix=/usr \ --enable-dri || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 - rm -f ${startdir}/pkg/usr/lib/xorg/modules/drivers/i810_drv.so - rm -f ${startdir}/pkg/usr/share/man/man4/i810.4* + make DESTDIR="${pkgdir}" install || return 1 } diff --git a/abs/core-testing/xf86-video-mach64/PKGBUILD b/abs/core-testing/xf86-video-mach64/PKGBUILD new file mode 100644 index 0000000..ed91461 --- /dev/null +++ b/abs/core-testing/xf86-video-mach64/PKGBUILD @@ -0,0 +1,48 @@ +# $Id: PKGBUILD 13016 2008-09-25 18:54:26Z jgc $ +# Maintainer: Jan de Groot <jgc@archlinux.org> +pkgname=xf86-video-mach64 +pkgver=6.8.0 +pkgrel=2 +_mesaver="7.2" +pkgdesc="X.org mach64 video driver" +arch=(i686 x86_64) +url="http://xorg.freedesktop.org/" +depends=('libdrm>=2.3.1' 'libgl>=7.2') +makedepends=('pkgconfig' 'xorg-server>=1.5.1' 'mesa>=7.2' 'dri2proto' + 'glproto>=1.4.9' 'xf86driproto' 'diffutils') +conflicts=('xorg-server<1.5.1') +groups=('xorg-video-drivers') +options=('!libtool') +source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2 + http://downloads.sourceforge.net/sourceforge/mesa3d/MesaLib-${_mesaver}.tar.bz2 + mesa-7.1-link-shared.patch) +md5sums=('6081b8fa50c689d51f85c2fbaf93867e' + '04d379292e023df0b0266825cb0dbde5' + 'f0baa948d9810f268413111ee439d24b') + +build() { + cd ${startdir}/src/${pkgname}-${pkgver} + ./configure --prefix=/usr \ + --enable-dri || return 1 + make || return 1 + make DESTDIR=${startdir}/pkg install || return 1 + + cd ${srcdir}/Mesa-${_mesaver} + patch -Np1 -i ${srcdir}/mesa-7.1-link-shared.patch || return 1 + ./configure --prefix=/usr \ + --with-dri-driverdir=/usr/lib/xorg/modules/dri \ + --with-dri-drivers=mach64 \ + --enable-glx-tls \ + --disable-ttm-api \ + --with-driver=dri \ + --enable-xcb \ + --disable-glu \ + --disable-glut \ + --disable-glw || return 1 + make || return 1 + cd src/mesa/drivers/dri || return 1 + make DESTDIR=${pkgdir} install || return 1 + rm -f ${pkgdir}/usr/lib/xorg/modules/dri/libdricore.so + rm -rf ${pkgdir}/usr/include + rm -rf ${pkgdir}/usr/lib/pkgconfig +} diff --git a/abs/core-testing/xf86-video-mach64/mesa-7.1-link-shared.patch b/abs/core-testing/xf86-video-mach64/mesa-7.1-link-shared.patch new file mode 100644 index 0000000..7fdbf14 --- /dev/null +++ b/abs/core-testing/xf86-video-mach64/mesa-7.1-link-shared.patch @@ -0,0 +1,102 @@ +diff -up mesa-20080814/src/mesa/drivers/dri/Makefile.dricore mesa-20080814/src/mesa/drivers/dri/Makefile +--- mesa-20080814/src/mesa/drivers/dri/Makefile.dricore 2008-08-14 02:28:38.000000000 +1000 ++++ mesa-20080814/src/mesa/drivers/dri/Makefile 2008-08-14 16:18:20.000000000 +1000 +@@ -6,12 +6,17 @@ include $(TOP)/configs/current + + + +-default: $(TOP)/$(LIB_DIR) subdirs ++default: $(TOP)/$(LIB_DIR) $(TOP)/$(LIB_DIR)/libdricore.so subdirs + + + $(TOP)/$(LIB_DIR): + -mkdir $(TOP)/$(LIB_DIR) + ++libdricore.so: ++ gcc -shared -o libdricore.so -Wl,--whole-archive ../../libmesa.a -Wl,--no-whole-archive -lm -lpthread -lc ++ ++$(TOP)/$(LIB_DIR)/libdricore.so: $(TOP)/$(LIB_DIR) libdricore.so ++ $(INSTALL) libdricore.so $(TOP)/$(LIB_DIR) + + subdirs: + @for dir in $(DRI_DIRS) ; do \ +@@ -31,12 +36,14 @@ dri.pc: dri.pc.in + $(pcedit) $< > $@ + + +-install: dri.pc ++install: dri.pc $(TOP)/$(LIB_DIR)/libdricore.so + @for dir in $(DRI_DIRS) ; do \ + if [ -d $$dir ] ; then \ + (cd $$dir && $(MAKE) install) || exit 1 ; \ + fi \ + done ++ $(INSTALL) -d $(DESTDIR)$(DRI_DRIVER_INSTALL_DIR) ++ $(INSTALL) -m 755 $(TOP)/$(LIB_DIR)/libdricore.so $(DESTDIR)$(DRI_DRIVER_INSTALL_DIR) + $(INSTALL) -d $(DESTDIR)$(INSTALL_INC_DIR)/GL/internal + $(INSTALL) -m 0644 $(TOP)/include/GL/internal/dri_interface.h \ + $(DESTDIR)$(INSTALL_INC_DIR)/GL/internal +@@ -52,5 +59,6 @@ clean: + (cd $$dir && $(MAKE) clean) ; \ + fi \ + done ++ -rm -f libdricore.so $(TOP)/$(LIB_DIR)/libdricore.so + -rm -f common/*.o + -rm -f *.pc +diff -up mesa-20080814/src/mesa/drivers/dri/Makefile.template.dricore mesa-20080814/src/mesa/drivers/dri/Makefile.template +--- mesa-20080814/src/mesa/drivers/dri/Makefile.template.dricore 2008-08-14 02:28:38.000000000 +1000 ++++ mesa-20080814/src/mesa/drivers/dri/Makefile.template 2008-08-14 16:19:37.000000000 +1000 +@@ -1,6 +1,6 @@ + # -*-makefile-*- + +-MESA_MODULES = $(TOP)/src/mesa/libmesa.a ++MESA_MODULES = $(TOP)/$(LIB_DIR)/libdricore.so + + COMMON_SOURCES = \ + ../common/utils.c \ +@@ -64,7 +64,9 @@ default: symlinks depend $(LIBNAME) $(TO + + $(LIBNAME): $(OBJECTS) $(MESA_MODULES) $(WINOBJ) Makefile $(TOP)/src/mesa/drivers/dri/Makefile.template + $(MKLIB) -o $@ -noprefix -linker '$(CC)' -ldflags '$(LDFLAGS)' \ +- $(OBJECTS) $(MESA_MODULES) $(WINOBJ) $(DRI_LIB_DEPS) ++ $(OBJECTS) $(WINOBJ) \ ++ -L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) -ldricore \ ++ $(DRI_LIB_DEPS) + + + $(TOP)/$(LIB_DIR)/$(LIBNAME): $(LIBNAME) +diff -up mesa-20080814/src/mesa/x86/read_rgba_span_x86.S.dricore mesa-20080814/src/mesa/x86/read_rgba_span_x86.S +--- mesa-20080814/src/mesa/x86/read_rgba_span_x86.S.dricore 2008-08-14 02:28:38.000000000 +1000 ++++ mesa-20080814/src/mesa/x86/read_rgba_span_x86.S 2008-08-14 16:16:49.000000000 +1000 +@@ -77,7 +77,6 @@ + */ + + .globl _generic_read_RGBA_span_BGRA8888_REV_MMX +-.hidden _generic_read_RGBA_span_BGRA8888_REV_MMX + .type _generic_read_RGBA_span_BGRA8888_REV_MMX, @function + _generic_read_RGBA_span_BGRA8888_REV_MMX: + pushl %ebx +@@ -172,7 +171,6 @@ _generic_read_RGBA_span_BGRA8888_REV_MMX + */ + + .globl _generic_read_RGBA_span_BGRA8888_REV_SSE +-.hidden _generic_read_RGBA_span_BGRA8888_REV_SSE + .type _generic_read_RGBA_span_BGRA8888_REV_SSE, @function + _generic_read_RGBA_span_BGRA8888_REV_SSE: + pushl %esi +@@ -335,7 +333,6 @@ _generic_read_RGBA_span_BGRA8888_REV_SSE + + .text + .globl _generic_read_RGBA_span_BGRA8888_REV_SSE2 +-.hidden _generic_read_RGBA_span_BGRA8888_REV_SSE2 + .type _generic_read_RGBA_span_BGRA8888_REV_SSE2, @function + _generic_read_RGBA_span_BGRA8888_REV_SSE2: + pushl %esi +@@ -494,7 +491,6 @@ _generic_read_RGBA_span_BGRA8888_REV_SSE + + .text + .globl _generic_read_RGBA_span_RGB565_MMX +- .hidden _generic_read_RGBA_span_RGB565_MMX + .type _generic_read_RGBA_span_RGB565_MMX, @function + + _generic_read_RGBA_span_RGB565_MMX: diff --git a/abs/core-testing/xf86-video-mga/PKGBUILD b/abs/core-testing/xf86-video-mga/PKGBUILD index 1d07b1f..5681868 100644 --- a/abs/core-testing/xf86-video-mga/PKGBUILD +++ b/abs/core-testing/xf86-video-mga/PKGBUILD @@ -1,22 +1,25 @@ -# $Id: PKGBUILD 4390 2008-07-06 20:07:05Z jgc $ +# $Id: PKGBUILD 13014 2008-09-25 18:53:21Z jgc $ # Maintainer: Alexander Baldeck <alexander@archlinux.org> # Contributor: Jan de Groot <jgc@archlinux.org> pkgname=xf86-video-mga pkgver=1.4.9 -pkgrel=1 +pkgrel=3 pkgdesc="X.org mga video driver" -mesaver="7.0.3" +_mesaver="7.2" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" -depends=('libdrm' 'expat>=2.0') -makedepends=('pkgconfig' 'xorg-server>=1.4.2' 'imake' 'mesa>=7.0.3' \ +depends=('libgl>=7.2' 'expat>=2.0.1') +makedepends=('pkgconfig' 'xorg-server>=1.5.1' 'imake' 'mesa>=7.2' 'xf86driproto' 'glproto>=1.4.9') +conflicts=('xorg-server<1.5.1') options=('!libtool' 'force') groups=('xorg-video-drivers') source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2 - http://downloads.sourceforge.net/sourceforge/mesa3d/MesaLib-${mesaver}.tar.bz2) + http://downloads.sourceforge.net/sourceforge/mesa3d/MesaLib-${_mesaver}.tar.bz2 + mesa-7.1-link-shared.patch) md5sums=('11066b84b949cd04300ec819c9c51532' - 'e6e6379d7793af40a6bc3ce1bace572e') + '04d379292e023df0b0266825cb0dbde5' + 'f0baa948d9810f268413111ee439d24b') build() { cd ${startdir}/src/${pkgname}-${pkgver} @@ -24,26 +27,22 @@ build() { --enable-dri || return 1 make || return 1 make DESTDIR=${startdir}/pkg install || return 1 - - cd ${startdir}/src/Mesa-${mesaver}/configs - - CONFIG="linux-dri-x86" - [ "$CARCH" = "x86_64" ] && CONFIG="linux-dri-x86-64" - echo "EXTRA_LIB_PATH =" >> ${CONFIG} - echo "OPT_FLAGS = ${CFLAGS}" >> ${CONFIG} - echo "SRC_DIRS = glx/x11 mesa" >> ${CONFIG} - echo "USING_EGL = 0" >> ${CONFIG} - echo "PROGRAM_DIRS =" >> ${CONFIG} - echo "MKDEP = makedepend" >> ${CONFIG} - echo "DRI_DIRS = mga" >> ${CONFIG} - echo "DRI_DRIVER_SEARCH_DIR = /usr/lib/xorg/modules/dri" >> ${CONFIG} - echo "DRI_DRIVER_INSTALL_DIR = /usr/lib/xorg/modules/dri" >> ${CONFIG} - echo "ARCH_FLAGS += -DGLX_USE_TLS" >> ${CONFIG} - echo "X11_INCLUDES = `pkg-config --cflags-only-I x11`" >> ${CONFIG} - - ln -s ${CONFIG} current - cd ${startdir}/src/Mesa-${mesaver}/src/mesa - make linux-solo || return 1 - cd drivers/dri - make DESTDIR=${startdir}/pkg install || return 1 + cd ${srcdir}/Mesa-${_mesaver} + patch -Np1 -i ${srcdir}/mesa-7.1-link-shared.patch || return 1 + ./configure --prefix=/usr \ + --with-dri-driverdir=/usr/lib/xorg/modules/dri \ + --with-dri-drivers=mga \ + --enable-glx-tls \ + --disable-ttm-api \ + --with-driver=dri \ + --enable-xcb \ + --disable-glu \ + --disable-glut \ + --disable-glw || return 1 + make || return 1 + cd src/mesa/drivers/dri || return 1 + make DESTDIR=${pkgdir} install || return 1 + rm -f ${pkgdir}/usr/lib/xorg/modules/dri/libdricore.so + rm -rf ${pkgdir}/usr/include + rm -rf ${pkgdir}/usr/lib/pkgconfig } diff --git a/abs/core-testing/xf86-video-mga/mesa-7.1-link-shared.patch b/abs/core-testing/xf86-video-mga/mesa-7.1-link-shared.patch new file mode 100644 index 0000000..7fdbf14 --- /dev/null +++ b/abs/core-testing/xf86-video-mga/mesa-7.1-link-shared.patch @@ -0,0 +1,102 @@ +diff -up mesa-20080814/src/mesa/drivers/dri/Makefile.dricore mesa-20080814/src/mesa/drivers/dri/Makefile +--- mesa-20080814/src/mesa/drivers/dri/Makefile.dricore 2008-08-14 02:28:38.000000000 +1000 ++++ mesa-20080814/src/mesa/drivers/dri/Makefile 2008-08-14 16:18:20.000000000 +1000 +@@ -6,12 +6,17 @@ include $(TOP)/configs/current + + + +-default: $(TOP)/$(LIB_DIR) subdirs ++default: $(TOP)/$(LIB_DIR) $(TOP)/$(LIB_DIR)/libdricore.so subdirs + + + $(TOP)/$(LIB_DIR): + -mkdir $(TOP)/$(LIB_DIR) + ++libdricore.so: ++ gcc -shared -o libdricore.so -Wl,--whole-archive ../../libmesa.a -Wl,--no-whole-archive -lm -lpthread -lc ++ ++$(TOP)/$(LIB_DIR)/libdricore.so: $(TOP)/$(LIB_DIR) libdricore.so ++ $(INSTALL) libdricore.so $(TOP)/$(LIB_DIR) + + subdirs: + @for dir in $(DRI_DIRS) ; do \ +@@ -31,12 +36,14 @@ dri.pc: dri.pc.in + $(pcedit) $< > $@ + + +-install: dri.pc ++install: dri.pc $(TOP)/$(LIB_DIR)/libdricore.so + @for dir in $(DRI_DIRS) ; do \ + if [ -d $$dir ] ; then \ + (cd $$dir && $(MAKE) install) || exit 1 ; \ + fi \ + done ++ $(INSTALL) -d $(DESTDIR)$(DRI_DRIVER_INSTALL_DIR) ++ $(INSTALL) -m 755 $(TOP)/$(LIB_DIR)/libdricore.so $(DESTDIR)$(DRI_DRIVER_INSTALL_DIR) + $(INSTALL) -d $(DESTDIR)$(INSTALL_INC_DIR)/GL/internal + $(INSTALL) -m 0644 $(TOP)/include/GL/internal/dri_interface.h \ + $(DESTDIR)$(INSTALL_INC_DIR)/GL/internal +@@ -52,5 +59,6 @@ clean: + (cd $$dir && $(MAKE) clean) ; \ + fi \ + done ++ -rm -f libdricore.so $(TOP)/$(LIB_DIR)/libdricore.so + -rm -f common/*.o + -rm -f *.pc +diff -up mesa-20080814/src/mesa/drivers/dri/Makefile.template.dricore mesa-20080814/src/mesa/drivers/dri/Makefile.template +--- mesa-20080814/src/mesa/drivers/dri/Makefile.template.dricore 2008-08-14 02:28:38.000000000 +1000 ++++ mesa-20080814/src/mesa/drivers/dri/Makefile.template 2008-08-14 16:19:37.000000000 +1000 +@@ -1,6 +1,6 @@ + # -*-makefile-*- + +-MESA_MODULES = $(TOP)/src/mesa/libmesa.a ++MESA_MODULES = $(TOP)/$(LIB_DIR)/libdricore.so + + COMMON_SOURCES = \ + ../common/utils.c \ +@@ -64,7 +64,9 @@ default: symlinks depend $(LIBNAME) $(TO + + $(LIBNAME): $(OBJECTS) $(MESA_MODULES) $(WINOBJ) Makefile $(TOP)/src/mesa/drivers/dri/Makefile.template + $(MKLIB) -o $@ -noprefix -linker '$(CC)' -ldflags '$(LDFLAGS)' \ +- $(OBJECTS) $(MESA_MODULES) $(WINOBJ) $(DRI_LIB_DEPS) ++ $(OBJECTS) $(WINOBJ) \ ++ -L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) -ldricore \ ++ $(DRI_LIB_DEPS) + + + $(TOP)/$(LIB_DIR)/$(LIBNAME): $(LIBNAME) +diff -up mesa-20080814/src/mesa/x86/read_rgba_span_x86.S.dricore mesa-20080814/src/mesa/x86/read_rgba_span_x86.S +--- mesa-20080814/src/mesa/x86/read_rgba_span_x86.S.dricore 2008-08-14 02:28:38.000000000 +1000 ++++ mesa-20080814/src/mesa/x86/read_rgba_span_x86.S 2008-08-14 16:16:49.000000000 +1000 +@@ -77,7 +77,6 @@ + */ + + .globl _generic_read_RGBA_span_BGRA8888_REV_MMX +-.hidden _generic_read_RGBA_span_BGRA8888_REV_MMX + .type _generic_read_RGBA_span_BGRA8888_REV_MMX, @function + _generic_read_RGBA_span_BGRA8888_REV_MMX: + pushl %ebx +@@ -172,7 +171,6 @@ _generic_read_RGBA_span_BGRA8888_REV_MMX + */ + + .globl _generic_read_RGBA_span_BGRA8888_REV_SSE +-.hidden _generic_read_RGBA_span_BGRA8888_REV_SSE + .type _generic_read_RGBA_span_BGRA8888_REV_SSE, @function + _generic_read_RGBA_span_BGRA8888_REV_SSE: + pushl %esi +@@ -335,7 +333,6 @@ _generic_read_RGBA_span_BGRA8888_REV_SSE + + .text + .globl _generic_read_RGBA_span_BGRA8888_REV_SSE2 +-.hidden _generic_read_RGBA_span_BGRA8888_REV_SSE2 + .type _generic_read_RGBA_span_BGRA8888_REV_SSE2, @function + _generic_read_RGBA_span_BGRA8888_REV_SSE2: + pushl %esi +@@ -494,7 +491,6 @@ _generic_read_RGBA_span_BGRA8888_REV_SSE + + .text + .globl _generic_read_RGBA_span_RGB565_MMX +- .hidden _generic_read_RGBA_span_RGB565_MMX + .type _generic_read_RGBA_span_RGB565_MMX, @function + + _generic_read_RGBA_span_RGB565_MMX: diff --git a/abs/core-testing/xf86-video-neomagic/PKGBUILD b/abs/core-testing/xf86-video-neomagic/PKGBUILD index cbe614d..7d47807 100644 --- a/abs/core-testing/xf86-video-neomagic/PKGBUILD +++ b/abs/core-testing/xf86-video-neomagic/PKGBUILD @@ -1,22 +1,23 @@ -# $Id: PKGBUILD 3245 2008-06-21 18:12:45Z jgc $ +# $Id: PKGBUILD 22283 2008-12-25 17:06:50Z jgc $ #Maintainer: Jan de Groot <jgc@archlinux.org> pkgname=xf86-video-neomagic -pkgver=1.2.1 +pkgver=1.2.2 pkgrel=1 pkgdesc="X.org neomagic video driver" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" depends=('glibc') -makedepends=('pkgconfig' 'xorg-server>=1.4.2') +makedepends=('pkgconfig' 'xorg-server>=1.5.3') +conflicts=('xorg-server<1.5.3') groups=('xorg-video-drivers') options=('!libtool') source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) -md5sums=('a72f57fca4f4dff9a2c82eb1fe7456f4') +md5sums=('896864e1a2d7333c16333a24eac17d00') build() { - cd ${startdir}/src/${pkgname}-${pkgver} + cd "${srcdir}/${pkgname}-${pkgver}" ./configure --prefix=/usr || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 + make DESTDIR="${pkgdir}" install || return 1 } diff --git a/abs/core-testing/xf86-video-nv/PKGBUILD b/abs/core-testing/xf86-video-nv/PKGBUILD index ad4b2ee..7c74343 100644 --- a/abs/core-testing/xf86-video-nv/PKGBUILD +++ b/abs/core-testing/xf86-video-nv/PKGBUILD @@ -1,26 +1,28 @@ -# $Id: PKGBUILD 1904 2008-05-22 18:19:19Z jgc $ +# $Id: PKGBUILD 11446 2008-08-31 15:40:39Z jgc $ # Maintainer: Alexander Baldeck <alexander@archlinux.org> # Contributor: Jan de Groot <jgc@archlinux.org> + pkgname=xf86-video-nv -pkgver=2.1.9 +pkgver=2.1.12 pkgrel=1 pkgdesc="X.org nv video driver" arch=(i686 x86_64) +license=('custom') url="http://xorg.freedesktop.org/" depends=('glibc') -makedepends=('pkgconfig' 'xorg-server>=1.4.0.90') +makedepends=('pkgconfig' 'xorg-server>=1.4.99.906') +conflicts=('xorg-server<1.4.99.906') options=('!libtool') -license=('custom') groups=('xorg-video-drivers') source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) -md5sums=('c6b7e52fa18455c22eb040b8d2575ce5') build() { cd ${startdir}/src/${pkgname}-${pkgver} - ./configure --prefix=/usr + ./configure --prefix=/usr || return 1 make || return 1 make DESTDIR=${startdir}/pkg install || return 1 - install -m644 -D ${startdir}/src/${pkgname}-${pkgver}/COPYING \ - ${startdir}/pkg/usr/share/licenses/${pkgname}/LICENSE + install -m755 -d ${pkgdir}/usr/share/licenses/${pkgname} + install -m644 COPYING ${pkgdir}/usr/share/licenses/${pkgname}/ || return 1 } +md5sums=('42f12a36d7afc26c817e8e8f5c8b7274') diff --git a/abs/core-testing/xf86-video-openchrome/LICENSE.txt b/abs/core-testing/xf86-video-openchrome/LICENSE.txt new file mode 100644 index 0000000..dff1dc3 --- /dev/null +++ b/abs/core-testing/xf86-video-openchrome/LICENSE.txt @@ -0,0 +1,26 @@ +/* + * Copyright 2005-2007 The Openchrome Project [openchrome.org] + * Copyright 2004-2006 Luc Verhaegen. + * Copyright 2004-2005 The Unichrome Project [unichrome.sf.net] + * Copyright 1998-2003 VIA Technologies, Inc. All Rights Reserved. + * Copyright 2001-2003 S3 Graphics, Inc. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sub license, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the + * next paragraph) shall be included in all copies or substantial portions + * of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ diff --git a/abs/core-testing/xf86-video-openchrome/PKGBUILD b/abs/core-testing/xf86-video-openchrome/PKGBUILD new file mode 100644 index 0000000..235dba8 --- /dev/null +++ b/abs/core-testing/xf86-video-openchrome/PKGBUILD @@ -0,0 +1,29 @@ +# $Id: PKGBUILD 11506 2008-08-31 18:01:45Z jgc $ +# Contributor: Paul Mattal <paul@mattal.com> +# Maintainer: Juergen Hoetzel <juergen@hoetzel.info> + +pkgname=xf86-video-openchrome +pkgver=0.2.903 +pkgrel=1 +pkgdesc="X.Org Openchrome drivers" +arch=(i686 x86_64) +license=('custom') +url="http://www.openchrome.org" +depends=('unichrome-dri>=7.1') +makedepends=('pkgconfig' 'xorg-server>=1.4.99.906' 'xf86driproto' 'xorg-util-macros' 'libxvmc' 'glproto' 'mesa>=7.1') +replaces=('openchrome' 'xf86-video-via') +options=('!libtool' 'force' '!makeflags') +conflicts=('xf86-video-via' 'xf86-video-unichrome' 'openchrome' 'xorg-server<1.4.99.906') +source=(http://xorg.freedesktop.org/releases/individual/driver/${pkgname}-${pkgver}.tar.gz + LICENSE.txt) +md5sums=('bcb3ba67e89824c132790c3a0365c6a5' + 'addb3cf2671f4cf7e91156952de1627f') + +build() { + cd ${startdir}/src/${pkgname}-$pkgver || return 1 + ./configure --prefix=/usr || return 1 + make || return 1 + make DESTDIR=${startdir}/pkg install || return 1 + install -m755 -d ${pkgdir}/usr/share/licenses/${pkgname} + install -m644 ${srcdir}/LICENSE.txt ${pkgdir}/usr/share/licenses/${pkgname}/COPYING || return 1 +} diff --git a/abs/core-testing/xf86-video-r128/PKGBUILD b/abs/core-testing/xf86-video-r128/PKGBUILD new file mode 100644 index 0000000..9339f9a --- /dev/null +++ b/abs/core-testing/xf86-video-r128/PKGBUILD @@ -0,0 +1,48 @@ +# $Id: PKGBUILD 13012 2008-09-25 18:50:04Z jgc $ +# Maintainer: Jan de Groot <jgc@archlinux.org> +pkgname=xf86-video-r128 +pkgver=6.8.0 +pkgrel=2 +_mesaver="7.2" +pkgdesc="X.org ati Rage128 video driver" +arch=(i686 x86_64) +url="http://xorg.freedesktop.org/" +depends=('libdrm>=2.3.1' 'libgl>=7.2') +makedepends=('pkgconfig' 'xorg-server>=1.5.1' 'imake' 'mesa>=7.2' + 'glproto>=1.4.9' 'xf86driproto' 'diffutils') +conflicts=('xorg-server<1.5.1') +groups=('xorg-video-drivers') +options=('!libtool') +source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2 + http://downloads.sourceforge.net/sourceforge/mesa3d/MesaLib-${_mesaver}.tar.bz2 + mesa-7.1-link-shared.patch) +md5sums=('007bec0c6b07d9d3aeca4da18e561efb' + '04d379292e023df0b0266825cb0dbde5' + 'f0baa948d9810f268413111ee439d24b') + +build() { + cd ${startdir}/src/${pkgname}-${pkgver} + ./configure --prefix=/usr \ + --enable-dri || return 1 + make || return 1 + make DESTDIR=${startdir}/pkg install || return 1 + + cd ${srcdir}/Mesa-${_mesaver} + patch -Np1 -i ${srcdir}/mesa-7.1-link-shared.patch || return 1 + ./configure --prefix=/usr \ + --with-dri-driverdir=/usr/lib/xorg/modules/dri \ + --with-dri-drivers=r128 \ + --enable-glx-tls \ + --disable-ttm-api \ + --with-driver=dri \ + --enable-xcb \ + --disable-glu \ + --disable-glut \ + --disable-glw || return 1 + make || return 1 + cd src/mesa/drivers/dri || return 1 + make DESTDIR=${pkgdir} install || return 1 + rm -f ${pkgdir}/usr/lib/xorg/modules/dri/libdricore.so + rm -rf ${pkgdir}/usr/include + rm -rf ${pkgdir}/usr/lib/pkgconfig +} diff --git a/abs/core-testing/xf86-video-r128/mesa-7.1-link-shared.patch b/abs/core-testing/xf86-video-r128/mesa-7.1-link-shared.patch new file mode 100644 index 0000000..7fdbf14 --- /dev/null +++ b/abs/core-testing/xf86-video-r128/mesa-7.1-link-shared.patch @@ -0,0 +1,102 @@ +diff -up mesa-20080814/src/mesa/drivers/dri/Makefile.dricore mesa-20080814/src/mesa/drivers/dri/Makefile +--- mesa-20080814/src/mesa/drivers/dri/Makefile.dricore 2008-08-14 02:28:38.000000000 +1000 ++++ mesa-20080814/src/mesa/drivers/dri/Makefile 2008-08-14 16:18:20.000000000 +1000 +@@ -6,12 +6,17 @@ include $(TOP)/configs/current + + + +-default: $(TOP)/$(LIB_DIR) subdirs ++default: $(TOP)/$(LIB_DIR) $(TOP)/$(LIB_DIR)/libdricore.so subdirs + + + $(TOP)/$(LIB_DIR): + -mkdir $(TOP)/$(LIB_DIR) + ++libdricore.so: ++ gcc -shared -o libdricore.so -Wl,--whole-archive ../../libmesa.a -Wl,--no-whole-archive -lm -lpthread -lc ++ ++$(TOP)/$(LIB_DIR)/libdricore.so: $(TOP)/$(LIB_DIR) libdricore.so ++ $(INSTALL) libdricore.so $(TOP)/$(LIB_DIR) + + subdirs: + @for dir in $(DRI_DIRS) ; do \ +@@ -31,12 +36,14 @@ dri.pc: dri.pc.in + $(pcedit) $< > $@ + + +-install: dri.pc ++install: dri.pc $(TOP)/$(LIB_DIR)/libdricore.so + @for dir in $(DRI_DIRS) ; do \ + if [ -d $$dir ] ; then \ + (cd $$dir && $(MAKE) install) || exit 1 ; \ + fi \ + done ++ $(INSTALL) -d $(DESTDIR)$(DRI_DRIVER_INSTALL_DIR) ++ $(INSTALL) -m 755 $(TOP)/$(LIB_DIR)/libdricore.so $(DESTDIR)$(DRI_DRIVER_INSTALL_DIR) + $(INSTALL) -d $(DESTDIR)$(INSTALL_INC_DIR)/GL/internal + $(INSTALL) -m 0644 $(TOP)/include/GL/internal/dri_interface.h \ + $(DESTDIR)$(INSTALL_INC_DIR)/GL/internal +@@ -52,5 +59,6 @@ clean: + (cd $$dir && $(MAKE) clean) ; \ + fi \ + done ++ -rm -f libdricore.so $(TOP)/$(LIB_DIR)/libdricore.so + -rm -f common/*.o + -rm -f *.pc +diff -up mesa-20080814/src/mesa/drivers/dri/Makefile.template.dricore mesa-20080814/src/mesa/drivers/dri/Makefile.template +--- mesa-20080814/src/mesa/drivers/dri/Makefile.template.dricore 2008-08-14 02:28:38.000000000 +1000 ++++ mesa-20080814/src/mesa/drivers/dri/Makefile.template 2008-08-14 16:19:37.000000000 +1000 +@@ -1,6 +1,6 @@ + # -*-makefile-*- + +-MESA_MODULES = $(TOP)/src/mesa/libmesa.a ++MESA_MODULES = $(TOP)/$(LIB_DIR)/libdricore.so + + COMMON_SOURCES = \ + ../common/utils.c \ +@@ -64,7 +64,9 @@ default: symlinks depend $(LIBNAME) $(TO + + $(LIBNAME): $(OBJECTS) $(MESA_MODULES) $(WINOBJ) Makefile $(TOP)/src/mesa/drivers/dri/Makefile.template + $(MKLIB) -o $@ -noprefix -linker '$(CC)' -ldflags '$(LDFLAGS)' \ +- $(OBJECTS) $(MESA_MODULES) $(WINOBJ) $(DRI_LIB_DEPS) ++ $(OBJECTS) $(WINOBJ) \ ++ -L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) -ldricore \ ++ $(DRI_LIB_DEPS) + + + $(TOP)/$(LIB_DIR)/$(LIBNAME): $(LIBNAME) +diff -up mesa-20080814/src/mesa/x86/read_rgba_span_x86.S.dricore mesa-20080814/src/mesa/x86/read_rgba_span_x86.S +--- mesa-20080814/src/mesa/x86/read_rgba_span_x86.S.dricore 2008-08-14 02:28:38.000000000 +1000 ++++ mesa-20080814/src/mesa/x86/read_rgba_span_x86.S 2008-08-14 16:16:49.000000000 +1000 +@@ -77,7 +77,6 @@ + */ + + .globl _generic_read_RGBA_span_BGRA8888_REV_MMX +-.hidden _generic_read_RGBA_span_BGRA8888_REV_MMX + .type _generic_read_RGBA_span_BGRA8888_REV_MMX, @function + _generic_read_RGBA_span_BGRA8888_REV_MMX: + pushl %ebx +@@ -172,7 +171,6 @@ _generic_read_RGBA_span_BGRA8888_REV_MMX + */ + + .globl _generic_read_RGBA_span_BGRA8888_REV_SSE +-.hidden _generic_read_RGBA_span_BGRA8888_REV_SSE + .type _generic_read_RGBA_span_BGRA8888_REV_SSE, @function + _generic_read_RGBA_span_BGRA8888_REV_SSE: + pushl %esi +@@ -335,7 +333,6 @@ _generic_read_RGBA_span_BGRA8888_REV_SSE + + .text + .globl _generic_read_RGBA_span_BGRA8888_REV_SSE2 +-.hidden _generic_read_RGBA_span_BGRA8888_REV_SSE2 + .type _generic_read_RGBA_span_BGRA8888_REV_SSE2, @function + _generic_read_RGBA_span_BGRA8888_REV_SSE2: + pushl %esi +@@ -494,7 +491,6 @@ _generic_read_RGBA_span_BGRA8888_REV_SSE + + .text + .globl _generic_read_RGBA_span_RGB565_MMX +- .hidden _generic_read_RGBA_span_RGB565_MMX + .type _generic_read_RGBA_span_RGB565_MMX, @function + + _generic_read_RGBA_span_RGB565_MMX: diff --git a/abs/core-testing/xf86-video-radeonhd/PKGBUILD b/abs/core-testing/xf86-video-radeonhd/PKGBUILD index 7173afd..ce29874 100644 --- a/abs/core-testing/xf86-video-radeonhd/PKGBUILD +++ b/abs/core-testing/xf86-video-radeonhd/PKGBUILD @@ -1,26 +1,27 @@ -# $Id: PKGBUILD 861 2008-04-23 21:44:36Z juergen $ +# $Id: PKGBUILD 22422 2008-12-26 19:30:38Z jgc $ # Maintainer: <juergen@archlinux.org> pkgname=xf86-video-radeonhd -pkgver=1.2.1 +pkgver=1.2.4 pkgrel=1 pkgdesc="Experimental Radeon HD video driver for r500 and r600 ATI cards" arch=(i686 x86_64) url="http://wiki.x.org/wiki/radeonhd" license=('custom') -depends=('glibc') -makedepends=('pkgconfig' 'xorg-server' 'diffutils') +depends=('glibc' 'ati-dri>=7.2' 'libdrm' 'libpciaccess') +makedepends=('pkgconfig' 'xorg-server>=1.5.3' 'diffutils') +conflicts=('xorg-server<1.5.3') options=('!libtool') conflicts=('xf86-video-radeonhd-git') replaces=('xf86-video-radeonhd-git') groups=('xorg-video-drivers') -source=(ftp://ftp.freedesktop.org/pub/individual/driver/$pkgname-$pkgver.tar.bz2) -md5sums=('9db15e1f1f891f514ca72dd9a3cc360a') +source=(http://xorg.freedesktop.org/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) +md5sums=('3c9cfffe7e3d795dde59ea0eef7361b1') build() { - cd ${startdir}/src/${pkgname}-${pkgver} - ./configure --prefix=/usr \ - --build=${CHOST} --host=${CHOST} - make DESTDIR=${startdir}/pkg install || return 1 - install -m644 -D ${startdir}/src/${pkgname}-${pkgver}/COPYING \ - ${startdir}/pkg/usr/share/licenses/${pkgname}/LICENSE || return 1 + cd "${srcdir}/${pkgname}-${pkgver}" + ./configure --prefix=/usr || return 1 + make || return 1 + make DESTDIR="${pkgdir}" install || return 1 + install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}" + install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/" || return 1 } diff --git a/abs/core-testing/xf86-video-rendition/PKGBUILD b/abs/core-testing/xf86-video-rendition/PKGBUILD index 20fba5f..6bb78d2 100644 --- a/abs/core-testing/xf86-video-rendition/PKGBUILD +++ b/abs/core-testing/xf86-video-rendition/PKGBUILD @@ -1,23 +1,23 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 11462 2008-08-31 15:55:46Z jgc $ # Maintainer: Alexander Baldeck <alexander@archlinux.org> # Contributor: Jan de Groot <jgc@archlinux.org> pkgname=xf86-video-rendition -pkgver=4.1.3 -pkgrel=4 +pkgver=4.2.0 +pkgrel=1 pkgdesc="X.org Rendition video driver" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" depends=('glibc') -makedepends=('pkgconfig' 'xorg-server>=1.2.0') +makedepends=('pkgconfig' 'xorg-server>=1.4.99.906') +conflicts=('xorg-server<1.4.99.906') options=('!libtool') groups=('xorg-video-drivers') source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) +md5sums=('7c03de3804d4c4f6ff59f74050d24b2b') build() { cd ${startdir}/src/${pkgname}-${pkgver} - ./configure --prefix=/usr \ - --build=${CHOST} --host=${CHOST} + ./configure --prefix=/usr || return 1 make || return 1 make DESTDIR=${startdir}/pkg install || return 1 } -md5sums=('a8b97feccb32184820d5856fe78d34db') diff --git a/abs/core-testing/xf86-video-s3/PKGBUILD b/abs/core-testing/xf86-video-s3/PKGBUILD index c7aefc2..f294fe9 100644 --- a/abs/core-testing/xf86-video-s3/PKGBUILD +++ b/abs/core-testing/xf86-video-s3/PKGBUILD @@ -1,23 +1,23 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 22275 2008-12-25 16:57:57Z jgc $ # Maintainer: Alexander Baldeck <alexander@archlinux.org> # Contributor: Jan de Groot <jgc@archlinux.org> pkgname=xf86-video-s3 -pkgver=0.5.0 -pkgrel=4 +pkgver=0.6.1 +pkgrel=1 pkgdesc="X.org S3 video driver" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" depends=('glibc') -makedepends=('pkgconfig' 'xorg-server>=1.2.0') +makedepends=('pkgconfig' 'xorg-server>=1.5.3') +conflicts=('xorg-server<1.5.3') options=('!libtool') groups=('xorg-video-drivers') source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) +md5sums=('a5f1f2f93a50e56bd3aeed009c407337') build() { - cd ${startdir}/src/${pkgname}-${pkgver} - ./configure --prefix=/usr \ - --build=${CHOST} --host=${CHOST} + cd "${srcdir}/${pkgname}-${pkgver}" + ./configure --prefix=/usr || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 + make DESTDIR="${pkgdir}" install || return 1 } -md5sums=('d95ab6445cab477f39adfbbc81006f67') diff --git a/abs/core-testing/xf86-video-s3virge/PKGBUILD b/abs/core-testing/xf86-video-s3virge/PKGBUILD index 4a27540..18391fb 100644 --- a/abs/core-testing/xf86-video-s3virge/PKGBUILD +++ b/abs/core-testing/xf86-video-s3virge/PKGBUILD @@ -1,49 +1,24 @@ -# $Id: PKGBUILD 3244 2008-06-21 18:11:55Z jgc $ +# $Id: PKGBUILD 22269 2008-12-25 16:53:28Z jgc $ # Maintainer: Alexander Baldeck <alexander@archlinux.org> # Contributor: Jan de Groot <jgc@archlinux.org> pkgname=xf86-video-s3virge -pkgver=1.10.1 +pkgver=1.10.2 pkgrel=1 pkgdesc="X.org S3 Virge video driver" -mesaver="7.0.3" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" -depends=('expat>=2.0' 'libdrm') -makedepends=('pkgconfig' 'xorg-server>=1.4.2' 'imake' 'mesa>=7.0.3') +depends=('glibc') +makedepends=('pkgconfig' 'xorg-server>=1.5.3') +conflicts=('xorg-server<1.5.3') options=(!libtool) groups=('xorg-video-drivers') -source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2 - http://downloads.sourceforge.net/sourceforge/mesa3d/MesaLib-${mesaver}.tar.bz2) -md5sums=('4a293047e988d4ea1e9e96d3b5793f43' - 'e6e6379d7793af40a6bc3ce1bace572e') +source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) +md5sums=('69784e4964d75487d81be4eae3d467dd') build() { - cd ${startdir}/src/${pkgname}-${pkgver} + cd "${srcdir}/${pkgname}-${pkgver}" ./configure --prefix=/usr \ - --enable-dri || return 1 + --disable-dri || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 - - - cd ${startdir}/src/Mesa-${mesaver}/configs - - CONFIG="linux-dri-x86" - [ "$CARCH" = "x86_64" ] && CONFIG="linux-dri-x86-64" - echo "EXTRA_LIB_PATH =" >> ${CONFIG} - echo "OPT_FLAGS = ${CFLAGS}" >> ${CONFIG} - echo "SRC_DIRS = glx/x11 mesa" >> ${CONFIG} - echo "USING_EGL = 0" >> ${CONFIG} - echo "PROGRAM_DIRS =" >> ${CONFIG} - echo "MKDEP = makedepend" >> ${CONFIG} - echo "DRI_DIRS = s3v" >> ${CONFIG} - echo "DRI_DRIVER_SEARCH_DIR = /usr/lib/xorg/modules/dri" >> ${CONFIG} - echo "DRI_DRIVER_INSTALL_DIR = /usr/lib/xorg/modules/dri" >> ${CONFIG} - echo "ARCH_FLAGS += -DGLX_USE_TLS" >> ${CONFIG} - echo "X11_INCLUDES = `pkg-config --cflags-only-I x11`" >> ${CONFIG} - - ln -s ${CONFIG} current - cd ${startdir}/src/Mesa-${mesaver}/src/mesa - make linux-solo || return 1 - cd drivers/dri - make DESTDIR=${startdir}/pkg install || return 1 + make DESTDIR="${pkgdir}" install || return 1 } diff --git a/abs/core-testing/xf86-video-savage/PKGBUILD b/abs/core-testing/xf86-video-savage/PKGBUILD index 99e5324..0cdb7c7 100644 --- a/abs/core-testing/xf86-video-savage/PKGBUILD +++ b/abs/core-testing/xf86-video-savage/PKGBUILD @@ -1,21 +1,24 @@ -# $Id: PKGBUILD 3243 2008-06-21 18:08:53Z jgc $ +# $Id: PKGBUILD 13010 2008-09-25 18:47:39Z jgc $ # Maintainer: Alexander Baldeck <alexander@archlinux.org> # Contributor: Jan de Groot <jgc@archlinux.org> pkgname=xf86-video-savage pkgver=2.2.1 -pkgrel=1 +pkgrel=2 pkgdesc="X.org savage video driver" -mesaver="7.0.3" +_mesaver="7.2" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" -depends=('libdrm>=2.3.0' 'expat>=2.0') -makedepends=('pkgconfig' 'xorg-server>=1.4.2' 'imake' 'mesa>=7.0.3' 'xf86driproto' 'glproto>=1.4.9') +depends=('libgl>=7.2') +makedepends=('pkgconfig' 'xorg-server>=1.5.1' 'imake' 'mesa>=7.2' 'xf86driproto' 'glproto>=1.4.9') +conflicts=('xorg-server<1.5.1') options=(!libtool) groups=('xorg-video-drivers') source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2 - http://downloads.sourceforge.net/sourceforge/mesa3d/MesaLib-${mesaver}.tar.bz2) + http://downloads.sourceforge.net/sourceforge/mesa3d/MesaLib-${_mesaver}.tar.bz2 + mesa-7.1-link-shared.patch) md5sums=('62b8aba48b54eaefeae87df502bf219c' - 'e6e6379d7793af40a6bc3ce1bace572e') + '04d379292e023df0b0266825cb0dbde5' + 'f0baa948d9810f268413111ee439d24b') build() { cd ${startdir}/src/${pkgname}-${pkgver} @@ -24,26 +27,22 @@ build() { make || return 1 make DESTDIR=${startdir}/pkg install || return 1 - cd ${startdir}/src/Mesa-${mesaver} - - cd configs - CONFIG="linux-dri-x86" - [ "$CARCH" = "x86_64" ] && CONFIG="linux-dri-x86-64" - echo "EXTRA_LIB_PATH =" >> ${CONFIG} - echo "OPT_FLAGS = ${CFLAGS} -fno-strict-aliasing" >> ${CONFIG} - echo "SRC_DIRS = glx/x11 mesa" >> ${CONFIG} - echo "USING_EGL = 0" >> ${CONFIG} - echo "PROGRAM_DIRS =" >> ${CONFIG} - echo "MKDEP = makedepend" >> ${CONFIG} - echo "DRI_DIRS = savage" >> ${CONFIG} - echo "DRI_DRIVER_SEARCH_DIR = /usr/lib/xorg/modules/dri" >> ${CONFIG} - echo "DRI_DRIVER_INSTALL_DIR = /usr/lib/xorg/modules/dri" >> ${CONFIG} - echo "ARCH_FLAGS += -DGLX_USE_TLS" >> ${CONFIG} - echo "X11_INCLUDES = `pkg-config --cflags-only-I x11`" >> ${CONFIG} - - ln -s ${CONFIG} current - cd ${startdir}/src/Mesa-${mesaver}/src/mesa - make linux-solo || return 1 - cd drivers/dri - make DESTDIR=${startdir}/pkg install || return 1 + cd ${startdir}/src/Mesa-${_mesaver} + patch -Np1 -i ${srcdir}/mesa-7.1-link-shared.patch + ./configure --prefix=/usr \ + --with-dri-driverdir=/usr/lib/xorg/modules/dri \ + --with-dri-drivers=savage \ + --enable-glx-tls \ + --disable-ttm-api \ + --with-driver=dri \ + --enable-xcb \ + --disable-glu \ + --disable-glut \ + --disable-glw || return 1 + make || return 1 + cd src/mesa/drivers/dri || return 1 + make DESTDIR=${pkgdir} install || return 1 + rm -rf ${pkgdir}/usr/lib/pkgconfig + rm -rf ${pkgdir}/usr/include + rm -f ${pkgdir}/usr/lib/xorg/modules/dri/libdricore.so } diff --git a/abs/core-testing/xf86-video-savage/mesa-7.1-link-shared.patch b/abs/core-testing/xf86-video-savage/mesa-7.1-link-shared.patch new file mode 100644 index 0000000..7fdbf14 --- /dev/null +++ b/abs/core-testing/xf86-video-savage/mesa-7.1-link-shared.patch @@ -0,0 +1,102 @@ +diff -up mesa-20080814/src/mesa/drivers/dri/Makefile.dricore mesa-20080814/src/mesa/drivers/dri/Makefile +--- mesa-20080814/src/mesa/drivers/dri/Makefile.dricore 2008-08-14 02:28:38.000000000 +1000 ++++ mesa-20080814/src/mesa/drivers/dri/Makefile 2008-08-14 16:18:20.000000000 +1000 +@@ -6,12 +6,17 @@ include $(TOP)/configs/current + + + +-default: $(TOP)/$(LIB_DIR) subdirs ++default: $(TOP)/$(LIB_DIR) $(TOP)/$(LIB_DIR)/libdricore.so subdirs + + + $(TOP)/$(LIB_DIR): + -mkdir $(TOP)/$(LIB_DIR) + ++libdricore.so: ++ gcc -shared -o libdricore.so -Wl,--whole-archive ../../libmesa.a -Wl,--no-whole-archive -lm -lpthread -lc ++ ++$(TOP)/$(LIB_DIR)/libdricore.so: $(TOP)/$(LIB_DIR) libdricore.so ++ $(INSTALL) libdricore.so $(TOP)/$(LIB_DIR) + + subdirs: + @for dir in $(DRI_DIRS) ; do \ +@@ -31,12 +36,14 @@ dri.pc: dri.pc.in + $(pcedit) $< > $@ + + +-install: dri.pc ++install: dri.pc $(TOP)/$(LIB_DIR)/libdricore.so + @for dir in $(DRI_DIRS) ; do \ + if [ -d $$dir ] ; then \ + (cd $$dir && $(MAKE) install) || exit 1 ; \ + fi \ + done ++ $(INSTALL) -d $(DESTDIR)$(DRI_DRIVER_INSTALL_DIR) ++ $(INSTALL) -m 755 $(TOP)/$(LIB_DIR)/libdricore.so $(DESTDIR)$(DRI_DRIVER_INSTALL_DIR) + $(INSTALL) -d $(DESTDIR)$(INSTALL_INC_DIR)/GL/internal + $(INSTALL) -m 0644 $(TOP)/include/GL/internal/dri_interface.h \ + $(DESTDIR)$(INSTALL_INC_DIR)/GL/internal +@@ -52,5 +59,6 @@ clean: + (cd $$dir && $(MAKE) clean) ; \ + fi \ + done ++ -rm -f libdricore.so $(TOP)/$(LIB_DIR)/libdricore.so + -rm -f common/*.o + -rm -f *.pc +diff -up mesa-20080814/src/mesa/drivers/dri/Makefile.template.dricore mesa-20080814/src/mesa/drivers/dri/Makefile.template +--- mesa-20080814/src/mesa/drivers/dri/Makefile.template.dricore 2008-08-14 02:28:38.000000000 +1000 ++++ mesa-20080814/src/mesa/drivers/dri/Makefile.template 2008-08-14 16:19:37.000000000 +1000 +@@ -1,6 +1,6 @@ + # -*-makefile-*- + +-MESA_MODULES = $(TOP)/src/mesa/libmesa.a ++MESA_MODULES = $(TOP)/$(LIB_DIR)/libdricore.so + + COMMON_SOURCES = \ + ../common/utils.c \ +@@ -64,7 +64,9 @@ default: symlinks depend $(LIBNAME) $(TO + + $(LIBNAME): $(OBJECTS) $(MESA_MODULES) $(WINOBJ) Makefile $(TOP)/src/mesa/drivers/dri/Makefile.template + $(MKLIB) -o $@ -noprefix -linker '$(CC)' -ldflags '$(LDFLAGS)' \ +- $(OBJECTS) $(MESA_MODULES) $(WINOBJ) $(DRI_LIB_DEPS) ++ $(OBJECTS) $(WINOBJ) \ ++ -L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) -ldricore \ ++ $(DRI_LIB_DEPS) + + + $(TOP)/$(LIB_DIR)/$(LIBNAME): $(LIBNAME) +diff -up mesa-20080814/src/mesa/x86/read_rgba_span_x86.S.dricore mesa-20080814/src/mesa/x86/read_rgba_span_x86.S +--- mesa-20080814/src/mesa/x86/read_rgba_span_x86.S.dricore 2008-08-14 02:28:38.000000000 +1000 ++++ mesa-20080814/src/mesa/x86/read_rgba_span_x86.S 2008-08-14 16:16:49.000000000 +1000 +@@ -77,7 +77,6 @@ + */ + + .globl _generic_read_RGBA_span_BGRA8888_REV_MMX +-.hidden _generic_read_RGBA_span_BGRA8888_REV_MMX + .type _generic_read_RGBA_span_BGRA8888_REV_MMX, @function + _generic_read_RGBA_span_BGRA8888_REV_MMX: + pushl %ebx +@@ -172,7 +171,6 @@ _generic_read_RGBA_span_BGRA8888_REV_MMX + */ + + .globl _generic_read_RGBA_span_BGRA8888_REV_SSE +-.hidden _generic_read_RGBA_span_BGRA8888_REV_SSE + .type _generic_read_RGBA_span_BGRA8888_REV_SSE, @function + _generic_read_RGBA_span_BGRA8888_REV_SSE: + pushl %esi +@@ -335,7 +333,6 @@ _generic_read_RGBA_span_BGRA8888_REV_SSE + + .text + .globl _generic_read_RGBA_span_BGRA8888_REV_SSE2 +-.hidden _generic_read_RGBA_span_BGRA8888_REV_SSE2 + .type _generic_read_RGBA_span_BGRA8888_REV_SSE2, @function + _generic_read_RGBA_span_BGRA8888_REV_SSE2: + pushl %esi +@@ -494,7 +491,6 @@ _generic_read_RGBA_span_BGRA8888_REV_SSE + + .text + .globl _generic_read_RGBA_span_RGB565_MMX +- .hidden _generic_read_RGBA_span_RGB565_MMX + .type _generic_read_RGBA_span_RGB565_MMX, @function + + _generic_read_RGBA_span_RGB565_MMX: diff --git a/abs/core-testing/xf86-video-siliconmotion/PKGBUILD b/abs/core-testing/xf86-video-siliconmotion/PKGBUILD index 0e785ed..3518f94 100644 --- a/abs/core-testing/xf86-video-siliconmotion/PKGBUILD +++ b/abs/core-testing/xf86-video-siliconmotion/PKGBUILD @@ -1,23 +1,23 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 23018 2009-01-01 16:25:18Z jgc $ # Maintainer: Alexander Baldeck <alexander@archlinux.org> # Contributor: Jan de Groot <jgc@archlinux.org> pkgname=xf86-video-siliconmotion -pkgver=1.5.1 -pkgrel=4 +pkgver=1.7.0 +pkgrel=1 pkgdesc="X.org siliconmotion video driver" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" depends=('glibc') -makedepends=('pkgconfig' 'xorg-server>=1.2.0') +makedepends=('pkgconfig' 'xorg-server>=1.5.3') +conflicts=('xorg-server<1.5.3') options=('!libtool') groups=('xorg-video-drivers') source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) +md5sums=('f9acffba89d8be200f91bab3d1df80da') build() { cd ${startdir}/src/${pkgname}-${pkgver} - ./configure --prefix=/usr \ - --build=${CHOST} --host=${CHOST} + ./configure --prefix=/usr || return 1 make || return 1 make DESTDIR=${startdir}/pkg install || return 1 } -md5sums=('ee35d7714ce44a2b5ac7ad7b7b7dd75a') diff --git a/abs/core-testing/xf86-video-sis/PKGBUILD b/abs/core-testing/xf86-video-sis/PKGBUILD index 02c519d..dfb0625 100644 --- a/abs/core-testing/xf86-video-sis/PKGBUILD +++ b/abs/core-testing/xf86-video-sis/PKGBUILD @@ -1,48 +1,48 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 22281 2008-12-25 17:05:24Z jgc $ # Maintainer: Alexander Baldeck <alexander@archlinux.org> # Contributor: Jan de Groot <jgc@archlinux.org> pkgname=xf86-video-sis -pkgver=0.9.4 -pkgrel=3 +pkgver=0.10.1 +pkgrel=1 pkgdesc="X.org SiS video driver" -mesaver="7.0.4" +_mesaver="7.2" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" -depends=('libdrm>=2.3.0' 'expat>=2.0') -makedepends=('pkgconfig' 'xorg-server>=1.4.0.90' 'imake' 'xf86driproto' 'mesa>=7.0.3rc1' 'glproto>=1.4.9') +depends=('libgl>=7.2') +makedepends=('pkgconfig' 'xorg-server>=1.5.3' 'xf86driproto' 'mesa>=7.1' 'glproto>=1.4.9') +conflicts=('xorg-server<1.5.1') options=('!libtool') groups=('xorg-video-drivers') source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2 - http://voxel.dl.sourceforge.net/sourceforge/mesa3d/MesaLib-${mesaver}.tar.gz) -md5sums=('43f12cabf770b06170cdd1cdaafdc50f' - '909afa3a01ae31478d363837681415ac') + http://downloads.sourceforge.net/mesa3d/MesaLib-${_mesaver}.tar.bz2 + mesa-7.1-link-shared.patch) +md5sums=('9f57c2f5ccbd8340db32da1c74083771' + '04d379292e023df0b0266825cb0dbde5' + 'f0baa948d9810f268413111ee439d24b') build() { - cd ${startdir}/src/${pkgname}-${pkgver} + cd "${srcdir}/${pkgname}-${pkgver}" ./configure --prefix=/usr \ --enable-dri || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 + make DESTDIR="${pkgdir}" install || return 1 - cd ${startdir}/src/Mesa-${mesaver}/configs - - CONFIG="linux-dri-x86" - [ "$CARCH" = "x86_64" ] && CONFIG="linux-dri-x86-64" - echo "EXTRA_LIB_PATH =" >> ${CONFIG} - echo "OPT_FLAGS = ${CFLAGS}" >> ${CONFIG} - echo "SRC_DIRS = glx/x11 mesa" >> ${CONFIG} - echo "USING_EGL = 0" >> ${CONFIG} - echo "PROGRAM_DIRS =" >> ${CONFIG} - echo "MKDEP = makedepend" >> ${CONFIG} - echo "DRI_DIRS = sis" >> ${CONFIG} - echo "DRI_DRIVER_SEARCH_DIR = /usr/lib/xorg/modules/dri" >> ${CONFIG} - echo "DRI_DRIVER_INSTALL_DIR = /usr/lib/xorg/modules/dri" >> ${CONFIG} - echo "ARCH_FLAGS += -DGLX_USE_TLS" >> ${CONFIG} - echo "X11_INCLUDES = `pkg-config --cflags-only-I x11`" >> ${CONFIG} - - ln -s ${CONFIG} current - cd ${startdir}/src/Mesa-${mesaver}/src/mesa - make linux-solo || return 1 - cd drivers/dri - make DESTDIR=${startdir}/pkg install || return 1 + cd "${srcdir}/Mesa-${_mesaver}" + patch -Np1 -i "${srcdir}/mesa-7.1-link-shared.patch" || return 1 + ./configure --prefix=/usr \ + --with-dri-driverdir=/usr/lib/xorg/modules/dri \ + --with-dri-drivers=sis \ + --enable-glx-tls \ + --disable-ttm-api \ + --with-driver=dri \ + --enable-xcb \ + --disable-glu \ + --disable-glut \ + --disable-glw || return 1 + make || return 1 + cd src/mesa/drivers/dri || return 1 + make DESTDIR="${pkgdir}" install || return 1 + rm -rf "${pkgdir}/usr/lib/pkgconfig" + rm -rf "${pkgdir}/usr/include" + rm -f "${pkgdir}/usr/lib/xorg/modules/dri/libdricore.so" } diff --git a/abs/core-testing/xf86-video-sis/mesa-7.1-link-shared.patch b/abs/core-testing/xf86-video-sis/mesa-7.1-link-shared.patch new file mode 100644 index 0000000..7fdbf14 --- /dev/null +++ b/abs/core-testing/xf86-video-sis/mesa-7.1-link-shared.patch @@ -0,0 +1,102 @@ +diff -up mesa-20080814/src/mesa/drivers/dri/Makefile.dricore mesa-20080814/src/mesa/drivers/dri/Makefile +--- mesa-20080814/src/mesa/drivers/dri/Makefile.dricore 2008-08-14 02:28:38.000000000 +1000 ++++ mesa-20080814/src/mesa/drivers/dri/Makefile 2008-08-14 16:18:20.000000000 +1000 +@@ -6,12 +6,17 @@ include $(TOP)/configs/current + + + +-default: $(TOP)/$(LIB_DIR) subdirs ++default: $(TOP)/$(LIB_DIR) $(TOP)/$(LIB_DIR)/libdricore.so subdirs + + + $(TOP)/$(LIB_DIR): + -mkdir $(TOP)/$(LIB_DIR) + ++libdricore.so: ++ gcc -shared -o libdricore.so -Wl,--whole-archive ../../libmesa.a -Wl,--no-whole-archive -lm -lpthread -lc ++ ++$(TOP)/$(LIB_DIR)/libdricore.so: $(TOP)/$(LIB_DIR) libdricore.so ++ $(INSTALL) libdricore.so $(TOP)/$(LIB_DIR) + + subdirs: + @for dir in $(DRI_DIRS) ; do \ +@@ -31,12 +36,14 @@ dri.pc: dri.pc.in + $(pcedit) $< > $@ + + +-install: dri.pc ++install: dri.pc $(TOP)/$(LIB_DIR)/libdricore.so + @for dir in $(DRI_DIRS) ; do \ + if [ -d $$dir ] ; then \ + (cd $$dir && $(MAKE) install) || exit 1 ; \ + fi \ + done ++ $(INSTALL) -d $(DESTDIR)$(DRI_DRIVER_INSTALL_DIR) ++ $(INSTALL) -m 755 $(TOP)/$(LIB_DIR)/libdricore.so $(DESTDIR)$(DRI_DRIVER_INSTALL_DIR) + $(INSTALL) -d $(DESTDIR)$(INSTALL_INC_DIR)/GL/internal + $(INSTALL) -m 0644 $(TOP)/include/GL/internal/dri_interface.h \ + $(DESTDIR)$(INSTALL_INC_DIR)/GL/internal +@@ -52,5 +59,6 @@ clean: + (cd $$dir && $(MAKE) clean) ; \ + fi \ + done ++ -rm -f libdricore.so $(TOP)/$(LIB_DIR)/libdricore.so + -rm -f common/*.o + -rm -f *.pc +diff -up mesa-20080814/src/mesa/drivers/dri/Makefile.template.dricore mesa-20080814/src/mesa/drivers/dri/Makefile.template +--- mesa-20080814/src/mesa/drivers/dri/Makefile.template.dricore 2008-08-14 02:28:38.000000000 +1000 ++++ mesa-20080814/src/mesa/drivers/dri/Makefile.template 2008-08-14 16:19:37.000000000 +1000 +@@ -1,6 +1,6 @@ + # -*-makefile-*- + +-MESA_MODULES = $(TOP)/src/mesa/libmesa.a ++MESA_MODULES = $(TOP)/$(LIB_DIR)/libdricore.so + + COMMON_SOURCES = \ + ../common/utils.c \ +@@ -64,7 +64,9 @@ default: symlinks depend $(LIBNAME) $(TO + + $(LIBNAME): $(OBJECTS) $(MESA_MODULES) $(WINOBJ) Makefile $(TOP)/src/mesa/drivers/dri/Makefile.template + $(MKLIB) -o $@ -noprefix -linker '$(CC)' -ldflags '$(LDFLAGS)' \ +- $(OBJECTS) $(MESA_MODULES) $(WINOBJ) $(DRI_LIB_DEPS) ++ $(OBJECTS) $(WINOBJ) \ ++ -L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) -ldricore \ ++ $(DRI_LIB_DEPS) + + + $(TOP)/$(LIB_DIR)/$(LIBNAME): $(LIBNAME) +diff -up mesa-20080814/src/mesa/x86/read_rgba_span_x86.S.dricore mesa-20080814/src/mesa/x86/read_rgba_span_x86.S +--- mesa-20080814/src/mesa/x86/read_rgba_span_x86.S.dricore 2008-08-14 02:28:38.000000000 +1000 ++++ mesa-20080814/src/mesa/x86/read_rgba_span_x86.S 2008-08-14 16:16:49.000000000 +1000 +@@ -77,7 +77,6 @@ + */ + + .globl _generic_read_RGBA_span_BGRA8888_REV_MMX +-.hidden _generic_read_RGBA_span_BGRA8888_REV_MMX + .type _generic_read_RGBA_span_BGRA8888_REV_MMX, @function + _generic_read_RGBA_span_BGRA8888_REV_MMX: + pushl %ebx +@@ -172,7 +171,6 @@ _generic_read_RGBA_span_BGRA8888_REV_MMX + */ + + .globl _generic_read_RGBA_span_BGRA8888_REV_SSE +-.hidden _generic_read_RGBA_span_BGRA8888_REV_SSE + .type _generic_read_RGBA_span_BGRA8888_REV_SSE, @function + _generic_read_RGBA_span_BGRA8888_REV_SSE: + pushl %esi +@@ -335,7 +333,6 @@ _generic_read_RGBA_span_BGRA8888_REV_SSE + + .text + .globl _generic_read_RGBA_span_BGRA8888_REV_SSE2 +-.hidden _generic_read_RGBA_span_BGRA8888_REV_SSE2 + .type _generic_read_RGBA_span_BGRA8888_REV_SSE2, @function + _generic_read_RGBA_span_BGRA8888_REV_SSE2: + pushl %esi +@@ -494,7 +491,6 @@ _generic_read_RGBA_span_BGRA8888_REV_SSE + + .text + .globl _generic_read_RGBA_span_RGB565_MMX +- .hidden _generic_read_RGBA_span_RGB565_MMX + .type _generic_read_RGBA_span_RGB565_MMX, @function + + _generic_read_RGBA_span_RGB565_MMX: diff --git a/abs/core-testing/xf86-video-sisusb/PKGBUILD b/abs/core-testing/xf86-video-sisusb/PKGBUILD index 43992ab..0d205b1 100644 --- a/abs/core-testing/xf86-video-sisusb/PKGBUILD +++ b/abs/core-testing/xf86-video-sisusb/PKGBUILD @@ -1,23 +1,23 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 11481 2008-08-31 16:45:57Z jgc $ #Maintainer: Jan de Groot <jgc@archlinux.org> pkgname=xf86-video-sisusb -pkgver=0.8.1 -pkgrel=4 +pkgver=0.9.0 +pkgrel=1 pkgdesc="X.org SiS USB video driver" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" depends=('glibc') -makedepends=('pkgconfig' 'xorg-server>=1.1.1') +makedepends=('pkgconfig' 'xorg-server>=1.4.99.906') +conflicts=('xorg-server<1.4.99.906') groups=('xorg-video-drivers') options=('!libtool') source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) -md5sums=('cbd669507e4aa35e468905f09b546333') +md5sums=('7b1f5465f423a859f306f4f1d6306a1b') build() { cd ${startdir}/src/${pkgname}-${pkgver} - ./configure --prefix=/usr \ - --build=${CHOST} --host=${CHOST} + ./configure --prefix=/usr || return 1 make || return 1 make DESTDIR=${startdir}/pkg install || return 1 } diff --git a/abs/core-testing/xf86-video-tdfx/PKGBUILD b/abs/core-testing/xf86-video-tdfx/PKGBUILD index 82a75af..0f62948 100644 --- a/abs/core-testing/xf86-video-tdfx/PKGBUILD +++ b/abs/core-testing/xf86-video-tdfx/PKGBUILD @@ -1,49 +1,48 @@ -# $Id: PKGBUILD 3259 2008-06-21 18:34:20Z jgc $ +# $Id: PKGBUILD 22277 2008-12-25 17:00:41Z jgc $ # Maintainer: Alexander Baldeck <alexander@archlinux.org> # Contributor: Jan de Groot <jgc@archlinux.org> pkgname=xf86-video-tdfx -pkgver=1.4.0 +pkgver=1.4.1 pkgrel=1 pkgdesc="X.org tdfx video driver" -_mesaver="7.0.3" +_mesaver="7.2" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" -depends=('expat>=2.0' 'libdrm>=2.3.0') -makedepends=('pkgconfig' 'xorg-server>=1.4.0.90' 'imake' 'mesa>=7.0.3') +depends=('libgl>=7.2') +makedepends=('pkgconfig' 'xorg-server>=1.5.3' 'mesa>=7.2') +conflicts=('xorg-server<1.5.3') options=(!libtool) groups=('xorg-video-drivers') source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2 - http://downloads.sourceforge.net/sourceforge/mesa3d/MesaLib-${_mesaver}.tar.bz2) + http://downloads.sourceforge.net/sourceforge/mesa3d/MesaLib-${_mesaver}.tar.bz2 + mesa-7.1-link-shared.patch) +md5sums=('59acf2a4f721f9b7abbd121748467b16' + '04d379292e023df0b0266825cb0dbde5' + 'f0baa948d9810f268413111ee439d24b') build() { - cd ${startdir}/src/${pkgname}-${pkgver} + cd "${srcdir}/${pkgname}-${pkgver}" ./configure --prefix=/usr \ --enable-dri || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 + make DESTDIR="${pkgdir}" install || return 1 - cd ${startdir}/src/Mesa-${_mesaver} - cd configs - - CONFIG="linux-dri-x86" - [ "$CARCH" = "x86_64" ] && CONFIG="linux-dri-x86-64" - echo "EXTRA_LIB_PATH =" >> ${CONFIG} - echo "OPT_FLAGS = ${CFLAGS} -fno-strict-aliasing" >> ${CONFIG} - echo "SRC_DIRS = glx/x11 mesa" >> ${CONFIG} - echo "USING_EGL = 0" >> ${CONFIG} - echo "PROGRAM_DIRS =" >> ${CONFIG} - echo "MKDEP = makedepend" >> ${CONFIG} - echo "DRI_DIRS = tdfx" >> ${CONFIG} - echo "DRI_DRIVER_SEARCH_DIR = /usr/lib/xorg/modules/dri" >> ${CONFIG} - echo "DRI_DRIVER_INSTALL_DIR = /usr/lib/xorg/modules/dri" >> ${CONFIG} - echo "ARCH_FLAGS += -DGLX_USE_TLS" >> ${CONFIG} - echo "X11_INCLUDES = `pkg-config --cflags-only-I x11`" >> ${CONFIG} - - ln -s ${CONFIG} current - cd ${startdir}/src/Mesa-${_mesaver}/src/mesa - make linux-solo || return 1 - cd drivers/dri - make DESTDIR=${startdir}/pkg install || return 1 + cd "${srcdir}/Mesa-${_mesaver}" + patch -Np1 -i "${srcdir}/mesa-7.1-link-shared.patch" || return 1 + ./configure --prefix=/usr \ + --with-dri-driverdir=/usr/lib/xorg/modules/dri \ + --with-dri-drivers=tdfx \ + --enable-glx-tls \ + --disable-ttm-api \ + --with-driver=dri \ + --enable-xcb \ + --disable-glu \ + --disable-glut \ + --disable-glw || return 1 + make || return 1 + cd src/mesa/drivers/dri || return 1 + make DESTDIR="${pkgdir}" install || return 1 + rm -rf "${pkgdir}/usr/lib/pkgconfig" + rm -rf "${pkgdir}/usr/include" + rm -f "${pkgdir}/usr/lib/xorg/modules/dri/libdricore.so" } -md5sums=('b13132f24683ef759bfb0c1db5096496' - 'e6e6379d7793af40a6bc3ce1bace572e') diff --git a/abs/core-testing/xf86-video-tdfx/mesa-7.1-link-shared.patch b/abs/core-testing/xf86-video-tdfx/mesa-7.1-link-shared.patch new file mode 100644 index 0000000..7fdbf14 --- /dev/null +++ b/abs/core-testing/xf86-video-tdfx/mesa-7.1-link-shared.patch @@ -0,0 +1,102 @@ +diff -up mesa-20080814/src/mesa/drivers/dri/Makefile.dricore mesa-20080814/src/mesa/drivers/dri/Makefile +--- mesa-20080814/src/mesa/drivers/dri/Makefile.dricore 2008-08-14 02:28:38.000000000 +1000 ++++ mesa-20080814/src/mesa/drivers/dri/Makefile 2008-08-14 16:18:20.000000000 +1000 +@@ -6,12 +6,17 @@ include $(TOP)/configs/current + + + +-default: $(TOP)/$(LIB_DIR) subdirs ++default: $(TOP)/$(LIB_DIR) $(TOP)/$(LIB_DIR)/libdricore.so subdirs + + + $(TOP)/$(LIB_DIR): + -mkdir $(TOP)/$(LIB_DIR) + ++libdricore.so: ++ gcc -shared -o libdricore.so -Wl,--whole-archive ../../libmesa.a -Wl,--no-whole-archive -lm -lpthread -lc ++ ++$(TOP)/$(LIB_DIR)/libdricore.so: $(TOP)/$(LIB_DIR) libdricore.so ++ $(INSTALL) libdricore.so $(TOP)/$(LIB_DIR) + + subdirs: + @for dir in $(DRI_DIRS) ; do \ +@@ -31,12 +36,14 @@ dri.pc: dri.pc.in + $(pcedit) $< > $@ + + +-install: dri.pc ++install: dri.pc $(TOP)/$(LIB_DIR)/libdricore.so + @for dir in $(DRI_DIRS) ; do \ + if [ -d $$dir ] ; then \ + (cd $$dir && $(MAKE) install) || exit 1 ; \ + fi \ + done ++ $(INSTALL) -d $(DESTDIR)$(DRI_DRIVER_INSTALL_DIR) ++ $(INSTALL) -m 755 $(TOP)/$(LIB_DIR)/libdricore.so $(DESTDIR)$(DRI_DRIVER_INSTALL_DIR) + $(INSTALL) -d $(DESTDIR)$(INSTALL_INC_DIR)/GL/internal + $(INSTALL) -m 0644 $(TOP)/include/GL/internal/dri_interface.h \ + $(DESTDIR)$(INSTALL_INC_DIR)/GL/internal +@@ -52,5 +59,6 @@ clean: + (cd $$dir && $(MAKE) clean) ; \ + fi \ + done ++ -rm -f libdricore.so $(TOP)/$(LIB_DIR)/libdricore.so + -rm -f common/*.o + -rm -f *.pc +diff -up mesa-20080814/src/mesa/drivers/dri/Makefile.template.dricore mesa-20080814/src/mesa/drivers/dri/Makefile.template +--- mesa-20080814/src/mesa/drivers/dri/Makefile.template.dricore 2008-08-14 02:28:38.000000000 +1000 ++++ mesa-20080814/src/mesa/drivers/dri/Makefile.template 2008-08-14 16:19:37.000000000 +1000 +@@ -1,6 +1,6 @@ + # -*-makefile-*- + +-MESA_MODULES = $(TOP)/src/mesa/libmesa.a ++MESA_MODULES = $(TOP)/$(LIB_DIR)/libdricore.so + + COMMON_SOURCES = \ + ../common/utils.c \ +@@ -64,7 +64,9 @@ default: symlinks depend $(LIBNAME) $(TO + + $(LIBNAME): $(OBJECTS) $(MESA_MODULES) $(WINOBJ) Makefile $(TOP)/src/mesa/drivers/dri/Makefile.template + $(MKLIB) -o $@ -noprefix -linker '$(CC)' -ldflags '$(LDFLAGS)' \ +- $(OBJECTS) $(MESA_MODULES) $(WINOBJ) $(DRI_LIB_DEPS) ++ $(OBJECTS) $(WINOBJ) \ ++ -L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) -ldricore \ ++ $(DRI_LIB_DEPS) + + + $(TOP)/$(LIB_DIR)/$(LIBNAME): $(LIBNAME) +diff -up mesa-20080814/src/mesa/x86/read_rgba_span_x86.S.dricore mesa-20080814/src/mesa/x86/read_rgba_span_x86.S +--- mesa-20080814/src/mesa/x86/read_rgba_span_x86.S.dricore 2008-08-14 02:28:38.000000000 +1000 ++++ mesa-20080814/src/mesa/x86/read_rgba_span_x86.S 2008-08-14 16:16:49.000000000 +1000 +@@ -77,7 +77,6 @@ + */ + + .globl _generic_read_RGBA_span_BGRA8888_REV_MMX +-.hidden _generic_read_RGBA_span_BGRA8888_REV_MMX + .type _generic_read_RGBA_span_BGRA8888_REV_MMX, @function + _generic_read_RGBA_span_BGRA8888_REV_MMX: + pushl %ebx +@@ -172,7 +171,6 @@ _generic_read_RGBA_span_BGRA8888_REV_MMX + */ + + .globl _generic_read_RGBA_span_BGRA8888_REV_SSE +-.hidden _generic_read_RGBA_span_BGRA8888_REV_SSE + .type _generic_read_RGBA_span_BGRA8888_REV_SSE, @function + _generic_read_RGBA_span_BGRA8888_REV_SSE: + pushl %esi +@@ -335,7 +333,6 @@ _generic_read_RGBA_span_BGRA8888_REV_SSE + + .text + .globl _generic_read_RGBA_span_BGRA8888_REV_SSE2 +-.hidden _generic_read_RGBA_span_BGRA8888_REV_SSE2 + .type _generic_read_RGBA_span_BGRA8888_REV_SSE2, @function + _generic_read_RGBA_span_BGRA8888_REV_SSE2: + pushl %esi +@@ -494,7 +491,6 @@ _generic_read_RGBA_span_BGRA8888_REV_SSE + + .text + .globl _generic_read_RGBA_span_RGB565_MMX +- .hidden _generic_read_RGBA_span_RGB565_MMX + .type _generic_read_RGBA_span_RGB565_MMX, @function + + _generic_read_RGBA_span_RGB565_MMX: diff --git a/abs/core-testing/xf86-video-trident/PKGBUILD b/abs/core-testing/xf86-video-trident/PKGBUILD index 5616e12..874f185 100644 --- a/abs/core-testing/xf86-video-trident/PKGBUILD +++ b/abs/core-testing/xf86-video-trident/PKGBUILD @@ -1,49 +1,49 @@ -# $Id: PKGBUILD 3257 2008-06-21 18:32:30Z jgc $ +# $Id: PKGBUILD 22291 2008-12-25 17:22:27Z jgc $ # Maintainer: Alexander Baldeck <alexander@archlinux.org> # Contributor: Jan de Groot <jgc@archlinux.org> pkgname=xf86-video-trident -pkgver=1.3.0 -pkgrel=2 +pkgver=1.3.1 +pkgrel=1 pkgdesc="X.org Trident video driver" -_mesaver="7.0.3" +_mesaver="7.2" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" -depends=('libdrm>=2.3.0' 'expat>=2.0') -makedepends=('pkgconfig' 'xorg-server>=1.4.0.90' 'imake' 'mesa>=7.0.3' 'xf86driproto') +depends=('libgl>=7.2') +makedepends=('pkgconfig' 'xorg-server>=1.5.3' 'mesa>=7.2' 'xf86driproto') +conflicts=('xorg-server<1.5.3') groups=('xorg-video-drivers') options=(!libtool) source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2 - http://downloads.sourceforge.net/sourceforge/mesa3d/MesaLib-${_mesaver}.tar.bz2) + http://downloads.sourceforge.net/sourceforge/mesa3d/MesaLib-${_mesaver}.tar.bz2 + mesa-7.1-link-shared.patch) +md5sums=('9f280bef235426394013cb5e1854b823' + '04d379292e023df0b0266825cb0dbde5' + 'f0baa948d9810f268413111ee439d24b') build() { - cd ${startdir}/src/${pkgname}-${pkgver} + cd "${srcdir}/${pkgname}-${pkgver}" ./configure --prefix=/usr \ --enable-dri || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 + make DESTDIR="${pkgdir}" install || return 1 - cd ${startdir}/src/Mesa-${_mesaver} - cd configs - - CONFIG="linux-dri-x86" - [ "$CARCH" = "x86_64" ] && CONFIG="linux-dri-x86-64" - echo "EXTRA_LIB_PATH =" >> ${CONFIG} - echo "OPT_FLAGS = ${CFLAGS}" >> ${CONFIG} - echo "SRC_DIRS = glx/x11 mesa" >> ${CONFIG} - echo "USING_EGL = 0" >> ${CONFIG} - echo "PROGRAM_DIRS =" >> ${CONFIG} - echo "MKDEP = makedepend" >> ${CONFIG} - echo "DRI_DIRS = trident" >> ${CONFIG} - echo "DRI_DRIVER_SEARCH_DIR = /usr/lib/xorg/modules/dri" >> ${CONFIG} - echo "DRI_DRIVER_INSTALL_DIR = /usr/lib/xorg/modules/dri" >> ${CONFIG} - echo "ARCH_FLAGS += -DGLX_USE_TLS" >> ${CONFIG} - echo "X11_INCLUDES = `pkg-config --cflags-only-I x11`" >> ${CONFIG} - - ln -s ${CONFIG} current - cd ${startdir}/src/Mesa-${_mesaver}/src/mesa - make linux-solo || return 1 - cd drivers/dri - make DESTDIR=${startdir}/pkg install || return 1 + cd "${srcdir}/Mesa-${_mesaver}" + cd ${srcdir}/Mesa-${pkgver} + patch -Np1 -i "${srcdir}/mesa-7.1-link-shared.patch" || return 1 + ./configure --prefix=/usr \ + --with-dri-driverdir=/usr/lib/xorg/modules/dri \ + --with-dri-drivers=trident \ + --enable-glx-tls \ + --disable-ttm-api \ + --with-driver=dri \ + --enable-xcb \ + --disable-glu \ + --disable-glut \ + --disable-glw || return 1 + make || return 1 + cd src/mesa/drivers/dri || return 1 + make DESTDIR="${pkgdir}" install || return 1 + rm -rf "${pkgdir}/usr/lib/pkgconfig" + rm -rf "${pkgdir}/usr/include" + rm -f "${pkgdir}/usr/lib/xorg/modules/dri/libdricore.so" } -md5sums=('e89799579d0cf3858362bd751469e0bf' - 'e6e6379d7793af40a6bc3ce1bace572e') diff --git a/abs/core-testing/xf86-video-trident/mesa-7.1-link-shared.patch b/abs/core-testing/xf86-video-trident/mesa-7.1-link-shared.patch new file mode 100644 index 0000000..7fdbf14 --- /dev/null +++ b/abs/core-testing/xf86-video-trident/mesa-7.1-link-shared.patch @@ -0,0 +1,102 @@ +diff -up mesa-20080814/src/mesa/drivers/dri/Makefile.dricore mesa-20080814/src/mesa/drivers/dri/Makefile +--- mesa-20080814/src/mesa/drivers/dri/Makefile.dricore 2008-08-14 02:28:38.000000000 +1000 ++++ mesa-20080814/src/mesa/drivers/dri/Makefile 2008-08-14 16:18:20.000000000 +1000 +@@ -6,12 +6,17 @@ include $(TOP)/configs/current + + + +-default: $(TOP)/$(LIB_DIR) subdirs ++default: $(TOP)/$(LIB_DIR) $(TOP)/$(LIB_DIR)/libdricore.so subdirs + + + $(TOP)/$(LIB_DIR): + -mkdir $(TOP)/$(LIB_DIR) + ++libdricore.so: ++ gcc -shared -o libdricore.so -Wl,--whole-archive ../../libmesa.a -Wl,--no-whole-archive -lm -lpthread -lc ++ ++$(TOP)/$(LIB_DIR)/libdricore.so: $(TOP)/$(LIB_DIR) libdricore.so ++ $(INSTALL) libdricore.so $(TOP)/$(LIB_DIR) + + subdirs: + @for dir in $(DRI_DIRS) ; do \ +@@ -31,12 +36,14 @@ dri.pc: dri.pc.in + $(pcedit) $< > $@ + + +-install: dri.pc ++install: dri.pc $(TOP)/$(LIB_DIR)/libdricore.so + @for dir in $(DRI_DIRS) ; do \ + if [ -d $$dir ] ; then \ + (cd $$dir && $(MAKE) install) || exit 1 ; \ + fi \ + done ++ $(INSTALL) -d $(DESTDIR)$(DRI_DRIVER_INSTALL_DIR) ++ $(INSTALL) -m 755 $(TOP)/$(LIB_DIR)/libdricore.so $(DESTDIR)$(DRI_DRIVER_INSTALL_DIR) + $(INSTALL) -d $(DESTDIR)$(INSTALL_INC_DIR)/GL/internal + $(INSTALL) -m 0644 $(TOP)/include/GL/internal/dri_interface.h \ + $(DESTDIR)$(INSTALL_INC_DIR)/GL/internal +@@ -52,5 +59,6 @@ clean: + (cd $$dir && $(MAKE) clean) ; \ + fi \ + done ++ -rm -f libdricore.so $(TOP)/$(LIB_DIR)/libdricore.so + -rm -f common/*.o + -rm -f *.pc +diff -up mesa-20080814/src/mesa/drivers/dri/Makefile.template.dricore mesa-20080814/src/mesa/drivers/dri/Makefile.template +--- mesa-20080814/src/mesa/drivers/dri/Makefile.template.dricore 2008-08-14 02:28:38.000000000 +1000 ++++ mesa-20080814/src/mesa/drivers/dri/Makefile.template 2008-08-14 16:19:37.000000000 +1000 +@@ -1,6 +1,6 @@ + # -*-makefile-*- + +-MESA_MODULES = $(TOP)/src/mesa/libmesa.a ++MESA_MODULES = $(TOP)/$(LIB_DIR)/libdricore.so + + COMMON_SOURCES = \ + ../common/utils.c \ +@@ -64,7 +64,9 @@ default: symlinks depend $(LIBNAME) $(TO + + $(LIBNAME): $(OBJECTS) $(MESA_MODULES) $(WINOBJ) Makefile $(TOP)/src/mesa/drivers/dri/Makefile.template + $(MKLIB) -o $@ -noprefix -linker '$(CC)' -ldflags '$(LDFLAGS)' \ +- $(OBJECTS) $(MESA_MODULES) $(WINOBJ) $(DRI_LIB_DEPS) ++ $(OBJECTS) $(WINOBJ) \ ++ -L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) -ldricore \ ++ $(DRI_LIB_DEPS) + + + $(TOP)/$(LIB_DIR)/$(LIBNAME): $(LIBNAME) +diff -up mesa-20080814/src/mesa/x86/read_rgba_span_x86.S.dricore mesa-20080814/src/mesa/x86/read_rgba_span_x86.S +--- mesa-20080814/src/mesa/x86/read_rgba_span_x86.S.dricore 2008-08-14 02:28:38.000000000 +1000 ++++ mesa-20080814/src/mesa/x86/read_rgba_span_x86.S 2008-08-14 16:16:49.000000000 +1000 +@@ -77,7 +77,6 @@ + */ + + .globl _generic_read_RGBA_span_BGRA8888_REV_MMX +-.hidden _generic_read_RGBA_span_BGRA8888_REV_MMX + .type _generic_read_RGBA_span_BGRA8888_REV_MMX, @function + _generic_read_RGBA_span_BGRA8888_REV_MMX: + pushl %ebx +@@ -172,7 +171,6 @@ _generic_read_RGBA_span_BGRA8888_REV_MMX + */ + + .globl _generic_read_RGBA_span_BGRA8888_REV_SSE +-.hidden _generic_read_RGBA_span_BGRA8888_REV_SSE + .type _generic_read_RGBA_span_BGRA8888_REV_SSE, @function + _generic_read_RGBA_span_BGRA8888_REV_SSE: + pushl %esi +@@ -335,7 +333,6 @@ _generic_read_RGBA_span_BGRA8888_REV_SSE + + .text + .globl _generic_read_RGBA_span_BGRA8888_REV_SSE2 +-.hidden _generic_read_RGBA_span_BGRA8888_REV_SSE2 + .type _generic_read_RGBA_span_BGRA8888_REV_SSE2, @function + _generic_read_RGBA_span_BGRA8888_REV_SSE2: + pushl %esi +@@ -494,7 +491,6 @@ _generic_read_RGBA_span_BGRA8888_REV_SSE + + .text + .globl _generic_read_RGBA_span_RGB565_MMX +- .hidden _generic_read_RGBA_span_RGB565_MMX + .type _generic_read_RGBA_span_RGB565_MMX, @function + + _generic_read_RGBA_span_RGB565_MMX: diff --git a/abs/core-testing/xf86-video-tseng/PKGBUILD b/abs/core-testing/xf86-video-tseng/PKGBUILD index 6863c46..f5909d7 100644 --- a/abs/core-testing/xf86-video-tseng/PKGBUILD +++ b/abs/core-testing/xf86-video-tseng/PKGBUILD @@ -1,23 +1,23 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 22279 2008-12-25 17:02:55Z jgc $ # Maintainer: Alexander Baldeck <alexander@archlinux.org> # Contributor: Jan de Groot <jgc@archlinux.org> pkgname=xf86-video-tseng -pkgver=1.1.1 -pkgrel=4 +pkgver=1.2.1 +pkgrel=1 pkgdesc="X.org tseng video driver" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" depends=('glibc') -makedepends=('pkgconfig' 'xorg-server>=1.2.0') +makedepends=('pkgconfig' 'xorg-server>=1.5.3') +conflicts=('xorg-server<1.5.3') groups=('xorg-video-drivers') options=('!libtool') source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) +md5sums=('2f687eddae5dafa5dcc05116561e267c') build() { - cd ${startdir}/src/${pkgname}-${pkgver} - ./configure --prefix=/usr \ - --build=${CHOST} --host=${CHOST} + cd "${srcdir}/${pkgname}-${pkgver}" + ./configure --prefix=/usr || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 + make DESTDIR="${pkgdir}" install || return 1 } -md5sums=('488aa9c3ec7a95e6589afa4b50bec8b4') diff --git a/abs/core-testing/xf86-video-unichrome/PKGBUILD b/abs/core-testing/xf86-video-unichrome/PKGBUILD index 2f618ca..7f3bc57 100644 --- a/abs/core-testing/xf86-video-unichrome/PKGBUILD +++ b/abs/core-testing/xf86-video-unichrome/PKGBUILD @@ -1,26 +1,23 @@ -# $Id: PKGBUILD 3256 2008-06-21 18:31:47Z jgc $ +# $Id: PKGBUILD 22301 2008-12-25 18:28:12Z jgc $ # Maintainer: Jan de Groot <jgc@archlinux.org> pkgname=xf86-video-unichrome -pkgver=0.2.6 -pkgrel=8 +pkgver=0.2.7 +pkgrel=0.1 +_gitversion=1464eb9ecb178163af0e85443c3e591755c8c320 pkgdesc="Unichrome video drivers for X.Org" arch=(i686 x86_64) url="http://unichrome.sf.net/" -depends=('unichrome-dri>=7.0.3') -makedepends=('pkgconfig' 'xorg-server>=1.4.0.90' 'xorg-util-macros' 'xf86driproto' \ - 'glproto' 'mesa>=7.0.3' 'autoconf' 'automake' 'libtool') +depends=('unichrome-dri>=7.2') +makedepends=('pkgconfig' 'xorg-server>=1.5.3' 'xorg-util-macros' 'xf86driproto' 'glproto' 'mesa>=7.2' 'autoconf' 'automake' 'libtool') options=('!libtool') -conflicts=('xf86-video-via' 'openchrome') -groups=('xorg-video-drivers') -source=(http://downloads.sf.net/unichrome/${pkgname}-${pkgver}.tar.gz - fix-defines.patch) -md5sums=('fd81a739ae8145bb9729fa9665ef426c' '84142497ed91048bb2d0d082ce8a0229') +conflicts=('xf86-video-via' 'openchrome' 'xf86-video-openchrome' 'xorg-server<1.5.3') +source=(http://cgit.freedesktop.org/~libv/${pkgname}/snapshot/${pkgname}-${_gitversion}.tar.bz2) +md5sums=('dfef1e3b9ed24d50938ea5ee6f708457') build() { - cd ${startdir}/src/${pkgname}-${pkgver} - patch -Np1 -i ${startdir}/src/fix-defines.patch || return 1 + cd "${srcdir}/${pkgname}-${_gitversion}" ./autogen.sh --prefix=/usr \ --enable-dri make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 + make DESTDIR="${pkgdir}" install || return 1 } diff --git a/abs/core-testing/xf86-video-v4l/PKGBUILD b/abs/core-testing/xf86-video-v4l/PKGBUILD index dc8ba80..518e267 100644 --- a/abs/core-testing/xf86-video-v4l/PKGBUILD +++ b/abs/core-testing/xf86-video-v4l/PKGBUILD @@ -1,23 +1,23 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 11496 2008-08-31 16:52:37Z jgc $ #Maintainer: Jan de Groot <jgc@archlinux.org> pkgname=xf86-video-v4l -pkgver=0.1.1 -pkgrel=4 +pkgver=0.2.0 +pkgrel=1 pkgdesc="X.org v4l video driver" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" depends=('glibc') -makedepends=('pkgconfig' 'xorg-server>=1.1.1') +makedepends=('pkgconfig' 'xorg-server>=1.4.99.906') +conflicts=('xorg-server<1.4.99.906') groups=('xorg-video-drivers') options=('!libtool') source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) -md5sums=('69339c38eba2cebc357d67e7a755d734') +md5sums=('2251ae2a0a905764941cd7b098e85ad1') build() { cd ${startdir}/src/${pkgname}-${pkgver} - ./configure --prefix=/usr \ - --build=${CHOST} --host=${CHOST} + ./configure --prefix=/usr || return 1 make || return 1 make DESTDIR=${startdir}/pkg install || return 1 } diff --git a/abs/core-testing/xf86-video-vesa/PKGBUILD b/abs/core-testing/xf86-video-vesa/PKGBUILD index ed4acc7..bbccb88 100644 --- a/abs/core-testing/xf86-video-vesa/PKGBUILD +++ b/abs/core-testing/xf86-video-vesa/PKGBUILD @@ -1,21 +1,20 @@ -# $Id: PKGBUILD 5566 2008-07-18 20:48:52Z jgc $ +# $Id: PKGBUILD 22267 2008-12-25 16:51:23Z jgc $ # Maintainer: Alexander Baldeck <alexander@archlinux.org> # Contributor: Jan de Groot <jgc@archlinux.org> pkgname=xf86-video-vesa -pkgver=1.3.0 -pkgrel=6 +pkgver=2.1.0 +pkgrel=1 pkgdesc="X.org vesa video driver" arch=(i686 x86_64) license=('custom') url="http://xorg.freedesktop.org/" depends=('glibc') -makedepends=('pkgconfig' 'xorg-server>=1.4.2') +makedepends=('pkgconfig' 'xorg-server>=1.5.3') +conflicts=('xorg-server<1.5.3') groups=('xorg' 'xorg-video-drivers') -options=('!libtool' 'force') -source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2 - COPYING) -md5sums=('4a307852f3b4850e436a41dab2a73676' - 'e5418e7a75e21268637984e70265e146') +options=('!libtool') +source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) +md5sums=('d813269613b4d63ff6dbfbfbd104cc84') build() { cd ${startdir}/src/${pkgname}-${pkgver} @@ -23,5 +22,5 @@ build() { make || return 1 make DESTDIR=${startdir}/pkg install || return 1 install -d -m755 ${pkgdir}/usr/share/licenses/${pkgname} - install -m644 ${srcdir}/COPYING ${pkgdir}/usr/share/licenses/${pkgname}/ || return 1 + install -m644 COPYING ${pkgdir}/usr/share/licenses/${pkgname}/ || return 1 } diff --git a/abs/core-testing/xf86-video-vga/PKGBUILD b/abs/core-testing/xf86-video-vga/PKGBUILD index 1ac84a7..034c440 100644 --- a/abs/core-testing/xf86-video-vga/PKGBUILD +++ b/abs/core-testing/xf86-video-vga/PKGBUILD @@ -1,23 +1,29 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 15043 2008-10-12 12:14:52Z jgc $ #Maintainer: Jan de Groot <jgc@archlinux.org> pkgname=xf86-video-vga pkgver=4.1.0 -pkgrel=4 +pkgrel=6 pkgdesc="X.org VGA 16 color video driver" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" depends=('glibc') -makedepends=('pkgconfig' 'xorg-server>=1.1.1') -groups=('xorg-video-drivers') +makedepends=('pkgconfig' 'xorg-server>=1.5.2') +conflicts=('xorg-server<1.5.2') options=('!libtool') -source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) -md5sums=('b93e5fe9757db779a75cd3ce97b9613d') +source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2 + pciaccess.patch) +md5sums=('b93e5fe9757db779a75cd3ce97b9613d' + 'fe3a45179f51fb86215f6fd2b5ac0747') build() { - cd ${startdir}/src/${pkgname}-${pkgver} - ./configure --prefix=/usr \ - --build=${CHOST} --host=${CHOST} + cd "${srcdir}/${pkgname}-${pkgver}" + patch -Np1 -i "${srcdir}/pciaccess.patch" || return 1 + libtoolize --force || return 1 + aclocal || return 1 + autoconf || return 1 + automake || return 1 + ./configure --prefix=/usr || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 + make DESTDIR="${pkgdir}" install || return 1 } diff --git a/abs/core-testing/xf86-video-vga/pciaccess.patch b/abs/core-testing/xf86-video-vga/pciaccess.patch new file mode 100644 index 0000000..141701f --- /dev/null +++ b/abs/core-testing/xf86-video-vga/pciaccess.patch @@ -0,0 +1,371 @@ +From: Paulo Cesar Pereira de Andrade <pcpa@mandriva.com.br> +Date: Fri, 18 Jul 2008 21:27:26 +0000 (-0300) +Subject: Add libpciaccess and remove xf1bpp and xf4bpp support. +X-Git-Url: http://gitweb.freedesktop.org/?p=xorg/driver/xf86-video-vga.git;a=commitdiff;h=97e2d12548921d92b6dc2dcce8abee48f25981d2 + +Add libpciaccess and remove xf1bpp and xf4bpp support. + + The driver is not fully functional, starts at 320x200, but may require +running something like vbetool post before starting the X Server, and does +not restore console as usually linux consoles use vesafb, but should work +correctly if console is in a "standard vga mode". +--- + +--- a/configure.ac ++++ b/configure.ac +@@ -57,6 +57,22 @@ PKG_CHECK_MODULES(XORG, [xorg-server >= + sdkdir=$(pkg-config --variable=sdkdir xorg-server) + + # Checks for libraries. ++SAVE_CPPFLAGS="$CPPFLAGS" ++CPPFLAGS="$CPPFLAGS $XORG_CFLAGS" ++AC_CHECK_DECL(XSERVER_LIBPCIACCESS, ++ [XSERVER_LIBPCIACCESS=yes], [XSERVER_LIBPCIACCESS=no], ++ [#include "xorg-server.h"]) ++AC_CHECK_HEADER(xf1bpp.h,[AC_DEFINE(HAVE_XF1BPP, 1, [Have 1bpp support])],[]) ++AC_CHECK_HEADER(xf4bpp.h,[AC_DEFINE(HAVE_XF4BPP, 1, [Have 4bpp support])],[]) ++CPPFLAGS="$SAVE_CPPFLAGS" ++ ++if test "x$XSERVER_LIBPCIACCESS" = xyes; then ++ PKG_CHECK_MODULES([PCIACCESS], [pciaccess >= 0.8.0]) ++ XORG_CFLAGS="$XORG_CFLAGS $PCIACCESS_CFLAGS" ++fi ++AM_CONDITIONAL(XSERVER_LIBPCIACCESS, test "x$XSERVER_LIBPCIACCESS" = xyes) ++ ++# Checks for libraries. + + # Checks for header files. + AC_HEADER_STDC +--- a/src/generic.c ++++ b/src/generic.c +@@ -50,8 +50,13 @@ + + #include "fb.h" + ++#if HAVE_XF4BPP + #include "xf4bpp.h" ++#endif ++ ++#if HAVE_XF1BPP + #include "xf1bpp.h" ++#endif + + #include "shadowfb.h" + +@@ -62,6 +67,10 @@ + #include "xf86Resources.h" + #include "xf86int10.h" + ++#ifdef XSERVER_LIBPCIACCESS ++#include <pciaccess.h> ++#endif ++ + /* Some systems #define VGA for their own purposes */ + #undef VGA + +@@ -79,10 +88,31 @@ + #define CLOCK_TOLERANCE 2000 /* Clock matching tolerance (2MHz) */ + #endif + ++/* ++ * This structure is used to wrap the screen's CloseScreen vector. ++ */ ++typedef struct _GenericRec ++{ ++ Bool ShadowFB; ++ Bool KGAUniversal; ++ CARD8 * ShadowPtr; ++ CARD32 ShadowPitch; ++ CloseScreenProcPtr CloseScreen; ++ OptionInfoPtr Options; ++#ifdef XSERVER_LIBPCIACCESS ++ struct pci_device *pciInfo; ++#endif ++} GenericRec, *GenericPtr; ++ ++ + /* Forward definitions */ + static const OptionInfoRec *GenericAvailableOptions(int chipid, int busid); + static void GenericIdentify(int); + static Bool GenericProbe(DriverPtr, int); ++#ifdef XSERVER_LIBPCIACCESS ++static Bool GenericPciProbe(DriverPtr drv, int entity_num, ++ struct pci_device *dev, intptr_t match_data); ++#endif + static Bool GenericPreInit(ScrnInfoPtr, int); + static Bool GenericScreenInit(int, ScreenPtr, int, char **); + static Bool GenericSwitchMode(int, DisplayModePtr, int); +@@ -97,6 +127,24 @@ static Bool GenericMapMe + + static ModeStatus GenericValidMode(int, DisplayModePtr, Bool, int); + ++static GenericPtr GenericGetRec(ScrnInfoPtr pScreenInfo); ++ ++enum GenericTypes ++{ ++ CHIP_VGA_GENERIC ++}; ++ ++#ifdef XSERVER_LIBPCIACCESS ++static const struct pci_id_match generic_device_match[] = { ++ { ++ PCI_MATCH_ANY, PCI_MATCH_ANY, PCI_MATCH_ANY, PCI_MATCH_ANY, ++ 0x00030000, 0x00ffffff, CHIP_VGA_GENERIC ++ }, ++ ++ { 0, 0, 0 }, ++}; ++#endif ++ + /* The root of all evil... */ + _X_EXPORT DriverRec VGA = + { +@@ -106,7 +154,13 @@ _X_EXPORT DriverRec VGA = + GenericProbe, + GenericAvailableOptions, + NULL, +- 0 ++ 0, ++ NULL, ++ ++#ifdef XSERVER_LIBPCIACCESS ++ generic_device_match, ++ GenericPciProbe ++#endif + }; + + typedef enum +@@ -146,8 +200,12 @@ static const char *vgahwSymbols[] = + #ifdef XFree86LOADER + static const char *miscfbSymbols[] = + { ++#if HAVE_XF1BPP + "xf1bppScreenInit", ++#endif ++#if HAVE_XF4BPP + "xf4bppScreenInit", ++#endif + NULL + }; + #endif +@@ -210,7 +268,13 @@ GenericSetup(pointer Module, pointer Opt + if (!Initialised) + { + Initialised = TRUE; +- xf86AddDriver(&VGA, Module, 0); ++ xf86AddDriver(&VGA, Module, ++#ifdef XSERVER_LIBPCIACCESS ++ HaveDriverFuncs ++#else ++ 0 ++#endif ++ ); + LoaderRefSymLists(vgahwSymbols, miscfbSymbols, fbSymbols, + shadowfbSymbols, int10Symbols, NULL); + return (pointer)TRUE; +@@ -224,11 +288,6 @@ GenericSetup(pointer Module, pointer Opt + #endif + + +-enum GenericTypes +-{ +- CHIP_VGA_GENERIC +-}; +- + /* Supported chipsets */ + static SymTabRec GenericChipsets[] = + { +@@ -236,11 +295,13 @@ static SymTabRec GenericChipsets[] = + {-1, NULL} + }; + ++#ifndef XSERVER_LIBPCIACCESS + static PciChipsets GenericPCIchipsets[] = + { + {CHIP_VGA_GENERIC, PCI_CHIP_VGA, RES_SHARED_VGA}, + {-1, -1, RES_UNDEFINED}, + }; ++#endif + + static IsaChipsets GenericISAchipsets[] = + { +@@ -267,6 +328,37 @@ GenericAvailableOptions(int chipid, int + * do a minimal probe for supported hardware. + */ + ++#ifdef XSERVER_LIBPCIACCESS ++static Bool ++GenericPciProbe(DriverPtr drv, int entity_num, struct pci_device *dev, ++ intptr_t match_data) ++{ ++ ScrnInfoPtr pScrn; ++ ++ pScrn = xf86ConfigPciEntity(NULL, 0, entity_num, NULL, ++ NULL, NULL, NULL, NULL, NULL); ++ if (pScrn != NULL) { ++ GenericPtr pGeneric = GenericGetRec(pScrn); ++ ++ pScrn->driverVersion = VGA_VERSION_CURRENT; ++ pScrn->driverName = VGA_DRIVER_NAME; ++ pScrn->name = VGA_NAME; ++ pScrn->Probe = GenericProbe; ++ pScrn->PreInit = GenericPreInit; ++ pScrn->ScreenInit = GenericScreenInit; ++ pScrn->SwitchMode = GenericSwitchMode; ++ pScrn->AdjustFrame = GenericAdjustFrame; ++ pScrn->EnterVT = GenericEnterVT; ++ pScrn->LeaveVT = GenericLeaveVT; ++ pScrn->FreeScreen = GenericFreeScreen; ++ ++ pGeneric->pciInfo = dev; ++ } ++ ++ return (pScrn != NULL); ++} ++#endif ++ + static Bool + GenericProbe(DriverPtr drv, int flags) + { +@@ -283,6 +375,7 @@ GenericProbe(DriverPtr drv, int flags) + if ((numDevSections = xf86MatchDevice(VGA_NAME, &devSections)) <= 0) + return FALSE; + ++#ifndef XSERVER_LIBPCIACCESS + /* PCI BUS */ + if (xf86GetPciVideoInfo()) + { +@@ -324,6 +417,7 @@ GenericProbe(DriverPtr drv, int flags) + xfree(usedChips); + } + } ++#endif + + /* Isa Bus */ + numUsed = xf86MatchIsaInstances(VGA_NAME, GenericChipsets, +@@ -391,20 +485,6 @@ VGAFindIsaDevice(GDevPtr dev) + return (int)CHIP_VGA_GENERIC; + } + +-/* +- * This structure is used to wrap the screen's CloseScreen vector. +- */ +-typedef struct _GenericRec +-{ +- Bool ShadowFB; +- Bool KGAUniversal; +- CARD8 * ShadowPtr; +- CARD32 ShadowPitch; +- CloseScreenProcPtr CloseScreen; +- OptionInfoPtr Options; +-} GenericRec, *GenericPtr; +- +- + static GenericPtr + GenericGetRec(ScrnInfoPtr pScreenInfo) + { +@@ -509,8 +589,14 @@ GenericPreInit(ScrnInfoPtr pScreenInfo, + + switch (pScreenInfo->depth) + { +- case 1: Module = "xf1bpp"; Sym = "xf1bppScreenInit"; break; +- case 4: Module = "xf4bpp"; Sym = "xf4bppScreenInit"; break; ++ case 1: ++#if HAVE_XF1BPP ++ Module = "xf1bpp"; Sym = "xf1bppScreenInit"; break; ++#endif ++ case 4: ++#if HAVE_XF4BPP ++ Module = "xf4bpp"; Sym = "xf4bppScreenInit"; break; ++#endif + case 8: Module = "fb"; break; + + default: +@@ -673,6 +759,8 @@ GenericPreInit(ScrnInfoPtr pScreenInfo, + /* Set display resolution */ + xf86SetDpi(pScreenInfo, 0, 0); + ++ ++#if HAVE_XF1BPP && HAVE_XF4BPP + if (xf86ReturnOptValBool(pGenericPriv->Options, OPTION_SHADOW_FB, FALSE)) + { + pGenericPriv->ShadowFB = TRUE; +@@ -688,7 +776,7 @@ GenericPreInit(ScrnInfoPtr pScreenInfo, + "Enabling universal \"KGA\" treatment.\n"); + } + +-#ifdef SPECIAL_FB_BYTE_ACCESS ++# ifdef SPECIAL_FB_BYTE_ACCESS + if (!pGenericPriv->ShadowFB && (pScreenInfo->depth == 4)) + { + xf86DrvMsg(pScreenInfo->scrnIndex, X_INFO, +@@ -696,8 +784,13 @@ GenericPreInit(ScrnInfoPtr pScreenInfo, + " ShadowFB enabled.\n"); + pGenericPriv->ShadowFB = TRUE; + } ++# endif ++ ++#else ++ pGenericPriv->ShadowFB = TRUE; + #endif + ++ + if (pGenericPriv->ShadowFB) + { + pScreenInfo->bitmapBitOrder = BITMAP_BIT_ORDER; +@@ -1378,6 +1471,7 @@ GenericScreenInit(int scrnIndex, ScreenP + #endif + ShadowFBInit(pScreen, GenericRefreshArea1bpp); + } ++#if HAVE_XF1BPP + else + { + Inited = xf1bppScreenInit(pScreen, pvgaHW->Base, +@@ -1386,6 +1480,7 @@ GenericScreenInit(int scrnIndex, ScreenP + pScreenInfo->xDpi, pScreenInfo->yDpi, + pScreenInfo->displayWidth); + } ++#endif + break; + case 4: + if (pGenericPriv->ShadowFB) +@@ -1410,6 +1505,7 @@ GenericScreenInit(int scrnIndex, ScreenP + #endif + ShadowFBInit(pScreen, GenericRefreshArea4bpp); + } ++#if HAVE_XF4BPP + else + { + Inited = xf4bppScreenInit(pScreen, pvgaHW->Base, +@@ -1418,6 +1514,7 @@ GenericScreenInit(int scrnIndex, ScreenP + pScreenInfo->xDpi, pScreenInfo->yDpi, + pScreenInfo->displayWidth); + } ++#endif + break; + case 8: + Inited = fbScreenInit(pScreen, pvgaHW->Base, +@@ -1579,6 +1676,9 @@ GenericMapMem(ScrnInfoPtr scrp) + { + vgaHWPtr hwp = VGAHWPTR(scrp); + int scr_index = scrp->scrnIndex; ++#ifdef XSERVER_LIBPCIACCESS ++ GenericPtr pPriv = GenericGetRec(scrp); ++#endif + + if (hwp->Base) + return TRUE; +@@ -1589,7 +1689,12 @@ GenericMapMem(ScrnInfoPtr scrp) + if (hwp->MapPhys == 0) + hwp->MapPhys = VGA_DEFAULT_PHYS_ADDR; + +- hwp->Base = xf86MapDomainMemory(scr_index, VIDMEM_MMIO, hwp->Tag, ++ hwp->Base = xf86MapDomainMemory(scr_index, VIDMEM_MMIO, ++#ifdef XSERVER_LIBPCIACCESS ++ pPriv->pciInfo, ++#else ++ hwp->Tag, ++#endif + hwp->MapPhys, hwp->MapSize); + return hwp->Base != NULL; + } diff --git a/abs/core-testing/xf86-video-vmware/PKGBUILD b/abs/core-testing/xf86-video-vmware/PKGBUILD index 5992099..f259c2e 100644 --- a/abs/core-testing/xf86-video-vmware/PKGBUILD +++ b/abs/core-testing/xf86-video-vmware/PKGBUILD @@ -1,18 +1,19 @@ -# $Id: PKGBUILD 3242 2008-06-21 18:06:18Z jgc $ +# $Id: PKGBUILD 11487 2008-08-31 16:48:39Z jgc $ # Maintainer: Alexander Baldeck <alexander@archlinux.org> # Contributor: Jan de Groot <jgc@archlinux.org> pkgname=xf86-video-vmware -pkgver=10.16.2 +pkgver=10.16.5 pkgrel=1 pkgdesc="X.org vmware video driver" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" depends=('glibc') -makedepends=('pkgconfig' 'xorg-server>=1.4.2' 'randrproto' 'renderproto' 'xextproto' 'xineramaproto' 'videoproto') +makedepends=('pkgconfig' 'xorg-server>=1.4.99.906' 'randrproto' 'renderproto' 'xextproto' 'xineramaproto' 'videoproto') +conflicts=('xorg-server<1.4.99.906') groups=('xorg-video-drivers') options=('!libtool') source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) -md5sums=('d79b660e1effb86628930e5c01989216') +md5sums=('6d78c82ea7c2bb0fcb587d7bb4e8f60a') build() { cd ${startdir}/src/${pkgname}-${pkgver} diff --git a/abs/core-testing/xf86-video-voodoo/PKGBUILD b/abs/core-testing/xf86-video-voodoo/PKGBUILD index bbbc518..d35e2ac 100644 --- a/abs/core-testing/xf86-video-voodoo/PKGBUILD +++ b/abs/core-testing/xf86-video-voodoo/PKGBUILD @@ -1,23 +1,23 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 11484 2008-08-31 16:48:17Z jgc $ # Maintainer: Alexander Baldeck <alexander@archlinux.org> # Contributor: Jan de Groot <jgc@archlinux.org> pkgname=xf86-video-voodoo -pkgver=1.1.1 -pkgrel=4 +pkgver=1.2.0 +pkgrel=1 pkgdesc="X.org voodoo video driver" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" depends=('glibc') -makedepends=('pkgconfig' 'xorg-server>=1.2.0') +makedepends=('pkgconfig' 'xorg-server>=1.4.99.906') +conflicts=('xorg-server<1.4.99.906') groups=('xorg-video-drivers') options=('!libtool') source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) build() { cd ${startdir}/src/${pkgname}-${pkgver} - ./configure --prefix=/usr \ - --build=${CHOST} --host=${CHOST} + ./configure --prefix=/usr || return 1 make || return 1 make DESTDIR=${startdir}/pkg install || return 1 } -md5sums=('bc878e795688b49a595b355482d27174') +md5sums=('7c681d9b57f5e1f798263fc1a9d99245') diff --git a/abs/core-testing/xkeyboard-config/PKGBUILD b/abs/core-testing/xkeyboard-config/PKGBUILD index 5b26253..abac013 100644 --- a/abs/core-testing/xkeyboard-config/PKGBUILD +++ b/abs/core-testing/xkeyboard-config/PKGBUILD @@ -1,8 +1,8 @@ -# $Id: PKGBUILD 7542 2008-08-02 21:31:59Z jgc $ -# Maintainer: Alexander Baldeck <kth5@archlinux.org> +# $Id: PKGBUILD 22425 2008-12-26 19:55:49Z jgc $ +# Maintainer: Jan de Groot <jgc@archlinux.org> pkgname=xkeyboard-config -pkgver=1.3 -pkgrel=1 +pkgver=1.4 +pkgrel=2 pkgdesc="X keyboard configuration files" arch=(i686 x86_64) license=('custom') @@ -12,19 +12,21 @@ makedepends=('perlxml' 'pkgconfig') provides=('xkbdata') replaces=('xkbdata') conflicts=('xkbdata') -source=(http://xlibs.freedesktop.org/xkbdesc/xkeyboard-config-${pkgver}.tar.bz2) -md5sums=('d9e9f69f9c6ef5c5a8255cfbe6a57d51') +source=(http://xlibs.freedesktop.org/xkbdesc/xkeyboard-config-${pkgver}.tar.bz2 + fix-abnt2.patch) +md5sums=('a9fe7efbc67a6966c4d4501f0cf88073' '5af20ec00a42a051cf0d7bcb572471df') build() { - cd ${startdir}/src/${pkgname}-${pkgver} + cd "${srcdir}/${pkgname}-${pkgver}" + patch -Np1 -i "${srcdir}/fix-abnt2.patch" || return 1 ./configure --prefix=/usr \ --with-xkb-base=/usr/share/X11/xkb \ --with-xkb-rules-symlink=xorg \ --enable-compat-rules=yes || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 - rm -f ${startdir}/pkg/usr/share/X11/xkb/compiled || return 1 - install -m755 -d ${startdir}/pkg/var/lib/xkb - install -m755 -d ${startdir}/pkg/usr/share/licenses/${pkgname} - install -m644 COPYING ${startdir}/pkg/usr/share/licenses/${pkgname}/ || return 1 + make DESTDIR="${pkgdir}" install || return 1 + rm -f "${pkgdir}/usr/share/X11/xkb/compiled" || return 1 + install -m755 -d "${pkgdir}/var/lib/xkb" + install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}" + install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/" || return 1 } diff --git a/abs/core-testing/xkeyboard-config/fix-abnt2.patch b/abs/core-testing/xkeyboard-config/fix-abnt2.patch new file mode 100644 index 0000000..a451df8 --- /dev/null +++ b/abs/core-testing/xkeyboard-config/fix-abnt2.patch @@ -0,0 +1,20 @@ +From b67326a9b271332c5bef23115d9c4ac7e7b2e6d9 Mon Sep 17 00:00:00 2001 +From: Sergey V. Udaltsov<svu@gnome.org> +Date: Wed, 26 Nov 2008 23:19:41 +0000 +Subject: fixed abnt2 keycodes, b.fd.o#18712 + +--- +diff --git a/keycodes/evdev b/keycodes/evdev +index 760e2d0..9da2cd5 100644 +--- a/keycodes/evdev ++++ b/keycodes/evdev +@@ -311,6 +311,7 @@ xkb_keycodes "jp106" { + // For brazilian ABNT2 keyboard. + xkb_keycodes "abnt2" { + include "evdev(evdev)" ++ <KPPT> = 129; + }; + + // PC98 +-- +cgit v0.8.1-24-ge5fb diff --git a/abs/core-testing/xorg-apps/PKGBUILD b/abs/core-testing/xorg-apps/PKGBUILD index dae4b4e..adaccd2 100644 --- a/abs/core-testing/xorg-apps/PKGBUILD +++ b/abs/core-testing/xorg-apps/PKGBUILD @@ -1,22 +1,21 @@ -# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $ +# $Id: PKGBUILD 19081 2008-11-14 21:07:55Z jgc $ # Maintainer: Alexander Baldeck <alexander@archlinux.org> # Contributor: Jan de Groot <jgc@archlinux.org> pkgname=xorg-apps -pkgver=1.0.3 -pkgrel=3 +pkgver=7.4 +pkgrel=1 pkgdesc="Various X.Org applications" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" depends=(libxcursor libxkbfile libpng libxft libfontenc libxaw) makedepends=(pkgconfig xbitmaps) - source=(${url}/releases/individual/app/oclock-1.0.1.tar.bz2 ${url}/releases/individual/app/luit-1.0.3.tar.bz2 - ${url}/releases/individual/app/xclock-1.0.2.tar.bz2 + ${url}/releases/individual/app/xclock-1.0.3.tar.bz2 ${url}/releases/individual/app/xpr-1.0.2.tar.bz2 - ${url}/releases/individual/app/xwd-1.0.1.tar.bz2 + ${url}/releases/individual/app/xwd-1.0.2.tar.bz2 ${url}/releases/individual/app/xwud-1.0.1.tar.bz2 - ${url}/releases/individual/app/x11perf-1.4.1.tar.bz2 + ${url}/releases/individual/app/x11perf-1.5.tar.bz2 ${url}/releases/individual/app/xbiff-1.0.1.tar.bz2 ${url}/releases/individual/app/xclipboard-1.0.1.tar.bz2 ${url}/releases/individual/app/xconsole-1.0.3.tar.bz2 @@ -26,14 +25,35 @@ source=(${url}/releases/individual/app/oclock-1.0.1.tar.bz2 ${url}/releases/individual/app/xload-1.0.2.tar.bz2 ${url}/releases/individual/app/xlogo-1.0.1.tar.bz2 ${url}/releases/individual/app/xmag-1.0.2.tar.bz2 - ${url}/releases/individual/app/xmessage-1.0.1.tar.bz2 + ${url}/releases/individual/app/xmessage-1.0.2.tar.bz2 ${url}/releases/individual/app/xcalc-1.0.2.tar.bz2 - ${url}/releases/individual/app/xman-1.0.2.tar.bz2 - ${url}/releases/individual/app/xedit-1.0.2.tar.bz2 + ${url}/releases/individual/app/xman-1.0.3.tar.bz2 + ${url}/releases/individual/app/xedit-1.1.2.tar.bz2 ${url}/releases/individual/app/xmh-1.0.1.tar.bz2) +md5sums=('91f49547f9ed3cd0137c8b7c3183e360' + 'b01e4f71c20fc1c79ed727759c1df40c' + '2b1a3d030d87e62a591db8ee4c0072e6' + '6b3a6896081f628bf5a2c9129417c86f' + '0a6ef08a2ac08ad5c4dd1522eb3788a3' + '6e3c5d0297d88e890b6f5df31f73dd60' + '31283bfc3c78718ac1bd71e510d4e774' + '404f5add4537d22dd109c33e518a5190' + '2c6ecedb10dc51adbb64c95f22fd99c2' + '0e1a3110bebabecc2897d67a973526b0' + '6fc90896b8c786cb1a2100b4167f7874' + '033f14f7c4e30d1f4edbb22d5ef86883' + 'f66d76abb0f75514ca32272e23cca757' + 'b41ed6b4bcfc9897366c27a94d2bf150' + '4c5482552f38a7d42398a694cc9b2ee6' + '7c6a783e42c88360ac31d259a864a19d' + 'b4b561ef11fd184989a6062962e86748' + 'd31a99795b9668f047aa11bf36df6df0' + '3d3a4b310a65ccce82472ef83acbbf97' + '67193be728414d45a1922911e6437991' + '656bcbdd41818a8b5a9f7dba77a3eeba') build() { - cd ${startdir}/src + cd "${srcdir}" for i in *; do if [ -d "${i}" ]; then pushd "${i}" @@ -47,32 +67,11 @@ build() { -i Makefile.* || return 1 ;; esac - ./configure --prefix=/usr --disable-xprint \ + ./configure --prefix=/usr --disable-xprint --mandir=/usr/share/man \ --with-localealiasfile=/usr/share/X11/locale/locale.alias make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 + make DESTDIR="${pkgdir}" install || return 1 popd fi done } -md5sums=('91f49547f9ed3cd0137c8b7c3183e360' - 'b01e4f71c20fc1c79ed727759c1df40c' - '6b930326f71993fb54b7203902b387cd' - '6b3a6896081f628bf5a2c9129417c86f' - '911addfb7fa402217ddac63e5c1d97c7' - '6e3c5d0297d88e890b6f5df31f73dd60' - 'fd06c8b8e3572a0e14af65a49e0dd7d1' - '404f5add4537d22dd109c33e518a5190' - '2c6ecedb10dc51adbb64c95f22fd99c2' - '0e1a3110bebabecc2897d67a973526b0' - '6fc90896b8c786cb1a2100b4167f7874' - '033f14f7c4e30d1f4edbb22d5ef86883' - 'f66d76abb0f75514ca32272e23cca757' - 'b41ed6b4bcfc9897366c27a94d2bf150' - '4c5482552f38a7d42398a694cc9b2ee6' - '7c6a783e42c88360ac31d259a864a19d' - 'b3674c3a00a089764d86aa94e257ccec' - 'd31a99795b9668f047aa11bf36df6df0' - '855f2dbfa2aff58b8b9cd6a1c1120fad' - 'c56160e93c24ddf17e69891ed50deb72' - '656bcbdd41818a8b5a9f7dba77a3eeba') diff --git a/abs/core-testing/xorg-server-utils/PKGBUILD b/abs/core-testing/xorg-server-utils/PKGBUILD index eb30890..84b4d12 100644 --- a/abs/core-testing/xorg-server-utils/PKGBUILD +++ b/abs/core-testing/xorg-server-utils/PKGBUILD @@ -1,17 +1,15 @@ -# $Id: PKGBUILD 3241 2008-06-21 18:04:39Z jgc $ +# $Id: PKGBUILD 19183 2008-11-16 22:56:53Z jgc $ # Maintainer: Alexander Baldeck <alexander@archlinux.org> # Contributor: Jan de Groot <jgc@archlinux.org> pkgname=xorg-server-utils -pkgver=7.3 -pkgrel=1 +pkgver=7.4 +pkgrel=2 pkgdesc="X.Org utilities required by xorg-server" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" -depends=('libxfontcache' 'libxi' 'liblbxutil' 'libxrandr>=1.2.1' 'libxxf86misc' - 'libxaw' 'libxxf86vm' 'libxtrap' 'mcpp>=2.6' 'xtrans') -makedepends=('pkgconfig' 'xbitmaps' 'xproxymngproto') +depends=('libxfontcache' 'libxi' 'libxmu' 'libxxf86misc' 'libxrandr' 'libxxf86vm' 'mcpp>=2.6') +makedepends=('pkgconfig' 'xbitmaps' 'bigreqsproto' 'xtrans') source=(${url}/releases/individual/app/iceauth-1.0.2.tar.bz2 - ${url}/releases/individual/app/lbxproxy-1.0.1.tar.bz2 ${url}/releases/individual/app/rgb-1.0.3.tar.bz2 ${url}/releases/individual/app/sessreg-1.0.4.tar.bz2 ${url}/releases/individual/app/xcmsdb-1.0.1.tar.bz2 @@ -24,13 +22,8 @@ source=(${url}/releases/individual/app/iceauth-1.0.2.tar.bz2 ${url}/releases/individual/app/xrefresh-1.0.2.tar.bz2 ${url}/releases/individual/app/xset-1.0.4.tar.bz2 ${url}/releases/individual/app/xsetmode-1.0.0.tar.bz2 - ${url}/releases/individual/app/xsetpointer-1.0.1.tar.bz2 - ${url}/releases/individual/app/xsetroot-1.0.2.tar.bz2 - ${url}/releases/individual/app/xstdcmap-1.0.1.tar.bz2 - ${url}/releases/individual/app/xtrap-1.0.2.tar.bz2 - ${url}/releases/individual/app/xvidtune-1.0.1.tar.bz2) + ${url}/releases/individual/app/xsetroot-1.0.2.tar.bz2) md5sums=('7ab8b64edf0212a9d9a3c8129901a450' - '9d5045a5c76b1fe360221b967a5aa0e9' '44ea16cc3104de6401bc74035f642357' '839e968d7197b9563f0fd8a5a3aac2e3' '8579d5f50ba7f0c4a5bf16b9670fea01' @@ -43,11 +36,7 @@ md5sums=('7ab8b64edf0212a9d9a3c8129901a450' '1228f890f86148e4e6ae22aa73118cbb' '2f41fd983ba4d89419204854936025e2' 'd074e79d380b031d2f60e4cd56538c93' - '9e5bcbeda4aaf02bfa095e41d30baee4' - '9af7db9f3052aef0b11636720b3101dd' - '86ab558441edfb86f853639e4290a754' - '97a62a011a11f03b46d72851aa298fa8' - 'e0744594f4e5969b20df28d897781318') + '9af7db9f3052aef0b11636720b3101dd') build() { cd ${startdir}/src @@ -56,19 +45,14 @@ build() { pushd "${i}" case "${i}" in xrdb*) - ./configure --prefix=/usr --with-cpp=/usr/bin/mcpp\ -@old - ;; - lbxproxy*) - sed -e 's|$(libdir)/X11/lbxproxy|$(datadir)/X11/libxproxy|g' \ - -i Makefile.* || return 1 - ./configure --prefix=/usr + ./configure --prefix=/usr --mandir=/usr/share/man --with-cpp=/usr/bin/mcpp\ -@old || return 1 ;; *) - ./configure --prefix=/usr + ./configure --prefix=/usr --mandir=/usr/share/man || return 1 ;; esac make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 + make DESTDIR="${pkgdir}" install || return 1 popd fi done diff --git a/abs/core-testing/xorg-server/001_fedora_extramodes.patch b/abs/core-testing/xorg-server/001_fedora_extramodes.patch new file mode 100644 index 0000000..30743b8 --- /dev/null +++ b/abs/core-testing/xorg-server/001_fedora_extramodes.patch @@ -0,0 +1,85 @@ +From: Adam Jackson <ajax@redhat.com> +Date: Sun, 28 Oct 2007 09:37:52 +0100 +Subject: [PATCH] Fedora extra modes list + +--- +Index: xorg-server/hw/xfree86/common/extramodes +=================================================================== +--- xorg-server.orig/hw/xfree86/common/extramodes ++++ xorg-server/hw/xfree86/common/extramodes +@@ -3,16 +3,75 @@ + // + // $XFree86: xc/programs/Xserver/hw/xfree86/etc/extramodes,v 1.5 2002/06/05 19:43:05 dawes Exp $ + // ++// NOTE: Please keep all video modes sorted in order of X res, then Y res for ++// ease of maintenance and readability. + + # 832x624 @ 75Hz (74.55Hz) (fix if the official/Apple spec is different) hsync: 49.725kHz + ModeLine "832x624" 57.284 832 864 928 1152 624 625 628 667 -Hsync -Vsync + ++# 1152x864 @ 60.00 Hz (GTF) hsync: 53.70 kHz; pclk: 81.62 MHz ++Modeline "1152x864" 81.62 1152 1216 1336 1520 864 865 868 895 -HSync +Vsync ++ ++# 1152x864 @ 70.00 Hz (GTF) hsync: 63.00 kHz; pclk: 96.77 MHz ++Modeline "1152x864" 96.77 1152 1224 1344 1536 864 865 868 900 -HSync +Vsync ++ ++# 1152x864 @ 75.00 Hz (GTF) hsync: 67.65 kHz; pclk: 104.99 MHz ++Modeline "1152x864" 104.99 1152 1224 1352 1552 864 865 868 902 -HSync +Vsync ++ ++# 1152x864 @ 85.00 Hz (GTF) hsync: 77.10 kHz; pclk: 119.65 MHz ++Modeline "1152x864" 119.65 1152 1224 1352 1552 864 865 868 907 -HSync +Vsync ++ ++# 1152x864 @ 85Hz (Red Hat custom modeline) ++ModeLine "1152x864" 121.5 1152 1216 1344 1568 864 865 868 911 +hsync -vsync ++ ++# 1152x864 @ 100.00 Hz (GTF) hsync: 91.50 kHz; pclk: 143.47 MHz ++Modeline "1152x864" 143.47 1152 1232 1360 1568 864 865 868 915 -HSync +Vsync ++ ++# 1360x768 59.96 Hz (CVT) hsync: 47.37 kHz; pclk: 72.00 MHz ++Modeline "1360x768" 72.00 1360 1408 1440 1520 768 771 781 790 +hsync -vsync ++ ++# 1360x768 59.80 Hz (CVT) hsync: 47.72 kHz; pclk: 84.75 MHz ++Modeline "1360x768" 84.75 1360 1432 1568 1776 768 771 781 798 -hsync +vsync ++ + # 1400x1050 @ 60Hz (VESA GTF) hsync: 65.5kHz + ModeLine "1400x1050" 122.0 1400 1488 1640 1880 1050 1052 1064 1082 +hsync +vsync + ++# 1400x1050 @ 70.00 Hz (GTF) hsync: 76.51 kHz; pclk: 145.06 MHz ++Modeline "1400x1050" 145.06 1400 1496 1648 1896 1050 1051 1054 1093 -HSync +Vsync ++ + # 1400x1050 @ 75Hz (VESA GTF) hsync: 82.2kHz + ModeLine "1400x1050" 155.8 1400 1464 1784 1912 1050 1052 1064 1090 +hsync +vsync + ++# 1400x1050 @ 85.00 Hz (GTF) hsync: 93.76 kHz; pclk: 179.26 MHz ++Modeline "1400x1050" 179.26 1400 1504 1656 1912 1050 1051 1054 1103 -HSync +Vsync ++ ++# 1440x900 @ 60.00 Hz (CVT) field rate 59.89 Hz; hsync: 55.93 kHz; pclk: 106.50 MHz ++Modeline "1440x900" 106.50 1440 1520 1672 1904 900 903 909 934 -HSync +Vsync ++ ++# 1600x1024 for SGI 1600 SW ++ModeLine "1600x1024" 103.125 1600 1600 1656 1664 1024 1024 1029 1030 +Hsync +Vsync ++ ++# 1680x1050 59.88 Hz (CVT 1.76MA-R) hsync: 64.67 kHz; pclk: 119.00 MHz ++Modeline "1680x1050" 119.00 1680 1728 1760 1840 1050 1053 1059 1080 +hsync -vsync ++ ++# 1680x1050 59.95 Hz (CVT 1.76MA) hsync: 65.29 kHz; pclk: 146.25 MHz ++Modeline "1680x1050" 146.25 1680 1784 1960 2240 1050 1053 1059 1089 -hsync +vsync ++ ++# 1680x1050 69.88 Hz (CVT) hsync: 76.58 kHz; pclk: 174.00 MHz ++Modeline "1680x1050" 174.00 1680 1800 1976 2272 1050 1053 1059 1096 -hsync +vsync ++ ++# 1680x1050 74.89 Hz (CVT 1.76MA) hsync: 82.31 kHz; pclk: 187.00 MHz ++Modeline "1680x1050" 187.00 1680 1800 1976 2272 1050 1053 1059 1099 -hsync +vsync ++ ++# 1680x1050 84.94 Hz (CVT 1.76MA) hsync: 93.86 kHz; pclk: 214.75 MHz ++Modeline "1680x1050" 214.75 1680 1808 1984 2288 1050 1053 1059 1105 -hsync +vsync ++ ++# 1920x1080 59.93 Hz (CVT 2.07M9-R) hsync: 66.59 kHz; pclk: 138.50 MHz ++Modeline "1920x1080" 138.50 1920 1968 2000 2080 1080 1083 1088 1111 +hsync -vsync ++ ++# 1920x1200 59.95 Hz (CVT 2.30MA-R) hsync: 74.04 kHz; pclk: 154.00 MHz ++Modeline "1920x1200" 154.00 1920 1968 2000 2080 1200 1203 1209 1235 +hsync -vsync ++ + # 1920x1440 @ 85Hz (VESA GTF) hsync: 128.5kHz + Modeline "1920x1440" 341.35 1920 2072 2288 2656 1440 1441 1444 1512 -hsync +vsync + diff --git a/abs/core-testing/xorg-server/PKGBUILD b/abs/core-testing/xorg-server/PKGBUILD index f9a3401..2dacf0b 100644 --- a/abs/core-testing/xorg-server/PKGBUILD +++ b/abs/core-testing/xorg-server/PKGBUILD @@ -1,42 +1,54 @@ +# $Id: PKGBUILD 21903 2008-12-17 20:32:54Z jgc $ +# Maintainer: Alexander Baldeck <kth5@archlinux.org> +# Contributor: Jan de Groot <jgc@archlinux.org> pkgname=xorg-server -pkgver=1.4.2 -pkgrel=2 -_mesaver=7.0.3 +pkgver=1.5.3 +pkgrel=4 pkgdesc="X.Org X servers" arch=('i686' 'x86_64') license=('custom') url="http://xorg.freedesktop.org" -depends=('libxkbui' 'ncurses' 'libxxf86misc' 'libxfont' - 'libxaw' 'libxxf86vm' 'xcursor-themes' - 'xkeyboard-config' 'xorg-server-utils' 'xorg-utils' 'libdrm>=2.3.0' - 'xorg-fonts-misc' 'pixman>=0.10' 'xbitmaps') -makedepends=('pkgconfig' 'xf86driproto' 'xcmiscproto' 'xtrans' 'bigreqsproto' - 'xf86bigfontproto' 'resourceproto' 'evieext' 'damageproto>=1.1.0' - 'compositeproto>=0.4' 'scrnsaverproto' 'libxres' 'xorg-util-macros' - 'randrproto' 'glproto>=1.4.9' 'renderproto>=0.9.3' 'autoconf' - 'automake' 'libtool' 'bison' 'flex' 'gcc' 'libxrender' - 'libxfixes' 'quilt' 'mesa') +depends=('libx11>=1.1.5' 'libxkbui>=1.0.2' 'libgl' 'libxfont>=1.3.3' 'openssl>=0.9.8h' 'libxxf86misc>=1.0.1' 'libpciaccess>=0.10.5' 'libxv>=1.0.4' 'libxaw>=1.0.4' 'pixman>=0.11.10' 'hal>=0.5.11' 'xcursor-themes' 'xkeyboard-config>=1.3' 'xorg-server-utils' 'xorg-utils' 'xorg-fonts-misc' 'xbitmaps' 'libdrm>=2.3.1' 'diffutils' 'xf86-input-evdev') +makedepends=('glproto>=1.4.9' 'xf86driproto>=2.0.4' 'mesa>=7.2' 'randrproto>=1.2.2' 'renderproto>=0.9.3' 'scrnsaverproto>=1.1.0' 'fontsproto>=2.0.2' 'videoproto>=2.2.2' 'compositeproto>=0.4' 'trapproto>=3.4.3' 'resourceproto>=1.0.2' 'xineramaproto>=1.1.2' 'evieext>=1.0.2' 'libxkbfile>=1.0.5' 'libxmu>=1.0.4' 'libxpm>=3.5.7' 'libxxf86dga>=1.0.2' 'inputproto>=1.4.4' 'xcmiscproto>=1.1.2' 'bigreqsproto' 'libdrm=2.3.1' 'xtrans') options=('!libtool') provides=('x-server') groups=('xorg') install=xorg-server.install source=(${url}/releases/individual/xserver/${pkgname}-${pkgver}.tar.bz2 - http://downloads.sourceforge.net/sourceforge/mesa3d/MesaLib-${_mesaver}.tar.bz2 - ftp://ftp.archlinux.org/other/xorg-server/xorg-server-patches-1.4.2-1.tar.bz2) -md5sums=('fa2915ae377f61c340a18ebef484b64b' - 'e6e6379d7793af40a6bc3ce1bace572e' - 'bc907d6d69b55b445c3046a4d7ecc8ef') + xserver-1.5-branch-4970d.patch + 001_fedora_extramodes.patch + xorg-redhat-die-ugly-pattern-die-die-die.patch + xserver-1.5.0-force-SwitchCoreKeyboard-for-evdev.patch + xserver-1.5.3-AEI-on-by-default.patch) +md5sums=('308971036e25250e7fe3cccfd5a120f8' + '61f9bb524501247dce647b218ad14347' + '033427f2b406cba8dd6103ff374e7156' + '1a336eb22e27cbf443ec5a2ecddfa93c' + '7b03ba9b75d795e4f7fdfaa550d97159' + '63d1d61d217005db7c23c4a98fc3e7eb') build() { - cd ${startdir}/src/${pkgname}-${pkgver} - quilt push -a || return 1 - libtoolize --force --copy || return 1 - aclocal || return 1 - autoconf || return 1 - automake --add-missing || return 1 + cd "${srcdir}/${pkgname}-${pkgver}" + # Upstream commits from server-1.5 branch + patch -Np1 -i "${srcdir}/xserver-1.5-branch-4970d.patch" || return 1 + + # extramodes + patch -Np1 -i "${srcdir}/001_fedora_extramodes.patch" || return 1 + + # Get rid of the ugly pattern + patch -Np3 -i "${srcdir}/xorg-redhat-die-ugly-pattern-die-die-die.patch" || return 1 + + # Patch from Fedora to fix FS#12248 + patch -Np1 -i "${srcdir}/xserver-1.5.0-force-SwitchCoreKeyboard-for-evdev.patch" || return 1 + + # Upstream patch to fix evdev issues with >=2.1.0 + patch -Np1 -i "${srcdir}/xserver-1.5.3-AEI-on-by-default.patch" || return 1 + + # Fix dbus config path + sed -i -e 's/\$(sysconfdir)/\/etc/' config/Makefile.* || return 1 + ./configure --prefix=/usr \ - --with-mesa-source=${startdir}/src/Mesa-${_mesaver} \ --enable-ipv6 \ --enable-dri \ --disable-dmx \ @@ -51,39 +63,43 @@ build() { --enable-glx-tls \ --enable-xorgcfg \ --enable-kdrive \ + --enable-install-setuid \ + --enable-config-hal \ + --enable-config-dbus \ --disable-xfbdev \ --disable-xfake \ --disable-xsdl \ --disable-kdrive-vesa \ - --enable-install-setuid \ + --disable-dri2 \ --disable-xprint \ + --disable-static \ --sysconfdir=/etc/X11 \ --localstatedir=/var \ --with-default-font-path=/usr/share/fonts/misc,/usr/share/fonts/100dpi:unscaled,/usr/share/fonts/75dpi:unscaled,/usr/share/fonts/TTF,/usr/share/fonts/Type1 \ - --with-rgb-path=/usr/share/X11/rgb \ --with-xkb-path=/usr/share/X11/xkb \ - --with-xkb-output=/usr/share/X11/xkb/compiled \ - --with-dri-driver-path=/usr/lib/xorg/modules/dri \ - --disable-config-hal \ - --disable-static --enable-null-root-cursor + --with-xkb-output=/var/lib/xkb \ + --with-dri-driver-path=/usr/lib/xorg/modules/dri || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 + make DESTDIR="${pkgdir}" install || return 1 - install -m755 -d ${startdir}/pkg/etc/X11 || return 1 - install -m755 -d ${startdir}/pkg/var/lib || return 1 - mv ${startdir}/pkg/usr/share/X11/xkb/compiled ${startdir}/pkg/var/lib/xkb - ln -sf /var/lib/xkb ${startdir}/pkg/usr/share/X11/xkb/compiled || return 1 + rm -rf "${pkgdir}/var/log" || return 1 - cd ${startdir}/pkg/usr/lib/xorg/modules/extensions - mv libGLcore.so libGLcore.xorg - mv libglx.so libglx.xorg + install -m755 -d "${pkgdir}/etc/X11" || return 1 + install -m755 -d "${pkgdir}/var/lib/xkb" || return 1 # No longer needed, but as nvidia-utils mangles these files, # keep them like this so they can be restored - mv ${startdir}/pkg/usr/lib/xorg/modules/libwfb.so \ - ${startdir}/pkg/usr/lib/xorg/modules/libwfb.so.1.4 || return 1 + mv "${pkgdir}/usr/lib/xorg/modules/libwfb.so" \ + "${pkgdir}/usr/lib/xorg/modules/libwfb.so.1.4" || return 1 + + # Needed for non-mesa drivers, libgl will restore it + mv "${pkgdir}/usr/lib/xorg/modules/extensions/libglx.so" \ + "${pkgdir}/usr/lib/xorg/modules/extensions/libglx.xorg" || return 1 + + mv "${pkgdir}/usr/lib/xorg/modules/extensions/libdri.so" \ + "${pkgdir}/usr/lib/xorg/modules/extensions/libdri.xorg" || return 1 - install -m755 -d ${startdir}/pkg/usr/share/licenses/${pkgname} - install -m644 ${startdir}/src/${pkgname}-${pkgver}/COPYING ${startdir}/pkg/usr/share/licenses/${pkgname}/ || return 1 + install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}" + install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/" || return 1 } diff --git a/abs/core-testing/xorg-server/xorg-redhat-die-ugly-pattern-die-die-die.patch b/abs/core-testing/xorg-server/xorg-redhat-die-ugly-pattern-die-die-die.patch new file mode 100644 index 0000000..4e782f1 --- /dev/null +++ b/abs/core-testing/xorg-server/xorg-redhat-die-ugly-pattern-die-die-die.patch @@ -0,0 +1,16 @@ +Remove the default root window grey stipple pattern, replacing it with +blackness. + +--- xc/programs/Xserver/dix/window.c.die-ugly-pattern-die-die-die Tue Feb 12 16:33:04 2002 ++++ xc/programs/Xserver/dix/window.c Tue Feb 12 16:45:32 2002 +@@ -119,8 +119,8 @@ + * + ******/ + +-static unsigned char _back_lsb[4] = {0x88, 0x22, 0x44, 0x11}; +-static unsigned char _back_msb[4] = {0x11, 0x44, 0x22, 0x88}; ++static unsigned char _back_lsb[4] = {0x00, 0x00, 0x00, 0x00}; ++static unsigned char _back_msb[4] = {0x00, 0x00, 0x00, 0x00}; + + int screenIsSaved = SCREEN_SAVER_OFF; + diff --git a/abs/core-testing/xorg-server/xorg-server.install b/abs/core-testing/xorg-server/xorg-server.install index f7ff03a..c67438d 100644 --- a/abs/core-testing/xorg-server/xorg-server.install +++ b/abs/core-testing/xorg-server/xorg-server.install @@ -1,12 +1,33 @@ post_install() { - rm -f /usr/lib/xorg/modules/libwfb.so - ln -sf libwfb.so.1.4 /usr/lib/xorg/modules/libwfb.so + rm -f usr/lib/xorg/modules/libwfb.so + ln -sf libwfb.so.1.4 usr/lib/xorg/modules/libwfb.so + + cmp usr/lib/xorg/modules/extensions/libdri.so usr/lib/xorg/modules/extensions/libglx.xorg >/dev/null 2>&1 && rm -f usr/lib/xorg/modules/extensions/libdri.so + + # If the symlink is dead or non-existent, remove it and make a new one + if [ ! -e usr/lib/xorg/modules/extensions/libdri.so ]; then + rm -f usr/lib/xorg/modules/extensions/libdri.so + ln -sf libdri.xorg usr/lib/xorg/modules/extensions/libdri.so + fi } post_upgrade() { + if [ "`vercmp $2 1.4.99.906`" -lt 0 ]; then + cat << _EOF + + Input device handling has changed in xorg-server 1.5. + Please read http://wiki.archlinux.org/index.php/Xorg_input_hotplugging. + +_EOF + fi post_install } post_remove() { rm -f /usr/lib/xorg/modules/libwfb.so + + # If the symlink is dead, remove it + if [ ! -e usr/lib/xorg/modules/extensions/libdri.so ]; then + rm -f usr/lib/xorg/modules/extensions/libdri.so + fi } diff --git a/abs/core-testing/xorg-server/xserver-1.5-branch-4970d.patch b/abs/core-testing/xorg-server/xserver-1.5-branch-4970d.patch new file mode 100644 index 0000000..23cdab0 --- /dev/null +++ b/abs/core-testing/xorg-server/xserver-1.5-branch-4970d.patch @@ -0,0 +1,246 @@ +diff -ruN xserver-4c6a89ee783d62fb75a738339351830c35b19a38/config/x11-input.fdi xserver-4970d757a7364c1d2fb4db4e404e88e8ad989ddb/config/x11-input.fdi +--- xserver-4c6a89ee783d62fb75a738339351830c35b19a38/config/x11-input.fdi 2008-11-05 20:39:01.000000000 +0000 ++++ xserver-4970d757a7364c1d2fb4db4e404e88e8ad989ddb/config/x11-input.fdi 2008-12-16 19:19:00.000000000 +0000 +@@ -64,8 +64,8 @@ + <merge key="input.x11_options.XkbRules" type="string">base</merge> + + <!-- If we're using Linux, we use evdev by default (falling back to +- keyboard otherwise). --> +- <merge key="input.x11_driver" type="string">keyboard</merge> ++ kbd otherwise). --> ++ <merge key="input.x11_driver" type="string">kbd</merge> + <merge key="input.x11_options.XkbModel" type="string">pc105</merge> + <match key="/org/freedesktop/Hal/devices/computer:system.kernel.name" + string="Linux"> +diff -ruN xserver-4c6a89ee783d62fb75a738339351830c35b19a38/exa/exa_accel.c xserver-4970d757a7364c1d2fb4db4e404e88e8ad989ddb/exa/exa_accel.c +--- xserver-4c6a89ee783d62fb75a738339351830c35b19a38/exa/exa_accel.c 2008-11-05 20:39:01.000000000 +0000 ++++ xserver-4970d757a7364c1d2fb4db4e404e88e8ad989ddb/exa/exa_accel.c 2008-12-16 19:19:00.000000000 +0000 +@@ -398,6 +398,10 @@ + RegionPtr srcregion = NULL, dstregion = NULL; + xRectangle *rects; + ++ /* avoid doing copy operations if no boxes */ ++ if (nbox == 0) ++ return; ++ + pSrcPixmap = exaGetDrawablePixmap (pSrcDrawable); + pDstPixmap = exaGetDrawablePixmap (pDstDrawable); + +diff -ruN xserver-4c6a89ee783d62fb75a738339351830c35b19a38/hw/xfree86/common/xf86Helper.c xserver-4970d757a7364c1d2fb4db4e404e88e8ad989ddb/hw/xfree86/common/xf86Helper.c +--- xserver-4c6a89ee783d62fb75a738339351830c35b19a38/hw/xfree86/common/xf86Helper.c 2008-11-05 20:39:01.000000000 +0000 ++++ xserver-4970d757a7364c1d2fb4db4e404e88e8ad989ddb/hw/xfree86/common/xf86Helper.c 2008-12-16 19:19:00.000000000 +0000 +@@ -448,10 +448,6 @@ + #define GLOBAL_DEFAULT_DEPTH 24 + #endif + +-#ifndef GLOBAL_DEFAULT_FBBPP +-#define GLOBAL_DEFAULT_FBBPP 32 +-#endif +- + _X_EXPORT Bool + xf86SetDepthBpp(ScrnInfoPtr scrp, int depth, int dummy, int fbbpp, + int depth24flags) +@@ -529,7 +525,6 @@ + if (depth > 0) + scrp->depth = depth; + } else { +- scrp->bitsPerPixel = GLOBAL_DEFAULT_FBBPP; + scrp->depth = GLOBAL_DEFAULT_DEPTH; + } + } +diff -ruN xserver-4c6a89ee783d62fb75a738339351830c35b19a38/hw/xfree86/os-support/linux/int10/linux.c xserver-4970d757a7364c1d2fb4db4e404e88e8ad989ddb/hw/xfree86/os-support/linux/int10/linux.c +--- xserver-4c6a89ee783d62fb75a738339351830c35b19a38/hw/xfree86/os-support/linux/int10/linux.c 2008-11-05 20:39:01.000000000 +0000 ++++ xserver-4970d757a7364c1d2fb4db4e404e88e8ad989ddb/hw/xfree86/os-support/linux/int10/linux.c 2008-12-16 19:19:00.000000000 +0000 +@@ -1,6 +1,6 @@ + /* + * linux specific part of the int10 module +- * Copyright 1999, 2000, 2001, 2002, 2003, 2004 Egbert Eich ++ * Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2008 Egbert Eich + */ + #ifdef HAVE_XORG_CONFIG_H + #include <xorg-config.h> +@@ -357,7 +357,10 @@ + "shmat(low_mem) error: %s\n",strerror(errno)); + return FALSE; + } +- ++ if (mprotect((void*)0, V_RAM, PROT_READ|PROT_WRITE|PROT_EXEC) != 0) ++ xf86DrvMsg(pInt->scrnIndex, X_ERROR, ++ "Cannot set EXEC bit on low memory: %s\n", strerror(errno)); ++ + if (((linuxInt10Priv*)pInt->private)->highMem >= 0) { + addr = shmat(((linuxInt10Priv*)pInt->private)->highMem, + (char*)HIGH_MEM, 0); +@@ -368,6 +371,11 @@ + "shmget error: %s\n",strerror(errno)); + return FALSE; + } ++ if (mprotect((void*)HIGH_MEM, HIGH_MEM_SIZE, ++ PROT_READ|PROT_WRITE|PROT_EXEC) != 0) ++ xf86DrvMsg(pInt->scrnIndex, X_ERROR, ++ "Cannot set EXEC bit on high memory: %s\n", ++ strerror(errno)); + } else { + if ((fd = open(DEV_MEM, O_RDWR, 0)) >= 0) { + if (mmap((void *)(V_BIOS), SYS_BIOS - V_BIOS, +diff -ruN xserver-4c6a89ee783d62fb75a738339351830c35b19a38/hw/xfree86/xaa/xaa.h xserver-4970d757a7364c1d2fb4db4e404e88e8ad989ddb/hw/xfree86/xaa/xaa.h +--- xserver-4c6a89ee783d62fb75a738339351830c35b19a38/hw/xfree86/xaa/xaa.h 2008-11-05 20:39:01.000000000 +0000 ++++ xserver-4970d757a7364c1d2fb4db4e404e88e8ad989ddb/hw/xfree86/xaa/xaa.h 2008-12-16 19:19:00.000000000 +0000 +@@ -2,6 +2,10 @@ + #ifndef _XAA_H + #define _XAA_H + ++#define XAA_VERSION_MAJOR 1 ++#define XAA_VERSION_MINOR 2 ++#define XAA_VERSION_RELEASE 1 ++ + /* + + ******** OPERATION SPECIFIC FLAGS ********* +diff -ruN xserver-4c6a89ee783d62fb75a738339351830c35b19a38/hw/xfree86/xaa/xaaInitAccel.c xserver-4970d757a7364c1d2fb4db4e404e88e8ad989ddb/hw/xfree86/xaa/xaaInitAccel.c +--- xserver-4c6a89ee783d62fb75a738339351830c35b19a38/hw/xfree86/xaa/xaaInitAccel.c 2008-11-05 20:39:01.000000000 +0000 ++++ xserver-4970d757a7364c1d2fb4db4e404e88e8ad989ddb/hw/xfree86/xaa/xaaInitAccel.c 2008-12-16 19:19:00.000000000 +0000 +@@ -103,7 +103,9 @@ + MODINFOSTRING1, + MODINFOSTRING2, + XORG_VERSION_CURRENT, +- 1, 2, 0, ++ XAA_VERSION_MAJOR, ++ XAA_VERSION_MINOR, ++ XAA_VERSION_RELEASE, + ABI_CLASS_VIDEODRV, /* requires the video driver ABI */ + ABI_VIDEODRV_VERSION, + MOD_CLASS_NONE, +diff -ruN xserver-4c6a89ee783d62fb75a738339351830c35b19a38/hw/xfree86/xaa/xaawrap.h xserver-4970d757a7364c1d2fb4db4e404e88e8ad989ddb/hw/xfree86/xaa/xaawrap.h +--- xserver-4c6a89ee783d62fb75a738339351830c35b19a38/hw/xfree86/xaa/xaawrap.h 2008-11-05 20:39:01.000000000 +0000 ++++ xserver-4970d757a7364c1d2fb4db4e404e88e8ad989ddb/hw/xfree86/xaa/xaawrap.h 2008-12-16 19:19:00.000000000 +0000 +@@ -48,8 +48,8 @@ + XAAPixmapPtr pixPriv = XAA_GET_PIXMAP_PRIVATE((PixmapPtr)(pDraw));\ + GCFuncs *oldFuncs = pGC->funcs;\ + pGC->funcs = pGCPriv->wrapFuncs;\ +- pGC->ops = pGCPriv->wrapOps +- ++ pGC->ops = pGCPriv->wrapOps; \ ++ SYNC_CHECK(pGC) + + #define XAA_PIXMAP_OP_EPILOGUE(pGC)\ + pGCPriv->wrapOps = pGC->ops;\ +diff -ruN xserver-4c6a89ee783d62fb75a738339351830c35b19a38/mi/miinitext.c xserver-4970d757a7364c1d2fb4db4e404e88e8ad989ddb/mi/miinitext.c +--- xserver-4c6a89ee783d62fb75a738339351830c35b19a38/mi/miinitext.c 2008-11-05 20:39:01.000000000 +0000 ++++ xserver-4970d757a7364c1d2fb4db4e404e88e8ad989ddb/mi/miinitext.c 2008-12-16 19:19:00.000000000 +0000 +@@ -661,7 +661,8 @@ + #endif + + #ifdef GLXEXT +- GlxPushProvider(&__glXDRISWRastProvider); ++ if (serverGeneration == 1) ++ GlxPushProvider(&__glXDRISWRastProvider); + if (!noGlxExtension) GlxExtensionInit(); + #endif + } +diff -ruN xserver-4c6a89ee783d62fb75a738339351830c35b19a38/os/utils.c xserver-4970d757a7364c1d2fb4db4e404e88e8ad989ddb/os/utils.c +--- xserver-4c6a89ee783d62fb75a738339351830c35b19a38/os/utils.c 2008-11-05 20:39:01.000000000 +0000 ++++ xserver-4970d757a7364c1d2fb4db4e404e88e8ad989ddb/os/utils.c 2008-12-16 19:19:00.000000000 +0000 +@@ -1702,7 +1702,7 @@ + int pid; + } *pidlist; + +-void (*old_alarm)(int) = NULL; /* XXX horrible awful hack */ ++OsSigHandlerPtr old_alarm = NULL; /* XXX horrible awful hack */ + + pointer + Popen(char *command, char *type) +@@ -1726,7 +1726,7 @@ + } + + /* Ignore the smart scheduler while this is going on */ +- old_alarm = signal(SIGALRM, SIG_IGN); ++ old_alarm = OsSignal(SIGALRM, SIG_IGN); + if (old_alarm == SIG_ERR) { + perror("signal"); + return NULL; +@@ -1737,7 +1737,7 @@ + close(pdes[0]); + close(pdes[1]); + xfree(cur); +- if (signal(SIGALRM, old_alarm) == SIG_ERR) ++ if (OsSignal(SIGALRM, old_alarm) == SIG_ERR) + perror("signal"); + return NULL; + case 0: /* child */ +@@ -1914,7 +1914,7 @@ + /* allow EINTR again */ + OsReleaseSignals (); + +- if (old_alarm && signal(SIGALRM, old_alarm) == SIG_ERR) { ++ if (old_alarm && OsSignal(SIGALRM, old_alarm) == SIG_ERR) { + perror("signal"); + return -1; + } +diff -ruN xserver-4c6a89ee783d62fb75a738339351830c35b19a38/xkb/xkbEvents.c xserver-4970d757a7364c1d2fb4db4e404e88e8ad989ddb/xkb/xkbEvents.c +--- xserver-4c6a89ee783d62fb75a738339351830c35b19a38/xkb/xkbEvents.c 2008-11-05 20:39:01.000000000 +0000 ++++ xserver-4970d757a7364c1d2fb4db4e404e88e8ad989ddb/xkb/xkbEvents.c 2008-12-16 19:19:00.000000000 +0000 +@@ -109,7 +109,7 @@ + register CARD16 changed,bState; + + interest = kbd->xkb_interest; +- if (!interest) ++ if (!interest || !kbd->key || !kbd->key->xkbInfo) + return; + xkbi = kbd->key->xkbInfo; + state= &xkbi->state; +@@ -168,6 +168,9 @@ + unsigned time = 0,initialized; + CARD16 changed; + ++ if (!kbd->key || !kbd->key->xkbInfo) ++ return; ++ + xkbi = kbd->key->xkbInfo; + initialized= 0; + +@@ -291,7 +294,7 @@ + Time time = 0; + + interest = kbd->xkb_interest; +- if (!interest) ++ if (!interest || !kbd->key || !kbd->key->xkbInfo) + return; + xkbi = kbd->key->xkbInfo; + +@@ -401,6 +404,9 @@ + Time time = 0; + XID winID = 0; + ++ if (!kbd->key || !kbd->key->xkbInfo) ++ return; ++ + xkbi = kbd->key->xkbInfo; + + if ((force||(xkbi->desc->ctrls->enabled_ctrls&XkbAudibleBellMask))&& +@@ -616,11 +622,12 @@ + XkbInterestPtr interest; + Time time = 0; + +- xkbi = kbd->key->xkbInfo; + interest = kbd->xkb_interest; +- if (!interest) ++ if (!interest || !kbd->key || !kbd->key->xkbInfo) + return; + ++ xkbi = kbd->key->xkbInfo; ++ + initialized = 0; + pEv->mods= xkbi->state.mods; + pEv->group= xkbi->state.group; +@@ -996,6 +1003,10 @@ + ClientPtr client = NULL; + + found= False; ++ ++ if (!dev->key || !dev->key->xkbInfo) ++ return found; ++ + autoCtrls= autoValues= 0; + if ( dev->xkb_interest ) { + interest = dev->xkb_interest; diff --git a/abs/core-testing/xorg-server/xserver-1.5.0-force-SwitchCoreKeyboard-for-evdev.patch b/abs/core-testing/xorg-server/xserver-1.5.0-force-SwitchCoreKeyboard-for-evdev.patch new file mode 100644 index 0000000..2ac6095 --- /dev/null +++ b/abs/core-testing/xorg-server/xserver-1.5.0-force-SwitchCoreKeyboard-for-evdev.patch @@ -0,0 +1,69 @@ +From 638cab7e1dc3711f7fb04155bcdabf4b8895cc5e Mon Sep 17 00:00:00 2001 +From: Peter Hutterer <peter.hutterer@who-t.net> +Date: Mon, 4 Aug 2008 17:08:36 +0930 +Subject: [PATCH] xfree86: force SwitchCoreKeyboard for evdev devices (updated). + +If an evdev keyboard device is added through the HAL mechanism, force a +SwitchCoreKeyboard to load the evdev map into the VCK. This way, by the time a +client starts the evdev keymap is already there, leading to less pain lateron. + +Works if: +- all keyboards are hotplugged through HAL, and/or +- the xorg.conf keyboard uses the kbd driver. + +Has no effect (i.e. busted keymaps) if: +- an evdev keyboard device has been specified in the xorg.conf. +- we don't have a device at startup and plug a device in after starting the + desktop environment. +- if the device we use isn't the first one reported by HAL. + +If HAL isn't set up, this patch is a noop. +--- + hw/xfree86/common/xf86Xinput.c | 31 +++++++++++++++++++++++++++++++ + 1 files changed, 31 insertions(+), 0 deletions(-) + +diff --git a/hw/xfree86/common/xf86Xinput.c b/hw/xfree86/common/xf86Xinput.c +index 710e787..dacc3dc 100644 +--- a/hw/xfree86/common/xf86Xinput.c ++++ b/hw/xfree86/common/xf86Xinput.c +@@ -423,6 +423,37 @@ NewInputDeviceRequest (InputOption *options, DeviceIntPtr *pdev) + (!is_auto || xf86Info.autoEnableDevices)) + EnableDevice(dev); + ++ /* XXX: The VCK always starts with built-in defaults for keymap. These ++ * defaults are different to the evdev ones. When the first key is hit on ++ * an extension device, the keymap is copied into the VCK's and any ++ * changes made at runtime to the VCK map are lost. ++ * ++ * Assumption: if we have at least one evdev keyboard device, we can ++ * ignore kbd devices. Force a SwitchCoreKeyboard so the VCK has the same ++ * keymap as we do. ++ * ++ * Next time we hit a key, we don't change the map over anymore (see ++ * SwitchCoreKeyboard), and live happily ever after. ++ * Until we have 2 physical keyboards. Or the first real keyboard isn't ++ * actually the one we use. Oh well. ++ * ++ */ ++ if (dev->key) ++ { ++ InputInfoPtr info; ++ ++ /* Search if there is one other keyboard that uses evdev. */ ++ for (info = xf86InputDevs; info; info = info->next) ++ { ++ if (info != pInfo && info->dev && info->dev->key && ++ (strcmp(info->drv->driverName, "evdev") == 0)) ++ break; ++ } ++ ++ if (!info) ++ SwitchCoreKeyboard(dev); ++ } ++ + *pdev = dev; + return Success; + +-- +1.5.5.1 + diff --git a/abs/core-testing/xorg-server/xserver-1.5.3-AEI-on-by-default.patch b/abs/core-testing/xorg-server/xserver-1.5.3-AEI-on-by-default.patch new file mode 100644 index 0000000..d6cdf83 --- /dev/null +++ b/abs/core-testing/xorg-server/xserver-1.5.3-AEI-on-by-default.patch @@ -0,0 +1,108 @@ +From 15bf414daa83967fd1f24bd48bd01ea941c11ce2 Mon Sep 17 00:00:00 2001 +From: Peter Hutterer <peter.hutterer@redhat.com> +Date: Thu, 13 Nov 2008 10:17:33 +1000 +Subject: [PATCH] xfree86: AllowEmptyInput is true by default - update the xf86Info defaults. + +Also set AutoAddDevices and AutoEnableDevices to their defaults. + +And in doing so, switch the rest of the defaults over to named intializers. + +Signed-off-by: Peter Hutterer <peter.hutterer@redhat.com> +(cherry picked from commit 0b56b44addc323a00eb7cd86240cb0dd4275bcf8) + +Conflicts: + + hw/xfree86/common/xf86Globals.c +--- + hw/xfree86/common/xf86Globals.c | 69 ++++++++++++++++++++------------------ + 1 files changed, 36 insertions(+), 33 deletions(-) + +diff --git a/hw/xfree86/common/xf86Globals.c b/hw/xfree86/common/xf86Globals.c +index f5babbc..a5edd82 100644 +--- a/hw/xfree86/common/xf86Globals.c ++++ b/hw/xfree86/common/xf86Globals.c +@@ -95,45 +95,48 @@ InputInfoPtr xf86InputDevs = NULL; + /* Globals that video drivers may not access */ + + xf86InfoRec xf86Info = { +- -1, /* consoleFd */ +- -1, /* vtno */ +- FALSE, /* vtSysreq */ +- SKWhenNeeded, /* ddxSpecialKeys */ +- NULL, /* pMouse */ ++ .consoleFd = -1, ++ .vtno = -1, ++ .vtSysreq = FALSE, ++ .ddxSpecialKeys = SKWhenNeeded, ++ .pMouse = NULL, + #ifdef XINPUT +- NULL, /* mouseLocal */ ++ .mouseLocal = NULL, + #endif +- -1, /* lastEventTime */ +- FALSE, /* vtRequestsPending */ +- FALSE, /* inputPending */ +- FALSE, /* dontVTSwitch */ +- FALSE, /* dontZap */ +- FALSE, /* dontZoom */ +- FALSE, /* notrapSignals */ +- FALSE, /* caughtSignal */ +- FALSE, /* sharedMonitor */ +- NULL, /* currentScreen */ ++ .lastEventTime = -1, ++ .vtRequestsPending = FALSE, ++ .inputPending = FALSE, ++ .dontVTSwitch = FALSE, ++ .dontZap = FALSE, ++ .dontZoom = FALSE, ++ .notrapSignals = FALSE, ++ .caughtSignal = FALSE, ++ .sharedMonitor = FALSE, ++ .currentScreen = NULL, + #ifdef CSRG_BASED +- -1, /* screenFd */ +- -1, /* consType */ ++ .screenFd = -1, ++ .consType = -1, + #endif +- FALSE, /* allowMouseOpenFail */ +- TRUE, /* vidModeEnabled */ +- FALSE, /* vidModeAllowNonLocal */ +- TRUE, /* miscModInDevEnabled */ +- FALSE, /* miscModInDevAllowNonLocal */ +- PCIOsConfig, /* pciFlags */ +- Pix24DontCare, /* pixmap24 */ +- X_DEFAULT, /* pix24From */ ++ .allowMouseOpenFail = FALSE, ++ .vidModeEnabled = TRUE, ++ .vidModeAllowNonLocal = FALSE, ++ .miscModInDevEnabled = TRUE, ++ .miscModInDevAllowNonLocal = FALSE, ++ .pciFlags = PCIOsConfig, ++ .pixmap24 = Pix24DontCare, ++ .pix24From = X_DEFAULT, + #ifdef __i386__ +- FALSE, /* pc98 */ ++ .pc98 = FALSE, + #endif +- TRUE, /* pmFlag */ +- LogNone, /* syncLog */ +- 0, /* estimateSizesAggressively */ +- FALSE, /* kbdCustomKeycodes */ +- FALSE, /* disableRandR */ +- X_DEFAULT /* randRFrom */ ++ .pmFlag = TRUE, ++ .log = LogNone, ++ .estimateSizesAggressively = 0, ++ .kbdCustomKeycodes = FALSE, ++ .disableRandR = FALSE, ++ .randRFrom = X_DEFAULT, ++ .allowEmptyInput = TRUE, ++ .autoAddDevices = TRUE, ++ .autoEnableDevices = TRUE + }; + const char *xf86ConfigFile = NULL; + const char *xf86InputDeviceList = NULL; +-- +1.6.0.3 + diff --git a/abs/core-testing/xorg-util-macros/PKGBUILD b/abs/core-testing/xorg-util-macros/PKGBUILD index 8388da6..af3786a 100644 --- a/abs/core-testing/xorg-util-macros/PKGBUILD +++ b/abs/core-testing/xorg-util-macros/PKGBUILD @@ -1,21 +1,21 @@ -# $Id: PKGBUILD 3239 2008-06-21 17:46:04Z jgc $ +# $Id: PKGBUILD 21902 2008-12-17 20:27:32Z jgc $ #Maintainer: Jan de Groot <jgc@archlinux.org> pkgname=xorg-util-macros -pkgver=1.1.6 +pkgver=1.2.1 pkgrel=1 pkgdesc="X.Org Autotools macros" arch=(i686 x86_64) license=('custom') url="http://xorg.freedesktop.org/" source=(${url}/releases/individual/util/util-macros-${pkgver}.tar.bz2) -md5sums=('5b82bf7c25112f2ce7e2a3638a91a83c') +md5sums=('dc7ddaf9bea8b341510efe4dac125af4') build() { - cd ${startdir}/src/util-macros-${pkgver} + cd "${srcdir}/util-macros-${pkgver}" ./configure --prefix=/usr || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 - install -m755 -d ${pkgdir}/usr/share/licenses/${pkgname} - install -m644 COPYING ${pkgdir}/usr/share/licenses/${pkgname} || return 1 + make DESTDIR="${pkgdir}" install || return 1 + install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}" + install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/" || return 1 } diff --git a/abs/core-testing/xorg-utils/PKGBUILD b/abs/core-testing/xorg-utils/PKGBUILD index 6fe2d0f..61a55ce 100644 --- a/abs/core-testing/xorg-utils/PKGBUILD +++ b/abs/core-testing/xorg-utils/PKGBUILD @@ -1,4 +1,4 @@ -# $Id: PKGBUILD 18574 2008-11-07 22:08:19Z jgc $ +# $Id: PKGBUILD 18946 2008-11-12 04:14:33Z eric $ # Maintainer: Alexander Baldeck <alexander@archlinux.org> # Contributor: Jan de Groot <jgc@archlinux.org> pkgname=xorg-utils @@ -8,7 +8,7 @@ pkgdesc="Collection of client utilities used to query the X server" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" depends=('libxxf86dga' 'libxi' 'libxxf86misc' 'libxtst' 'libxinerama' 'libxv' - 'libdmx' 'libxft' 'libxaw') + 'libdmx' 'libxft' 'libxaw>=1.0.5') makedepends=('pkgconfig' 'mesa') source=(${url}/releases/individual/app/xdpyinfo-1.0.3.tar.bz2 ${url}/releases/individual/app/xdriinfo-1.0.2.tar.bz2 @@ -21,16 +21,11 @@ source=(${url}/releases/individual/app/xdpyinfo-1.0.3.tar.bz2 ${url}/releases/individual/app/xprop-1.0.4.tar.bz2 ${url}/releases/individual/app/xvinfo-1.0.2.tar.bz2 ${url}/releases/individual/app/xwininfo-1.0.4.tar.bz2) -md5sums=('b7cbab6cbcd12bf7ad65dbc12d86e104' - 'a5ec51ed9f0a55dc3462d90d52ff899c' - 'a9532c3d1683c99bb5df1895cb3a60b1' - 'c72abd90f50ef459bc14b39ec9fcc7f8' - '288fe4cf8a990e4e602aac16dd9109fb' - '69adcda848479acc3b82b3928812d191' - '44473b880d26bfbe8b3d4d72b183cba7' - '28958248590ff60ecd70e8f590d977b7' - '48aa8fd78802f477dcbf9ef0dfd9f783' - 'e1e318436f49e2f0f3764593dadd9ad2' +md5sums=('b7cbab6cbcd12bf7ad65dbc12d86e104' 'a5ec51ed9f0a55dc3462d90d52ff899c'\ + 'a9532c3d1683c99bb5df1895cb3a60b1' 'c72abd90f50ef459bc14b39ec9fcc7f8'\ + '288fe4cf8a990e4e602aac16dd9109fb' '69adcda848479acc3b82b3928812d191'\ + '44473b880d26bfbe8b3d4d72b183cba7' '28958248590ff60ecd70e8f590d977b7'\ + '48aa8fd78802f477dcbf9ef0dfd9f783' 'e1e318436f49e2f0f3764593dadd9ad2'\ 'e2a9bf5ab7f2a0866700a3b49dd8c6bf') build() { @@ -38,7 +33,7 @@ build() { for i in *; do if [ -d "${i}" ]; then pushd "${i}" - ./configure --prefix=/usr || return 1 + ./configure --prefix=/usr --mandir=/usr/share/man || return 1 make || return 1 make DESTDIR="${pkgdir}" install || return 1 popd diff --git a/abs/core-testing/xorg-xkb-utils/PKGBUILD b/abs/core-testing/xorg-xkb-utils/PKGBUILD index 5bfac78..15ab306 100644 --- a/abs/core-testing/xorg-xkb-utils/PKGBUILD +++ b/abs/core-testing/xorg-xkb-utils/PKGBUILD @@ -1,33 +1,31 @@ -# $Id: PKGBUILD 4399 2008-07-06 20:26:41Z jgc $ +# $Id: PKGBUILD 18690 2008-11-08 17:01:43Z jgc $ # Maintainer: Alexander Baldeck <alexander@archlinux.org> # Contributor: Jan de Groot <jgc@archlinux.org> pkgname=xorg-xkb-utils -pkgver=7.3 +pkgver=7.4 pkgrel=1 pkgdesc="X.org keyboard utilities" arch=(i686 x86_64) url="http://xorg.freedesktop.org/" -depends=('libxaw' 'libxkbfile') +depends=('libxaw>=1.0.5' 'libxkbfile') makedepends=(pkgconfig) source=(${url}/releases/individual/app/xkbutils-1.0.1.tar.bz2 ${url}/releases/individual/app/xkbcomp-1.0.5.tar.bz2 ${url}/releases/individual/app/xkbevd-1.0.2.tar.bz2 - ${url}/releases/individual/app/xkbprint-1.0.1.tar.bz2 ${url}/releases/individual/app/setxkbmap-1.0.4.tar.bz2) md5sums=('84396a3dd75337caaae29d8fa5616fb1' '6cc96c3e4ed5d9802fe717beac008f19' '68f2a143716c23b566f8509d9498f516' - 'b98ae2d8b21c545b7b322d0b302efefa' '6fab3bb176be9e510c5613d054ef1ca4') build() { - cd ${startdir}/src + cd "${srcdir}" for i in *; do if [ -d "${i}" ]; then pushd "${i}" - ./configure --prefix=/usr + ./configure --prefix=/usr || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 + make DESTDIR="${pkgdir}" install || return 1 popd fi done diff --git a/abs/core-testing/xterm/PKGBUILD b/abs/core-testing/xterm/PKGBUILD index ced251a..f3ac735 100644 --- a/abs/core-testing/xterm/PKGBUILD +++ b/abs/core-testing/xterm/PKGBUILD @@ -1,21 +1,22 @@ -# $Id: PKGBUILD 3697 2008-06-29 12:44:48Z jgc $ +# $Id: PKGBUILD 18684 2008-11-08 16:46:33Z jgc $ # ppc Maintainer: Alexander Baldeck <alexander@archlinux.org> # i686 Maintainer: Jan de Groot <jgc@archlinux.org> pkgname=xterm -pkgver=235 +pkgver=237 pkgrel=1 pkgdesc="X Terminal Emulator" arch=(i686 x86_64) url="http://invisible-island.net/xterm/" -depends=('libxft' 'libxaw' 'ncurses' 'xorg-apps') +depends=('libxft' 'libxaw>=1.0.5' 'ncurses' 'xorg-apps') groups=('xorg') source=(ftp://invisible-island.net/${pkgname}/${pkgname}-${pkgver}.tgz) -md5sums=('5060cab9cef0ea09a24928f3c7fbde2b') +md5sums=('6d5f9e124fd3e09487f47c66da8c7345') build() { - cd ${startdir}/src/${pkgname}-${pkgver} + cd "${srcdir}/${pkgname}-${pkgver}" ./configure --prefix=/usr \ --libdir=/etc \ + --mandir=/usr/share/man \ --with-app-defaults=/usr/share/X11/app-defaults/ \ --with-x \ --disable-full-tgetent \ @@ -38,6 +39,6 @@ build() { --enable-mini-luit \ --enable-narrowproto || return 1 make || return 1 - make DESTDIR=${startdir}/pkg install || return 1 - chmod 0755 ${startdir}/pkg/usr/bin/xterm || return 1 + make DESTDIR="${pkgdir}" install || return 1 + chmod 0755 "${pkgdir}/usr/bin/xterm" || return 1 } |