merging trunk

This commit is contained in:
Stephan Raue 2010-04-07 04:03:24 +02:00
commit b0d30bcecc
158 changed files with 26109 additions and 79140 deletions

View File

@ -9,10 +9,11 @@ mkdir -p $INSTALL/usr/lib
cp -PR $PKG_BUILD/modules/mixer/simple/.libs/*.so $INSTALL/usr/lib
mkdir -p $INSTALL/usr/share/alsa
sed 's%.*~/\.asoundrc.*%%' $PKG_BUILD/src/conf/alsa.conf > $INSTALL/usr/share/alsa/alsa.conf
cp -PR $PKG_BUILD/src/conf/smixer.conf $INSTALL/usr/share/alsa
cp -PR $PKG_BUILD/src/conf/*.alisp $INSTALL/usr/share/alsa
cp -rf $PKG_BUILD/src/conf/cards $INSTALL/usr/share/alsa/
cp -rf $PKG_BUILD/src/conf/pcm $INSTALL/usr/share/alsa/
sed 's%~/\.asoundrc%/storage/\.config/asound.conf%' \
$PKG_BUILD/src/conf/alsa.conf > $INSTALL/usr/share/alsa/alsa.conf
cp -P $PKG_BUILD/src/conf/smixer.conf $INSTALL/usr/share/alsa
cp -P $PKG_BUILD/src/conf/*.alisp $INSTALL/usr/share/alsa
cp -PR $PKG_BUILD/src/conf/cards $INSTALL/usr/share/alsa/
cp -PR $PKG_BUILD/src/conf/pcm $INSTALL/usr/share/alsa/
rm -f $INSTALL/usr/share/alsa/cards/Makefile*
rm -f $INSTALL/usr/share/alsa/pcm/Makefile*

View File

@ -9,7 +9,7 @@ mixer() {
}
(
. /etc/sysconfig
. /etc/profile
progress "Setting up sound card"
@ -88,8 +88,10 @@ else
mixer 'Analog Rear' 100%
mixer 'Analog Center/LFE' 100%
# ASRock ION 330 (and perhaps others) has 2 IEC958 channels
mixer IEC958,1 on
# asrock ion 330 has Master Front set to 0
# ASRock ION 330 has Master Front set to 0
mixer 'Master Front' 100%
fi

View File

@ -5,3 +5,6 @@
$SCRIPTS/install strace
$SCRIPTS/install gdb
$SCRIPTS/install bootchart
$SCRIPTS/install mrxvt
$SCRIPTS/install evilwm

View File

@ -1 +1 @@
http://mirrors.ircam.fr/pub/gnu/gnu/gettext/gettext-0.17.tar.gz
http://ftp.gnu.org/pub/gnu/gettext/gettext-0.17.tar.gz

View File

@ -4,6 +4,7 @@
$SCRIPTS/build toolchain
$SCRIPTS/build libiconv
$SCRIPTS/build zlib
$SCRIPTS/build glib-host
cd $PKG_BUILD

View File

@ -2,8 +2,9 @@
. config/options
$SCRIPTS/install zlib
$SCRIPTS/install libiconv
mkdir -p $INSTALL/usr/lib
cp -PR `find $PKG_BUILD/.build-target/g{lib,module,object,thread,io} -name *.so*` $INSTALL/usr/lib
cp -P `find $PKG_BUILD/.build-target/g{lib,module,object,thread,io} -name *.so*` $INSTALL/usr/lib
rm -rf $INSTALL/usr/lib/libg{lib,module,object,thread,io}*.so*T

View File

@ -1,40 +0,0 @@
From 8db8adfd01a1ff1e2a160ae3b0199bd3daa4191a Mon Sep 17 00:00:00 2001
From: Jakob Bornecrantz <jakob@vmware.com>
Date: Thu, 28 Jan 2010 16:59:26 +0000
Subject: st/xorg: Update to new libkms interface but be backwards compatible
---
diff --git a/src/gallium/state_trackers/xorg/xorg_crtc.c b/src/gallium/state_trackers/xorg/xorg_crtc.c
index 0160b1a..daa9f8b 100644
--- a/src/gallium/state_trackers/xorg/xorg_crtc.c
+++ b/src/gallium/state_trackers/xorg/xorg_crtc.c
@@ -243,7 +243,11 @@ crtc_load_cursor_argb_kms(xf86CrtcPtr crtc, CARD32 * image)
unsigned attr[8];
attr[0] = KMS_BO_TYPE;
+#ifdef KMS_BO_TYPE_CURSOR_64X64_A8R8G8B8
+ attr[1] = KMS_BO_TYPE_CURSOR_64X64_A8R8G8B8;
+#else
attr[1] = KMS_BO_TYPE_CURSOR;
+#endif
attr[2] = KMS_WIDTH;
attr[3] = 64;
attr[4] = KMS_HEIGHT;
diff --git a/src/gallium/state_trackers/xorg/xorg_driver.c b/src/gallium/state_trackers/xorg/xorg_driver.c
index e4ad789..f53a879 100644
--- a/src/gallium/state_trackers/xorg/xorg_driver.c
+++ b/src/gallium/state_trackers/xorg/xorg_driver.c
@@ -1008,7 +1008,11 @@ drv_create_front_buffer_kms(ScrnInfoPtr pScrn)
int ret;
attr[0] = KMS_BO_TYPE;
+#ifdef KMS_BO_TYPE_SCANOUT_X8R8G8B8
+ attr[1] = KMS_BO_TYPE_SCANOUT_X8R8G8B8;
+#else
attr[1] = KMS_BO_TYPE_SCANOUT;
+#endif
attr[2] = KMS_WIDTH;
attr[3] = pScrn->virtualX;
attr[4] = KMS_HEIGHT;
--
cgit v0.8.3-6-g21f6

View File

@ -1,2 +1,2 @@
ftp://ftp.freedesktop.org/pub/mesa/7.7/MesaLib-7.7.tar.bz2
ftp://ftp.freedesktop.org/pub/mesa/7.7/MesaDemos-7.7.tar.bz2
ftp://ftp.freedesktop.org/pub/mesa/7.7.1/MesaLib-7.7.1.tar.bz2
ftp://ftp.freedesktop.org/pub/mesa/7.7.1/MesaDemos-7.7.1.tar.bz2

View File

@ -1 +1 @@
http://dri.freedesktop.org/libdrm/libdrm-2.4.19.tar.bz2
http://dri.freedesktop.org/libdrm/libdrm-2.4.20.tar.bz2

File diff suppressed because it is too large Load Diff

View File

@ -1 +1 @@
http://sources.openelec.tv/svn/xbmc-theme-Confluence-28690.tar.bz2
http://sources.openelec.tv/svn/xbmc-theme-Confluence-29090.tar.bz2

View File

@ -66,6 +66,13 @@ else
XBMC_VDPAU="--disable-vdpau"
fi
if [ "$VAAPI" = yes ]; then
$SCRIPTS/build libva
XBMC_VAAPI="--enable-vaapi"
else
XBMC_VAAPI="--disable-vaapi"
fi
if [ "$CRYSTALHD" = yes ]; then
$SCRIPTS/build crystalhd
XBMC_CRYSTALHD="--enable-crystalhd"
@ -73,13 +80,6 @@ else
XBMC_CRYSTALHD="--disable-crystalhd"
fi
if [ "$FFMPEG" = external ]; then
$SCRIPTS/build ffmpeg
XBMC_FFMPEG="--enable-external-ffmpeg"
else
XBMC_FFMPEG="--disable-external-ffmpeg"
fi
LDFLAGS="$LDFLAGS -lpython2.6"
cd $PKG_BUILD
@ -91,6 +91,8 @@ cd -
./bootstrap
./configure --host=$TARGET_NAME \
--build=$HOST_NAME \
--with-arch=$TARGET_ARCH \
--with-cpu=$TARGET_CPU \
--prefix=/usr \
--exec-prefix=/usr \
--sysconfdir=/etc \
@ -115,8 +117,9 @@ cd -
--enable-hal \
--enable-webserver \
$XBMC_VDPAU \
$XBMC_VAAPI \
$XBMC_CRYSTALHD \
$XBMC_FFMPEG \
--disable-external-ffmpeg \
--disable-external-liba52 \
--disable-external-libdts \
--disable-external-libass \

View File

@ -1,29 +0,0 @@
################################################################################
# Mediacenter environment variables.
#
# This file contains non-OpenELEC evironment variables as well as OpenELEC
# evironment variables that are not user defined.
################################################################################
XBMC_CACHING="no"
#-------------------------------------------------------------------------------
# do not change anything below
#-------------------------------------------------------------------------------
XBMC_HOME="/usr/share/xbmc"
export XBMC_HOME
cache_xbmc () {
progress "caching XBMC"
mkdir -p /var/cache/bin
$IONICE cp -PR /usr/share/xbmc/xbmc.bin /var/cache/bin
touch /var/cache/xbmc.cache
}
wait_for_xbmc_cache () {
while [ ! -f /var/cache/xbmc.cache ]; do
sleep 1
done
}

View File

@ -1,7 +1,7 @@
#
# caching xbmc
#
# runlevels: openelec, text
# runlevels: openelec, textmode
if [ "$XBMC_CACHING" = "yes" ]; then

View File

@ -16,7 +16,7 @@ $SCRIPTS/install libssh
$SCRIPTS/install dbus
$SCRIPTS/install hal
$SCRIPTS/install DeviceKit-disks
$SCRIPTS/install udisks
$SCRIPTS/install ConsoleKit
$SCRIPTS/install libXt
@ -26,6 +26,7 @@ $SCRIPTS/install libXrandr
$SCRIPTS/install Mesa
[ "$VDPAU" = yes ] && $SCRIPTS/install libvdpau
[ "$VAAPI" = yes ] && $SCRIPTS/install libva
[ "$CRYSTALHD" = yes ] && $SCRIPTS/install crystalhd
$SCRIPTS/install glew
$SCRIPTS/install fontconfig
@ -52,7 +53,6 @@ $SCRIPTS/install flac
$SCRIPTS/install wavpack
$SCRIPTS/install libmpeg2
# $SCRIPTS/install musepack
[ "$FFMPEG" = external ] && $SCRIPTS/install ffmpeg
$SCRIPTS/install SDL
$SCRIPTS/install SDL_mixer

View File

@ -1,138 +0,0 @@
diff -Naur xbmc-28584/configure.in xbmc-28584.patch/configure.in
--- xbmc-28584/configure.in 2010-03-14 21:06:24.000000000 +0100
+++ xbmc-28584.patch/configure.in 2010-03-15 00:50:53.680149619 +0100
@@ -1154,7 +1154,9 @@
cp pyconfig.h Include
else
./configure \
- --enable-ipv6 \
+ --host=$host_alias \
+ --build=$build_alias \
+ --disable-ipv6 \
--enable-unicode=ucs4 \
--without-cxx \
--enable-shared \
@@ -1219,6 +1221,7 @@
--disable-static \
--disable-ipv6 \
`if test "$use_debug" = "no"; then echo --disable-debug; fi` \
+ `if test "$cross_compiling" = "yes"; then echo --enable-cross-compile; fi` \
--disable-muxers \
--enable-muxer=spdif \
--enable-muxer=adts \
@@ -1235,6 +1238,7 @@
--enable-postproc \
--enable-gpl \
`if test "$use_vdpau" = "yes"; then echo --enable-vdpau; else echo --disable-vdpau; fi` \
+ --disable-vaapi \
--enable-libfaad \
--enable-protocol=http \
--enable-pthreads \
@@ -1254,6 +1258,8 @@
--disable-win
else
./configure \
+ --host=$host_alias \
+ --build=$build_alias \
--disable-oss \
--disable-solaris-audio \
--disable-al-audio \
@@ -1271,6 +1277,8 @@
--with-pic
else
./configure \
+ --host=$host_alias \
+ --build=$build_alias \
--disable-doc \
--enable-static \
--with-pic
@@ -1289,6 +1297,8 @@
cp `pwd`/../libdvdread/src/*.h `pwd`/../includes/dvdread
else
./configure2 \
+ --host=$host_alias \
+ --build=$build_alias \
--extra-cflags="$CFLAGS $DVDREAD_CFLAGS -fPIC -DPIC -I`pwd`/../libdvdcss/src" \
--prefix="${prefix}" --includedir="${includedir}" --libdir="${libdir}" --datadir="${datadir}" \
--enable-static \
@@ -1314,6 +1324,8 @@
--cc="$CC"
else
./configure2 \
+ --host=$host_alias \
+ --build=$build_alias \
--extra-cflags="$DVDREAD_CFLAGS -fPIC -DPIC -I`pwd`/../includes" \
--extra-ldflags="-L`pwd`/../libdvdread/obj" \
--with-dvdread-config="`pwd`/../libdvdread/obj/dvdread-config" \
@@ -1346,6 +1358,8 @@
--disable-al-audio
else
./configure \
+ --host=$host_alias \
+ --build=$build_alias \
--with-pic \
--disable-static \
--enable-shared \
@@ -1381,7 +1395,9 @@
./configure MACOSX_DEPLOYMENT_TARGET=10.4
else
CFLAGS="$CFLAGS -fPIC" \
- ./configure
+ ./configure \
+ --host=$host_alias \
+ --build=$build_alias
fi
], [$USE_EXTERNAL_LIBASS])
@@ -1395,6 +1411,8 @@
--with-pic
else
./configure \
+ --host=$host_alias \
+ --build=$build_alias \
CPPFLAGS="$CPPFLAGS" \
CFLAGS="$CFLAGS -fPIC" \
CXXFLAGS="$CXXFLAGS -fPIC" \
@@ -1421,6 +1439,8 @@
XB_CONFIG_MODULE([xbmc/visualizations/Goom/goom2k4-0],[
if test "$host_vendor" != "apple" ; then
./configure \
+ --host=$host_alias \
+ --build=$build_alias \
CPPFLAGS="$CPPFLAGS" \
CFLAGS="$CFLAGS -fPIC" \
CXXFLAGS="$CXXFLAGS -fPIC" \
@@ -1451,6 +1471,8 @@
--disable-skyrocket
else
./configure \
+ --host=$host_alias \
+ --build=$build_alias \
CPPFLAGS="$CPPFLAGS" \
CFLAGS="$CFLAGS -fPIC" \
CXXFLAGS="$CXXFLAGS -fPIC" \
@@ -1470,9 +1492,11 @@
XB_CONFIG_MODULE([xbmc/cores/dvdplayer/Codecs/libbdnav/], [
if test "$host_vendor" = "apple" ; then
- ./configure --with-ssl-dir=/opt/local/include
+ ./configure --with-ssl-dir=/opt/local/include
else
- ./configure --without-openssl
+ ./configure --without-openssl \
+ --host=$host_alias \
+ --build=$build_alias
fi
], [0])
@@ -1481,7 +1505,9 @@
CFLAGS="-isysroot /Developer/SDKs/MacOSX10.4u.sdk -mmacosx-version-min=10.4 -fno-common" \
./configure MACOSX_DEPLOYMENT_TARGET=10.4 --disable-shared
else
- ./configure
+ ./configure \
+ --host=$host_alias \
+ --build=$build_alias
fi
], [0])

View File

@ -1,29 +0,0 @@
diff -Naur xbmc-27135/configure.in xbmc-27135.patch/configure.in
--- xbmc-27135/configure.in 2010-01-24 13:07:18.024733190 +0100
+++ xbmc-27135.patch/configure.in 2010-01-24 13:07:39.324609701 +0100
@@ -894,12 +894,6 @@
final_message="$final_message\n MID Support:\tNo"
fi
-if test -d "/usr/include/lzo"; then
- INCLUDES="$INCLUDES -I/usr/include/lzo"
-else
- INCLUDES="$INCLUDES"
-fi
-
if test "$use_ccache" = "yes"; then
if test "$ac_cv_path_CCACHE" = "none"; then
echo "ccache not found. Falling back to default CC"
diff -Naur xbmc-27135/configure.in.orig xbmc-27135.patch/configure.in.orig
diff -Naur xbmc-27135/tools/TexturePacker/XBMCTex.cpp xbmc-27135.patch/tools/TexturePacker/XBMCTex.cpp
--- xbmc-27135/tools/TexturePacker/XBMCTex.cpp 2010-01-24 11:48:16.696641003 +0100
+++ xbmc-27135.patch/tools/TexturePacker/XBMCTex.cpp 2010-01-24 13:07:39.325705415 +0100
@@ -37,7 +37,7 @@
#endif
#ifdef _LINUX
-#include <lzo1x.h>
+#include <lzo/lzo1x.h>
#else
#include "../../xbmc/lib/liblzo/LZO1X.H"
#endif

View File

@ -1,19 +0,0 @@
diff -Naur xbmc-23998/configure.in xbmc-23998.patch/configure.in
--- xbmc-23998/configure.in 2009-10-25 13:30:40.869660379 +0100
+++ xbmc-23998.patch/configure.in 2009-10-25 13:33:30.376657368 +0100
@@ -692,6 +692,7 @@
fi
fi
+AC_CHECK_PROG(HAVE_YASM,yasm,"yes","no",)
AC_CHECK_PROG(HAVE_SVNVERSION,svnversion,"yes","no",)
AC_CHECK_PROG(HAVE_GIT,git,"yes","no",)
@@ -1177,6 +1178,7 @@
--disable-ipv6 \
`if test "$use_debug" = "no"; then echo --disable-debug; fi` \
`if test "$cross_compiling" = "yes"; then echo --enable-cross-compile; fi` \
+ `if test "$HAVE_YASM" = "yes"; then echo --enable-yasm; fi` \
--disable-muxers \
--disable-encoders \
--disable-decoder=mpeg_xvmc \

View File

@ -1,7 +1,7 @@
diff -Naur xbmc-28584/configure.in xbmc-28584.patch/configure.in
--- xbmc-28584/configure.in 2010-03-15 00:51:45.481151345 +0100
+++ xbmc-28584.patch/configure.in 2010-03-15 00:52:15.206151488 +0100
@@ -33,6 +33,8 @@
diff -Naur xbmc-28910/configure.in xbmc-28910.patch/configure.in
--- xbmc-28910/configure.in 2010-03-28 18:55:35.040753605 +0200
+++ xbmc-28910.patch/configure.in 2010-03-28 18:58:11.605628523 +0200
@@ -23,6 +23,8 @@
xrandr_disabled="== XRandR support disabled. SDL will be used for resolution support. =="
goom_enabled="== GOOM enabled. =="
goom_disabled="== GOOM disabled. =="
@ -10,7 +10,7 @@ diff -Naur xbmc-28584/configure.in xbmc-28584.patch/configure.in
pulse_not_found="== Could not find libpulse. PulseAudio support disabled. =="
pulse_disabled="== PulseAudio support manually disabled. =="
faac_not_found="== Could not find libfaac. FAAC support disabled. =="
@@ -150,6 +152,12 @@
@@ -152,6 +154,12 @@
[use_goom=$enableval],
[use_goom=no])
@ -23,7 +23,7 @@ diff -Naur xbmc-28584/configure.in xbmc-28584.patch/configure.in
AC_PATH_PROG(CCACHE,ccache,none)
AC_ARG_ENABLE([ccache],
[AS_HELP_STRING([--enable-ccache],
@@ -529,6 +537,15 @@
@@ -531,6 +539,15 @@
fi
fi
@ -39,7 +39,7 @@ diff -Naur xbmc-28584/configure.in xbmc-28584.patch/configure.in
### External libraries checks
if test "$use_external_libraries" = "yes"; then
AC_MSG_NOTICE($external_libraries_enabled)
@@ -851,6 +868,12 @@
@@ -862,6 +879,12 @@
final_message="$final_message\n GOOM:\t\tNo"
fi
@ -52,7 +52,7 @@ diff -Naur xbmc-28584/configure.in xbmc-28584.patch/configure.in
if test "$use_pcre" = "yes"; then
final_message="$final_message\n PCRE Support:\tYes"
else
@@ -1089,6 +1112,7 @@
@@ -1106,6 +1129,7 @@
AC_SUBST(SDL_DEFINES)
AC_SUBST(BUILD_DVDCSS)
AC_SUBST(BUILD_GOOM)
@ -60,7 +60,7 @@ diff -Naur xbmc-28584/configure.in xbmc-28584.patch/configure.in
AC_SUBST(USE_EXTERNAL_LIBRARIES)
AC_SUBST(USE_EXTERNAL_FFMPEG)
AC_SUBST(USE_EXTERNAL_LIBA52)
@@ -1434,7 +1458,7 @@
@@ -1451,7 +1475,7 @@
-DSYSCONF_INSTALL_DIR:PATH="${sysconfdir}" -DSHARE_INSTALL_PREFIX:PATH="${datadir}" .
set +x
fi
@ -69,10 +69,10 @@ diff -Naur xbmc-28584/configure.in xbmc-28584.patch/configure.in
XB_CONFIG_MODULE([xbmc/visualizations/Goom/goom2k4-0],[
if test "$host_vendor" != "apple" ; then
diff -Naur xbmc-28584/Makefile.in xbmc-28584.patch/Makefile.in
--- xbmc-28584/Makefile.in 2010-03-14 21:06:24.000000000 +0100
+++ xbmc-28584.patch/Makefile.in 2010-03-15 00:55:14.471274664 +0100
@@ -104,8 +104,10 @@
diff -Naur xbmc-28910/Makefile.in xbmc-28910.patch/Makefile.in
--- xbmc-28910/Makefile.in 2010-03-28 17:12:32.000000000 +0200
+++ xbmc-28910.patch/Makefile.in 2010-03-28 18:58:11.636752616 +0200
@@ -105,8 +105,10 @@
VIS_DIRS=\
xbmc/visualizations/OpenGLSpectrum \
@ -85,7 +85,7 @@ diff -Naur xbmc-28584/Makefile.in xbmc-28584.patch/Makefile.in
ifeq ($(findstring osx,$(ARCH)), osx)
VIS_DIRS+=xbmc/visualizations/iTunes
endif
@@ -294,7 +296,9 @@
@@ -303,7 +305,9 @@
visualizations: exports
$(MAKE) -C xbmc/visualizations/OpenGLSpectrum
$(MAKE) -C xbmc/visualizations/WaveForm

View File

@ -1,7 +1,7 @@
diff -Naur xbmc-28584/configure.in xbmc-28584.patch/configure.in
--- xbmc-28584/configure.in 2010-03-15 00:58:21.345276911 +0100
+++ xbmc-28584.patch/configure.in 2010-03-15 00:58:38.170152082 +0100
@@ -35,6 +35,8 @@
diff -Naur xbmc-28910/configure.in xbmc-28910.patch/configure.in
--- xbmc-28910/configure.in 2010-03-28 19:01:27.995753591 +0200
+++ xbmc-28910.patch/configure.in 2010-03-28 19:02:17.307753519 +0200
@@ -25,6 +25,8 @@
goom_disabled="== GOOM disabled. =="
xbmcprojectm_enabled="== XBMCProjectM enabled. =="
xbmxprojectm_disabled="== XBMCProjectM disabled. =="
@ -10,7 +10,7 @@ diff -Naur xbmc-28584/configure.in xbmc-28584.patch/configure.in
pulse_not_found="== Could not find libpulse. PulseAudio support disabled. =="
pulse_disabled="== PulseAudio support manually disabled. =="
faac_not_found="== Could not find libfaac. FAAC support disabled. =="
@@ -158,6 +160,12 @@
@@ -160,6 +162,12 @@
[use_xbmcprojectm=$enableval],
[use_xbmcprojectm=yes])
@ -23,7 +23,7 @@ diff -Naur xbmc-28584/configure.in xbmc-28584.patch/configure.in
AC_PATH_PROG(CCACHE,ccache,none)
AC_ARG_ENABLE([ccache],
[AS_HELP_STRING([--enable-ccache],
@@ -546,6 +554,15 @@
@@ -548,6 +556,15 @@
BUILD_XBMCPROJECTM=1
fi
@ -39,7 +39,7 @@ diff -Naur xbmc-28584/configure.in xbmc-28584.patch/configure.in
### External libraries checks
if test "$use_external_libraries" = "yes"; then
AC_MSG_NOTICE($external_libraries_enabled)
@@ -874,6 +891,12 @@
@@ -885,6 +902,12 @@
final_message="$final_message\n XBMCProjectM:\tNo"
fi
@ -52,7 +52,7 @@ diff -Naur xbmc-28584/configure.in xbmc-28584.patch/configure.in
if test "$use_pcre" = "yes"; then
final_message="$final_message\n PCRE Support:\tYes"
else
@@ -1113,6 +1136,7 @@
@@ -1130,6 +1153,7 @@
AC_SUBST(BUILD_DVDCSS)
AC_SUBST(BUILD_GOOM)
AC_SUBST(BUILD_XBMCPROJECTM)
@ -60,7 +60,7 @@ diff -Naur xbmc-28584/configure.in xbmc-28584.patch/configure.in
AC_SUBST(USE_EXTERNAL_LIBRARIES)
AC_SUBST(USE_EXTERNAL_FFMPEG)
AC_SUBST(USE_EXTERNAL_LIBA52)
@@ -1512,7 +1536,7 @@
@@ -1529,7 +1553,7 @@
--disable-lattice \
--disable-skyrocket
fi
@ -69,10 +69,10 @@ diff -Naur xbmc-28584/configure.in xbmc-28584.patch/configure.in
XB_CONFIG_MODULE([xbmc/cores/dvdplayer/Codecs/libbdnav/], [
if test "$host_vendor" = "apple" ; then
diff -Naur xbmc-28584/Makefile.in xbmc-28584.patch/Makefile.in
--- xbmc-28584/Makefile.in 2010-03-15 00:58:21.346276544 +0100
+++ xbmc-28584.patch/Makefile.in 2010-03-15 00:58:38.176152470 +0100
@@ -99,8 +99,10 @@
diff -Naur xbmc-28910/Makefile.in xbmc-28910.patch/Makefile.in
--- xbmc-28910/Makefile.in 2010-03-28 19:01:27.997753604 +0200
+++ xbmc-28910.patch/Makefile.in 2010-03-28 19:02:17.308751221 +0200
@@ -100,8 +100,10 @@
lib/xbmc-dll-symbols \
lib/jsoncpp/jsoncpp/src/lib_json
@ -85,7 +85,7 @@ diff -Naur xbmc-28584/Makefile.in xbmc-28584.patch/Makefile.in
VIS_DIRS=\
xbmc/visualizations/OpenGLSpectrum \
@@ -308,7 +310,9 @@
@@ -317,7 +319,9 @@
endif
endif
screensavers: exports

View File

@ -1,7 +1,7 @@
diff -Naur xbmc-27135/configure.in xbmc-27135.patch/configure.in
--- xbmc-27135/configure.in 2010-01-24 13:08:23.126603769 +0100
+++ xbmc-27135.patch/configure.in 2010-01-24 13:16:12.459703838 +0100
@@ -39,6 +39,8 @@
diff -Naur xbmc-28910/configure.in xbmc-28910.patch/configure.in
--- xbmc-28910/configure.in 2010-03-28 19:11:12.041628640 +0200
+++ xbmc-28910.patch/configure.in 2010-03-28 19:11:28.334628763 +0200
@@ -33,6 +33,8 @@
faac_disabled="== FAAC support manually disabled. =="
dvdcss_enabled="== DVDCSS support enabled. =="
dvdcss_disabled="== DVDCSS support disabled. =="
@ -10,7 +10,7 @@ diff -Naur xbmc-27135/configure.in xbmc-27135.patch/configure.in
avahi_not_found="== Could not find libavahi-common or libavahi-client. Avahi support disabled. =="
avahi_disabled="== Avahi support disabled. =="
vdpau_not_found="== Could not find libvdpau. VDPAU support disabled. =="
@@ -191,6 +193,11 @@
@@ -198,6 +200,11 @@
[enable MID support (default is no)])],
[use_mid=$enableval],
[use_mid=no])
@ -22,7 +22,7 @@ diff -Naur xbmc-27135/configure.in xbmc-27135.patch/configure.in
AC_ARG_ENABLE([avahi],
[AS_HELP_STRING([--disable-avahi],
[disable Avahi support (default is enabled if libavahi-common and libavahi-client is found)])],
@@ -437,15 +444,9 @@
@@ -465,15 +472,9 @@
PKG_CHECK_MODULES([DBUS], [dbus-1],
[INCLUDES+=" $DBUS_CFLAGS"; LIBS+=" $DBUS_LIBS"],
AC_MSG_ERROR($missing_library))
@ -38,7 +38,7 @@ diff -Naur xbmc-27135/configure.in xbmc-27135.patch/configure.in
fi
# PulseAudio
@@ -474,6 +475,24 @@
@@ -502,6 +503,24 @@
fi
fi
@ -63,11 +63,10 @@ diff -Naur xbmc-27135/configure.in xbmc-27135.patch/configure.in
# avahi
if test "$host_vendor" = "apple" ; then
use_avahi="no"
diff -Naur xbmc-27135/configure.in.orig xbmc-27135.patch/configure.in.orig
diff -Naur xbmc-27135/guilib/system.h xbmc-27135.patch/guilib/system.h
--- xbmc-27135/guilib/system.h 2010-01-24 11:46:42.047669779 +0100
+++ xbmc-27135.patch/guilib/system.h 2010-01-24 13:16:12.460703245 +0100
@@ -117,7 +117,6 @@
diff -Naur xbmc-28910/guilib/system.h xbmc-28910.patch/guilib/system.h
--- xbmc-28910/guilib/system.h 2010-03-28 17:12:32.000000000 +0200
+++ xbmc-28910.patch/guilib/system.h 2010-03-28 19:11:28.336628838 +0200
@@ -126,7 +126,6 @@
#define HAS_AVAHI
#endif
#define HAS_LCD
@ -75,4 +74,3 @@ diff -Naur xbmc-27135/guilib/system.h xbmc-27135.patch/guilib/system.h
#define HAS_DBUS
#define HAS_DBUS_SERVER
#define HAS_GL
diff -Naur xbmc-27135/guilib/system.h.orig xbmc-27135.patch/guilib/system.h.orig

View File

@ -0,0 +1,29 @@
diff -Naur xbmc-28910/configure.in xbmc-28910.patch/configure.in
--- xbmc-28910/configure.in 2010-03-28 19:09:49.355628909 +0200
+++ xbmc-28910.patch/configure.in 2010-03-28 19:08:34.601754086 +0200
@@ -921,12 +921,6 @@
final_message="$final_message\n MID Support:\tNo"
fi
-if test -d "/usr/include/lzo"; then
- INCLUDES="$INCLUDES -I/usr/include/lzo"
-else
- INCLUDES="$INCLUDES"
-fi
-
if test "$use_ccache" = "yes"; then
if test "$ac_cv_path_CCACHE" = "none"; then
echo "ccache not found. Falling back to default CC"
diff -Naur xbmc-28910/configure.in.orig xbmc-28910.patch/configure.in.orig
diff -Naur xbmc-28910/tools/TexturePacker/XBMCTex.cpp xbmc-28910.patch/tools/TexturePacker/XBMCTex.cpp
--- xbmc-28910/tools/TexturePacker/XBMCTex.cpp 2010-03-28 17:16:22.000000000 +0200
+++ xbmc-28910.patch/tools/TexturePacker/XBMCTex.cpp 2010-03-28 19:08:34.602753740 +0200
@@ -37,7 +37,7 @@
#endif
#ifdef _LINUX
-#include <lzo1x.h>
+#include <lzo/lzo1x.h>
#else
#include "../../xbmc/lib/liblzo/LZO1X.H"
#endif

View File

@ -1,15 +1,15 @@
diff -Naur xbmc-27135/guilib/Makefile.in xbmc-27135.patch/guilib/Makefile.in
--- xbmc-27135/guilib/Makefile.in 2010-01-24 11:46:42.066643776 +0100
+++ xbmc-27135.patch/guilib/Makefile.in 2010-01-24 13:14:01.800579073 +0100
diff -Naur xbmc-28910/guilib/Makefile.in xbmc-28910.patch/guilib/Makefile.in
--- xbmc-28910/guilib/Makefile.in 2010-03-28 17:12:32.000000000 +0200
+++ xbmc-28910.patch/guilib/Makefile.in 2010-03-28 19:13:23.816629379 +0200
@@ -1,4 +1,4 @@
-INCLUDES=-I. -I../ -Icommon -I../xbmc -I../xbmc/linux -I../xbmc/utils -I/usr/include/freetype2 -I/usr/include/SDL -I../xbmc/lib/libsquish
+INCLUDES=-I. -I../ -Icommon -I../xbmc -I../xbmc/linux -I../xbmc/utils -I../xbmc/lib/libsquish
ifneq (@USE_EXTERNAL_FFMPEG@,1)
INCLUDES+=-I../xbmc/cores/dvdplayer/Codecs/ffmpeg
endif
diff -Naur xbmc-27135/xbmc/FileSystem/Makefile.in xbmc-27135.patch/xbmc/FileSystem/Makefile.in
--- xbmc-27135/xbmc/FileSystem/Makefile.in 2010-01-24 11:47:36.842631867 +0100
+++ xbmc-27135.patch/xbmc/FileSystem/Makefile.in 2010-01-24 13:14:59.573578187 +0100
diff -Naur xbmc-28910/xbmc/FileSystem/Makefile.in xbmc-28910.patch/xbmc/FileSystem/Makefile.in
--- xbmc-28910/xbmc/FileSystem/Makefile.in 2010-03-28 17:14:55.000000000 +0200
+++ xbmc-28910.patch/xbmc/FileSystem/Makefile.in 2010-03-28 19:13:23.834753245 +0200
@@ -1,6 +1,6 @@
ARCH=@ARCH@
@ -18,9 +18,9 @@ diff -Naur xbmc-27135/xbmc/FileSystem/Makefile.in xbmc-27135.patch/xbmc/FileSyst
INCLUDES+=-I../lib/libcdio/libcdio/include
ifeq ($(findstring osx,$(ARCH)), osx)
INCLUDES+=-I../../lib/libcurl-OSX/include
diff -Naur xbmc-27135/xbmc/Makefile.in xbmc-27135.patch/xbmc/Makefile.in
--- xbmc-27135/xbmc/Makefile.in 2010-01-24 11:47:03.973632064 +0100
+++ xbmc-27135.patch/xbmc/Makefile.in 2010-01-24 13:14:32.079579280 +0100
diff -Naur xbmc-28910/xbmc/Makefile.in xbmc-28910.patch/xbmc/Makefile.in
--- xbmc-28910/xbmc/Makefile.in 2010-03-28 17:13:35.000000000 +0200
+++ xbmc-28910.patch/xbmc/Makefile.in 2010-03-28 19:13:23.837752973 +0200
@@ -1,4 +1,4 @@
-INCLUDES+=-I../ -I. -Ilinux -Icores -I../guilib -Iutils -IFileSystem -I/usr/include/freetype2 -Icores/dvdplayer
+INCLUDES+=-I../ -I. -Ilinux -Icores -I../guilib -Iutils -IFileSystem -Icores/dvdplayer

View File

@ -1,7 +1,7 @@
diff -Naur xbmc-pvr-28391/configure.in xbmc-pvr-28391.patch/configure.in
--- xbmc-pvr-28391/configure.in 2010-03-06 13:44:06.000000000 +0100
+++ xbmc-pvr-28391.patch/configure.in 2010-03-07 23:26:55.998017036 +0100
@@ -438,9 +438,6 @@
diff -Naur xbmc-28910/configure.in xbmc-28910.patch/configure.in
--- xbmc-28910/configure.in 2010-03-28 19:12:51.211753728 +0200
+++ xbmc-28910.patch/configure.in 2010-03-28 19:24:46.921753713 +0200
@@ -463,9 +463,6 @@
PKG_CHECK_MODULES([XMU], [xmu],
[INCLUDES+=" $XMU_CFLAGS"; LIBS+=" $XMU_LIBS"],
AC_MSG_ERROR($missing_library))

View File

@ -0,0 +1,19 @@
diff -Naur xbmc-28910/configure.in xbmc-28910.patch/configure.in
--- xbmc-28910/configure.in 2010-03-28 19:26:02.516628518 +0200
+++ xbmc-28910.patch/configure.in 2010-03-28 19:26:44.961754003 +0200
@@ -764,6 +764,7 @@
fi
fi
+AC_CHECK_PROG(HAVE_YASM,yasm,"yes","no",)
AC_CHECK_PROG(HAVE_SVNVERSION,svnversion,"yes","no",)
AC_CHECK_PROG(HAVE_GIT,git,"yes","no",)
@@ -1318,6 +1319,7 @@
--enable-protocol=http \
--enable-pthreads \
`if test "$host_cpu" = "powerpc" || test "$host_cpu" = "powerpc64"; then echo --enable-pic; fi` \
+ `if test "$HAVE_YASM" = "yes"; then echo --enable-yasm; fi` \
--cc="$CC"
fi
], [$USE_EXTERNAL_FFMPEG])

View File

@ -1,7 +1,7 @@
diff -Naur xbmc-28584/Makefile.in xbmc-28584.patch/Makefile.in
--- xbmc-28584/Makefile.in 2010-03-15 01:06:53.490151727 +0100
+++ xbmc-28584.patch/Makefile.in 2010-03-15 01:06:07.685150760 +0100
@@ -486,7 +486,7 @@
diff -Naur xbmc-28910/Makefile.in xbmc-28910.patch/Makefile.in
--- xbmc-28910/Makefile.in 2010-03-28 19:09:49.356628842 +0200
+++ xbmc-28910.patch/Makefile.in 2010-03-28 19:28:17.265753408 +0200
@@ -495,7 +495,7 @@
$(MAKE) -C tools/TexturePacker/
install-bin: xbmc.bin # developement convenience target
@ -10,7 +10,7 @@ diff -Naur xbmc-28584/Makefile.in xbmc-28584.patch/Makefile.in
ifeq ($(findstring osx,$(ARCH)), osx)
# TODO: add osx install
@@ -494,55 +494,55 @@
@@ -503,55 +503,55 @@
install: install-binaries install-arch install-datas install-web
install-binaries: install-scripts

View File

@ -1,6 +1,6 @@
diff -Naur xbmc-24572/xbmc/utils/Splash.cpp xbmc-24572.patch/xbmc/utils/Splash.cpp
--- xbmc-24572/xbmc/utils/Splash.cpp 2009-11-13 18:19:48.374746147 +0100
+++ xbmc-24572.patch/xbmc/utils/Splash.cpp 2009-11-14 16:58:52.677231191 +0100
diff -Naur xbmc-28910/xbmc/utils/Splash.cpp xbmc-28910.patch/xbmc/utils/Splash.cpp
--- xbmc-28910/xbmc/utils/Splash.cpp 2010-03-28 17:14:58.000000000 +0200
+++ xbmc-28910.patch/xbmc/utils/Splash.cpp 2010-03-28 19:29:51.138661142 +0200
@@ -53,9 +53,9 @@
g_graphicsContext.Clear();

View File

@ -1,6 +1,6 @@
diff -Naur xbmc-23883/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/aclocal.m4 xbmc-23883.patch/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/aclocal.m4
--- xbmc-23883/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/aclocal.m4 2009-10-21 08:21:57.696148571 +0200
+++ xbmc-23883.patch/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/aclocal.m4 2009-10-21 08:24:57.930021992 +0200
diff -Naur xbmc-28910/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/aclocal.m4 xbmc-28910.patch/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/aclocal.m4
--- xbmc-28910/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/aclocal.m4 2010-03-28 17:15:33.000000000 +0200
+++ xbmc-28910.patch/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/aclocal.m4 2010-03-28 19:31:11.361626849 +0200
@@ -1,7 +1,7 @@
-# generated automatically by aclocal 1.10.1 -*- Autoconf -*-
+# generated automatically by aclocal 1.11 -*- Autoconf -*-
@ -12214,9 +12214,9 @@ diff -Naur xbmc-23883/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/aclocal.m4 xb
# Check how to create a tarball. -*- Autoconf -*-
# Copyright (C) 2004, 2005 Free Software Foundation, Inc.
diff -Naur xbmc-23883/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/.auto/compile xbmc-23883.patch/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/.auto/compile
--- xbmc-23883/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/.auto/compile 1970-01-01 01:00:00.000000000 +0100
+++ xbmc-23883.patch/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/.auto/compile 2009-06-11 11:29:50.000000000 +0200
diff -Naur xbmc-28910/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/.auto/compile xbmc-28910.patch/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/.auto/compile
--- xbmc-28910/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/.auto/compile 1970-01-01 01:00:00.000000000 +0100
+++ xbmc-28910.patch/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/.auto/compile 2010-03-28 19:31:11.362627126 +0200
@@ -0,0 +1,143 @@
+#! /bin/sh
+# Wrapper for compilers which do not understand `-c -o'.
@ -12361,9 +12361,9 @@ diff -Naur xbmc-23883/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/.auto/compile
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff -Naur xbmc-23883/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/.auto/ltmain.sh xbmc-23883.patch/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/.auto/ltmain.sh
--- xbmc-23883/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/.auto/ltmain.sh 2009-10-21 08:21:58.452030953 +0200
+++ xbmc-23883.patch/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/.auto/ltmain.sh 2009-07-30 18:46:57.000000000 +0200
diff -Naur xbmc-28910/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/.auto/ltmain.sh xbmc-28910.patch/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/.auto/ltmain.sh
--- xbmc-28910/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/.auto/ltmain.sh 2010-03-28 17:15:34.000000000 +0200
+++ xbmc-28910.patch/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/.auto/ltmain.sh 2010-03-28 19:31:11.379626721 +0200
@@ -1,52 +1,83 @@
-# ltmain.sh - Provide generalized library-building support services.
-# NOTE: Changing this file will not affect anything until you rerun configure.
@ -26568,9 +26568,9 @@ diff -Naur xbmc-23883/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/.auto/ltmain.
# End:
+# vi:sw=2
+
diff -Naur xbmc-23883/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/config.h.in xbmc-23883.patch/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/config.h.in
--- xbmc-23883/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/config.h.in 2009-10-21 08:21:57.668147533 +0200
+++ xbmc-23883.patch/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/config.h.in 2009-10-21 08:25:00.000000000 +0200
diff -Naur xbmc-28910/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/config.h.in xbmc-28910.patch/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/config.h.in
--- xbmc-28910/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/config.h.in 2010-03-28 17:15:34.000000000 +0200
+++ xbmc-28910.patch/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/config.h.in 2010-03-28 19:31:11.382626642 +0200
@@ -99,6 +99,13 @@
/* Define if <sys/scsi.h> defines sctl_io. */
#undef HPUX_SCTL_IO
@ -26585,9 +26585,9 @@ diff -Naur xbmc-23883/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/config.h.in x
/* Name of package */
#undef PACKAGE
diff -Naur xbmc-23883/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/configure xbmc-23883.patch/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/configure
--- xbmc-23883/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/configure 2009-10-21 08:21:57.754148636 +0200
+++ xbmc-23883.patch/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/configure 2009-10-21 08:25:16.337146095 +0200
diff -Naur xbmc-28910/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/configure xbmc-28910.patch/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/configure
--- xbmc-28910/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/configure 2010-03-28 17:15:33.000000000 +0200
+++ xbmc-28910.patch/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/configure 2010-03-28 19:31:11.423626649 +0200
@@ -1,9 +1,9 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
@ -57693,9 +57693,9 @@ diff -Naur xbmc-23883/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/configure xbm
+fi
diff -Naur xbmc-23883/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/configure.ac xbmc-23883.patch/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/configure.ac
--- xbmc-23883/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/configure.ac 2009-10-21 08:21:58.561148085 +0200
+++ xbmc-23883.patch/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/configure.ac 2009-10-21 06:12:16.000000000 +0200
diff -Naur xbmc-28910/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/configure.ac xbmc-28910.patch/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/configure.ac
--- xbmc-28910/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/configure.ac 2010-03-28 17:15:33.000000000 +0200
+++ xbmc-28910.patch/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/configure.ac 2010-03-28 19:31:11.427663443 +0200
@@ -3,11 +3,13 @@
AC_PREREQ(2.50)
AC_CONFIG_AUX_DIR(.auto)
@ -57710,9 +57710,9 @@ diff -Naur xbmc-23883/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/configure.ac
AC_STDC_HEADERS
AC_LIBTOOL_WIN32_DLL
diff -Naur xbmc-23883/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/doc/Makefile.in xbmc-23883.patch/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/doc/Makefile.in
--- xbmc-23883/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/doc/Makefile.in 2009-10-21 08:21:58.556151542 +0200
+++ xbmc-23883.patch/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/doc/Makefile.in 2009-10-21 08:25:09.265146278 +0200
diff -Naur xbmc-28910/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/doc/Makefile.in xbmc-28910.patch/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/doc/Makefile.in
--- xbmc-28910/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/doc/Makefile.in 2010-03-28 17:15:33.000000000 +0200
+++ xbmc-28910.patch/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/doc/Makefile.in 2010-03-28 19:31:11.428626564 +0200
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11 from Makefile.am.
@ -57925,9 +57925,9 @@ diff -Naur xbmc-23883/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/doc/Makefile.
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
diff -Naur xbmc-23883/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/m4/libtool.m4 xbmc-23883.patch/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/m4/libtool.m4
--- xbmc-23883/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/m4/libtool.m4 1970-01-01 01:00:00.000000000 +0100
+++ xbmc-23883.patch/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/m4/libtool.m4 2009-07-30 18:46:57.000000000 +0200
diff -Naur xbmc-28910/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/m4/libtool.m4 xbmc-28910.patch/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/m4/libtool.m4
--- xbmc-28910/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/m4/libtool.m4 1970-01-01 01:00:00.000000000 +0100
+++ xbmc-28910.patch/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/m4/libtool.m4 2010-03-28 19:31:11.438626811 +0200
@@ -0,0 +1,7360 @@
+# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
+#
@ -65289,9 +65289,9 @@ diff -Naur xbmc-23883/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/m4/libtool.m4
+ ;;
+ esac
+])
diff -Naur xbmc-23883/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/m4/lt~obsolete.m4 xbmc-23883.patch/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/m4/lt~obsolete.m4
--- xbmc-23883/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/m4/lt~obsolete.m4 1970-01-01 01:00:00.000000000 +0100
+++ xbmc-23883.patch/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/m4/lt~obsolete.m4 2009-07-30 18:46:57.000000000 +0200
diff -Naur xbmc-28910/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/m4/lt~obsolete.m4 xbmc-28910.patch/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/m4/lt~obsolete.m4
--- xbmc-28910/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/m4/lt~obsolete.m4 1970-01-01 01:00:00.000000000 +0100
+++ xbmc-28910.patch/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/m4/lt~obsolete.m4 2010-03-28 19:31:11.445794757 +0200
@@ -0,0 +1,92 @@
+# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*-
+#
@ -65385,9 +65385,9 @@ diff -Naur xbmc-23883/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/m4/lt~obsolet
+m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])])
+m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])])
+m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])])
diff -Naur xbmc-23883/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/m4/ltoptions.m4 xbmc-23883.patch/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/m4/ltoptions.m4
--- xbmc-23883/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/m4/ltoptions.m4 1970-01-01 01:00:00.000000000 +0100
+++ xbmc-23883.patch/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/m4/ltoptions.m4 2009-07-30 18:46:57.000000000 +0200
diff -Naur xbmc-28910/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/m4/ltoptions.m4 xbmc-28910.patch/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/m4/ltoptions.m4
--- xbmc-28910/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/m4/ltoptions.m4 1970-01-01 01:00:00.000000000 +0100
+++ xbmc-28910.patch/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/m4/ltoptions.m4 2010-03-28 19:31:11.446649413 +0200
@@ -0,0 +1,368 @@
+# Helper functions for option handling. -*- Autoconf -*-
+#
@ -65757,9 +65757,9 @@ diff -Naur xbmc-23883/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/m4/ltoptions.
+ [m4_define([_LTDL_TYPE], [installable])])
+LT_OPTION_DEFINE([LTDL_INIT], [convenience],
+ [m4_define([_LTDL_TYPE], [convenience])])
diff -Naur xbmc-23883/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/m4/ltsugar.m4 xbmc-23883.patch/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/m4/ltsugar.m4
--- xbmc-23883/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/m4/ltsugar.m4 1970-01-01 01:00:00.000000000 +0100
+++ xbmc-23883.patch/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/m4/ltsugar.m4 2009-07-30 18:46:57.000000000 +0200
diff -Naur xbmc-28910/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/m4/ltsugar.m4 xbmc-28910.patch/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/m4/ltsugar.m4
--- xbmc-28910/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/m4/ltsugar.m4 1970-01-01 01:00:00.000000000 +0100
+++ xbmc-28910.patch/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/m4/ltsugar.m4 2010-03-28 19:31:11.447637816 +0200
@@ -0,0 +1,123 @@
+# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*-
+#
@ -65884,9 +65884,9 @@ diff -Naur xbmc-23883/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/m4/ltsugar.m4
+ lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]),
+ [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl
+])
diff -Naur xbmc-23883/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/m4/ltversion.m4 xbmc-23883.patch/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/m4/ltversion.m4
--- xbmc-23883/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/m4/ltversion.m4 1970-01-01 01:00:00.000000000 +0100
+++ xbmc-23883.patch/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/m4/ltversion.m4 2009-07-30 18:46:57.000000000 +0200
diff -Naur xbmc-28910/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/m4/ltversion.m4 xbmc-28910.patch/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/m4/ltversion.m4
--- xbmc-28910/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/m4/ltversion.m4 1970-01-01 01:00:00.000000000 +0100
+++ xbmc-28910.patch/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/m4/ltversion.m4 2010-03-28 19:31:11.448626359 +0200
@@ -0,0 +1,23 @@
+# ltversion.m4 -- version numbers -*- Autoconf -*-
+#
@ -65911,9 +65911,9 @@ diff -Naur xbmc-23883/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/m4/ltversion.
+_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?])
+_LT_DECL(, macro_revision, 0)
+])
diff -Naur xbmc-23883/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/Makefile.in xbmc-23883.patch/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/Makefile.in
--- xbmc-23883/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/Makefile.in 2009-10-21 08:21:58.298056411 +0200
+++ xbmc-23883.patch/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/Makefile.in 2009-10-21 08:25:09.584146340 +0200
diff -Naur xbmc-28910/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/Makefile.in xbmc-28910.patch/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/Makefile.in
--- xbmc-28910/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/Makefile.in 2010-03-28 17:15:33.000000000 +0200
+++ xbmc-28910.patch/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/Makefile.in 2010-03-28 19:31:11.449626495 +0200
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11 from Makefile.am.
@ -66451,9 +66451,9 @@ diff -Naur xbmc-23883/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/Makefile.in x
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
diff -Naur xbmc-23883/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/src/dvdcss/Makefile.in xbmc-23883.patch/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/src/dvdcss/Makefile.in
--- xbmc-23883/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/src/dvdcss/Makefile.in 2009-10-21 08:21:57.857159218 +0200
+++ xbmc-23883.patch/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/src/dvdcss/Makefile.in 2009-10-21 08:25:09.430146417 +0200
diff -Naur xbmc-28910/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/src/dvdcss/Makefile.in xbmc-28910.patch/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/src/dvdcss/Makefile.in
--- xbmc-28910/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/src/dvdcss/Makefile.in 2010-03-28 17:15:33.000000000 +0200
+++ xbmc-28910.patch/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/src/dvdcss/Makefile.in 2010-03-28 19:31:11.450660645 +0200
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11 from Makefile.am.
@ -66781,9 +66781,9 @@ diff -Naur xbmc-23883/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/src/dvdcss/Ma
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
diff -Naur xbmc-23883/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/src/Makefile.in xbmc-23883.patch/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/src/Makefile.in
--- xbmc-23883/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/src/Makefile.in 2009-10-21 08:21:57.960029909 +0200
+++ xbmc-23883.patch/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/src/Makefile.in 2009-10-21 08:25:09.366146377 +0200
diff -Naur xbmc-28910/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/src/Makefile.in xbmc-28910.patch/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/src/Makefile.in
--- xbmc-28910/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/src/Makefile.in 2010-03-28 17:15:33.000000000 +0200
+++ xbmc-28910.patch/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/src/Makefile.in 2010-03-28 19:31:11.452626765 +0200
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11 from Makefile.am.
@ -67303,9 +67303,9 @@ diff -Naur xbmc-23883/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/src/Makefile.
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
diff -Naur xbmc-23883/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/test/Makefile.in xbmc-23883.patch/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/test/Makefile.in
--- xbmc-23883/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/test/Makefile.in 2009-10-21 08:21:58.181035461 +0200
+++ xbmc-23883.patch/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/test/Makefile.in 2009-10-21 08:25:09.514146744 +0200
diff -Naur xbmc-28910/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/test/Makefile.in xbmc-28910.patch/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/test/Makefile.in
--- xbmc-28910/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/test/Makefile.in 2010-03-28 17:15:34.000000000 +0200
+++ xbmc-28910.patch/xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss/test/Makefile.in 2010-03-28 19:31:11.453626622 +0200
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# Makefile.in generated by automake 1.11 from Makefile.am.

View File

@ -0,0 +1,10 @@
################################################################################
# Mediacenter environment variables.
#
# This file contains non-OpenELEC evironment variables as well as OpenELEC
# evironment variables that are not user defined.
################################################################################
XBMC_HOME="/usr/share/xbmc"
export XBMC_HOME

View File

@ -1,8 +1,8 @@
#!/bin/sh
. /etc/sysconfig
. /etc/profile
XBMC_ARGS="--standalone -fs --lircdev $LIRC_OUTPUT"
XBMC_ARGS="--standalone -fs --lircdev /dev/lircd"
if test "$XBMC_CACHING" = "yes" ; then
wait_for_xbmc_cache
@ -13,7 +13,9 @@ fi
while true; do
[ "$START_WM" = "yes" ] && $WINDOWMANAGER &
if [ "$START_WM" = "yes" ]; then
$WINDOWMANAGER &
fi
$IONICE $XBMC_BIN $XBMC_ARGS $@ > /dev/null 2>&1
RET=$?

View File

@ -1 +1 @@
http://sources.openelec.tv/svn/xbmc-28690.tar.bz2
http://sources.openelec.tv/svn/xbmc-29090.tar.bz2

View File

@ -1,95 +0,0 @@
#!/bin/sh
. config/options
$SCRIPTS/build toolchain
$SCRIPTS/build faad2
$SCRIPTS/build zlib
if [ "$VDPAU" = yes ]; then
$SCRIPTS/build libvdpau
FFMPEG_VDPAU="--enable-vdpau"
else
FFMPEG_VDPAU="--disable-vdpau"
fi
if [ "$VAAPI" = yes ]; then
$SCRIPTS/build libva
FFMPEG_VAAPI="--enable-vaapi"
else
FFMPEG_VAAPI="--disable-vaapi"
fi
cd $PKG_BUILD/
./configure --prefix=/usr \
--cpu=$TARGET_CPU \
--arch=$TARGET_ARCH \
--enable-cross-compile \
--cross-prefix=$TARGET_PREFIX \
--sysroot=$SYSROOT_PREFIX \
--extra-cflags="$CFLAGS" \
--disable-debug \
--enable-stripping \
--disable-static \
--enable-shared \
--enable-gpl \
--enable-yasm \
--disable-ffplay \
--disable-ffserver \
--disable-ffmpeg \
--enable-postproc \
--disable-avfilter \
--disable-avfilter-lavf \
--enable-pthreads \
--disable-x11grab \
--disable-ipv6 \
--disable-mpegaudio-hp \
--disable-gray \
--enable-swscale-alpha \
--enable-fastdiv \
--enable-small \
--enable-aandct \
--enable-fft \
--enable-golomb \
--enable-mdct \
--enable-rdft \
$FFMPEG_VAAPI \
$FFMPEG_VDPAU \
--disable-encoders \
--enable-decoders \
--disable-decoder=mpeg_xvmc \
--disable-muxers \
--enable-demuxers \
--enable-parsers \
--enable-bsfs \
--enable-protocols \
--enable-protocol=http \
--disable-indevs \
--disable-outdevs \
--disable-devices \
--enable-filters \
--disable-avisynth \
--disable-bzlib \
--disable-libopencore-amrnb \
--disable-libopencore-amrwb \
--disable-libdc1394 \
--disable-libdirac \
--disable-libfaac \
--enable-libfaad \
--disable-libfaadbin \
--disable-libgsm \
--disable-libmp3lame \
--disable-libnut \
--disable-libopenjpeg \
--disable-libschroedinger \
--disable-libspeex \
--disable-libtheora \
--disable-libvorbis \
--disable-libx264 \
--disable-libxvid \
--disable-mlib \
--enable-zlib \
make
$MAKEINSTALL

View File

@ -1,15 +0,0 @@
#!/bin/sh
. config/options
$SCRIPTS/install zlib
$SCRIPTS/install faad2
[ "$VAAPI" = yes ] && $SCRIPTS/install libva
[ "$VDPAU" = yes ] && $SCRIPTS/install libvdpau
mkdir -p $INSTALL/usr/lib
cp -P $PKG_BUILD/libavcodec/libavcodec.so* $INSTALL/usr/lib
cp -P $PKG_BUILD/libavformat/libavformat.so* $INSTALL/usr/lib
cp -P $PKG_BUILD/libavutil/libavutil.so* $INSTALL/usr/lib
cp -P $PKG_BUILD/libswscale/libswscale.so.* $INSTALL/usr/lib
cp -P $PKG_BUILD/libpostproc/libpostproc.so.* $INSTALL/usr/lib

File diff suppressed because it is too large Load Diff

View File

@ -1,12 +0,0 @@
diff -Naur ffmpeg-21029.30224-old/libavcodec/Makefile ffmpeg-21029.30224-new/libavcodec/Makefile
--- ffmpeg-21029.30224-old/libavcodec/Makefile 2010-01-04 22:46:31.000000000 -0800
+++ ffmpeg-21029.30224-new/libavcodec/Makefile 2010-01-05 15:22:26.000000000 -0800
@@ -3,7 +3,7 @@
NAME = avcodec
FFLIBS = avutil
-HEADERS = avcodec.h opt.h vdpau.h xvmc.h
+HEADERS = avcodec.h opt.h vaapi.h vdpau.h xvmc.h
OBJS = allcodecs.o \
audioconvert.o \

View File

@ -1 +0,0 @@
http://sources.openelec.tv/svn/ffmpeg-21030.tar.bz2

View File

@ -10,6 +10,8 @@ $SCRIPTS/build libdrm
$SCRIPTS/build Mesa
cd $PKG_BUILD
libtoolize
autoreconf
./configure --host=$TARGET_NAME \
--build=$HOST_NAME \
--prefix=/usr \

View File

@ -9,7 +9,8 @@ $SCRIPTS/install libdrm
$SCRIPTS/install Mesa
mkdir -p $INSTALL/usr/lib
cp -PR $PKG_BUILD/src/.libs/*.so*[.0-9] $INSTALL/usr/lib
cp -PR $PKG_BUILD/va/.libs/libva*.so* $INSTALL/usr/lib
rm -rf $INSTALL/usr/lib/libva-*.so*T
mkdir -p $INSTALL/usr/lib/va
# cp -PR $PKG_BUILD/dummy_drv_video/.libs/*.so $INSTALL/usr/lib/va

View File

@ -0,0 +1,7 @@
SDS patches organisation
------------------------
0xx - Patches from upstream sources
1xx - Patches that are trivial or fix bugs brought by upstream
2xx - Patches that relate to build system and driver detection
3xx - Patches that provide API extensions to upstream

View File

@ -0,0 +1,19 @@
commit d6e726b80766c669dffe846fcd31fcfe5dc89847
Author: Gwenole Beauchesne <gbeauchesne@splitted-desktop.com>
Date: Wed Nov 4 12:13:41 2009 +0000
[G45] Fix subpictures formats array terminator.
diff --git a/i965_drv_video/i965_drv_video.c b/i965_drv_video/i965_drv_video.c
index 6a60ecc..e476ca2 100644
--- a/i965_drv_video/i965_drv_video.c
+++ b/i965_drv_video/i965_drv_video.c
@@ -76,7 +76,7 @@ static const i965_subpic_format_map_t *
get_subpic_format(const VAImageFormat *va_format)
{
unsigned int i;
- for (i = 0; i < sizeof(i965_subpic_formats_map)/sizeof(i965_subpic_formats_map[0]); i++) {
+ for (i = 0; i965_subpic_formats_map[i].type != 0; i++) {
const i965_subpic_format_map_t * const m = &i965_subpic_formats_map[i];
if (m->va_format.fourcc == va_format->fourcc &&
(m->type == I965_SURFACETYPE_RGBA ?

View File

@ -0,0 +1,103 @@
commit 98edda85a2d734763a5f40478a063d3e289e1389
Author: Gwenole Beauchesne <gbeauchesne@splitted-desktop.com>
Date: Wed Nov 4 10:56:54 2009 +0000
[G45] Add RGBA subpictures.
diff --git a/i965_drv_video/i965_drv_video.c b/i965_drv_video/i965_drv_video.c
index e476ca2..637e304 100644
--- a/i965_drv_video/i965_drv_video.c
+++ b/i965_drv_video/i965_drv_video.c
@@ -70,6 +70,14 @@ i965_subpic_formats_map[I965_MAX_SUBPIC_FORMATS + 1] = {
{ I965_SURFACETYPE_INDEXED, I965_SURFACEFORMAT_A4P4_UNORM,
{ VA_FOURCC('A','I','4','4'), VA_MSB_FIRST, 8, },
0 },
+ { I965_SURFACETYPE_RGBA, I965_SURFACEFORMAT_B8G8R8A8_UNORM,
+ { VA_FOURCC('B','G','R','A'), VA_LSB_FIRST, 32,
+ 32, 0x00ff0000, 0x0000ff00, 0x000000ff, 0xff000000 },
+ 0 },
+ { I965_SURFACETYPE_RGBA, I965_SURFACEFORMAT_R8G8B8A8_UNORM,
+ { VA_FOURCC('R','G','B','A'), VA_LSB_FIRST, 32,
+ 32, 0x000000ff, 0x0000ff00, 0x00ff0000, 0xff000000 },
+ 0 },
};
static const i965_subpic_format_map_t *
@@ -467,6 +475,7 @@ i965_CreateSubpicture(VADriverContextP ctx,
obj_subpic->format = m->format;
obj_subpic->width = obj_image->image.width;
obj_subpic->height = obj_image->image.height;
+ obj_subpic->pitch = obj_image->image.pitches[0];
obj_subpic->bo = obj_image->bo;
return VA_STATUS_SUCCESS;
}
@@ -1218,6 +1227,15 @@ i965_CreateImage(VADriverContextP ctx,
image->component_order[1] = 'G';
image->component_order[2] = 'B';
break;
+ case VA_FOURCC('A','R','G','B'):
+ case VA_FOURCC('A','B','G','R'):
+ case VA_FOURCC('B','G','R','A'):
+ case VA_FOURCC('R','G','B','A'):
+ image->num_planes = 1;
+ image->pitches[0] = width * 4;
+ image->offsets[0] = 0;
+ image->data_size = image->offsets[0] + image->pitches[0] * height;
+ break;
default:
goto error;
}
diff --git a/i965_drv_video/i965_drv_video.h b/i965_drv_video/i965_drv_video.h
index fa09869..2f538c2 100644
--- a/i965_drv_video/i965_drv_video.h
+++ b/i965_drv_video/i965_drv_video.h
@@ -44,7 +44,7 @@
#define I965_MAX_ENTRYPOINTS 5
#define I965_MAX_CONFIG_ATTRIBUTES 10
#define I965_MAX_IMAGE_FORMATS 10
-#define I965_MAX_SUBPIC_FORMATS 2
+#define I965_MAX_SUBPIC_FORMATS 4
#define I965_MAX_DISPLAY_ATTRIBUTES 4
#define I965_STR_VENDOR "i965 Driver 0.1"
@@ -126,6 +126,7 @@ struct object_subpic
unsigned int format;
int width;
int height;
+ int pitch;
dri_bo *bo;
};
diff --git a/i965_drv_video/i965_render.c b/i965_drv_video/i965_render.c
index 4a4f041..c738d22 100644
--- a/i965_drv_video/i965_render.c
+++ b/i965_drv_video/i965_render.c
@@ -587,7 +587,7 @@ i965_subpic_render_src_surface_state(VADriverContextP ctx,
int index,
dri_bo *region,
unsigned long offset,
- int w, int h, int format)
+ int w, int h, int p, int format)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct i965_render_state *render_state = &i965->render_state;
@@ -621,7 +621,7 @@ i965_subpic_render_src_surface_state(VADriverContextP ctx,
ss->ss2.mip_count = 0;
ss->ss2.render_target_rotation = 0;
- ss->ss3.pitch = w - 1;
+ ss->ss3.pitch = p - 1;
dri_bo_emit_reloc(ss_bo,
I915_GEM_DOMAIN_SAMPLER, 0,
@@ -679,8 +679,8 @@ i965_subpic_render_src_surfaces_state(VADriverContextP ctx,
region = obj_surface->bo;
subpic_region = obj_image->bo;
/*subpicture surface*/
- i965_subpic_render_src_surface_state(ctx, 1, subpic_region, 0, obj_subpic->width, obj_subpic->height, obj_subpic->format);
- i965_subpic_render_src_surface_state(ctx, 2, subpic_region, 0, obj_subpic->width, obj_subpic->height, obj_subpic->format);
+ i965_subpic_render_src_surface_state(ctx, 1, subpic_region, 0, obj_subpic->width, obj_subpic->height, obj_subpic->pitch, obj_subpic->format);
+ i965_subpic_render_src_surface_state(ctx, 2, subpic_region, 0, obj_subpic->width, obj_subpic->height, obj_subpic->pitch, obj_subpic->format);
}
static void

View File

@ -0,0 +1,77 @@
commit ff263433c32aac08574b58b26f3f4be7abe05bdf
Author: Gwenole Beauchesne <gbeauchesne@splitted-desktop.com>
Date: Wed Nov 4 13:23:40 2009 +0000
[G45] Don't return VA_STATUS_SUCCESS for unimplemented functions.
diff --git a/i965_drv_video/i965_drv_video.c b/i965_drv_video/i965_drv_video.c
index 637e304..9e8502a 100644
--- a/i965_drv_video/i965_drv_video.c
+++ b/i965_drv_video/i965_drv_video.c
@@ -496,7 +496,8 @@ i965_SetSubpictureImage(VADriverContextP ctx,
VASubpictureID subpicture,
VAImageID image)
{
- return VA_STATUS_SUCCESS;
+ /* TODO */
+ return VA_STATUS_ERROR_UNIMPLEMENTED;
}
VAStatus
@@ -506,7 +507,8 @@ i965_SetSubpictureChromakey(VADriverContextP ctx,
unsigned int chromakey_max,
unsigned int chromakey_mask)
{
- return VA_STATUS_SUCCESS;
+ /* TODO */
+ return VA_STATUS_ERROR_UNIMPLEMENTED;
}
VAStatus
@@ -514,7 +516,8 @@ i965_SetSubpictureGlobalAlpha(VADriverContextP ctx,
VASubpictureID subpicture,
float global_alpha)
{
- return VA_STATUS_SUCCESS;
+ /* TODO */
+ return VA_STATUS_ERROR_UNIMPLEMENTED;
}
VAStatus
@@ -1103,7 +1106,7 @@ i965_GetDisplayAttributes(VADriverContextP ctx,
int num_attributes)
{
/* TODO */
- return VA_STATUS_ERROR_UNKNOWN;
+ return VA_STATUS_ERROR_UNIMPLEMENTED;
}
/*
@@ -1118,7 +1121,7 @@ i965_SetDisplayAttributes(VADriverContextP ctx,
int num_attributes)
{
/* TODO */
- return VA_STATUS_ERROR_UNKNOWN;
+ return VA_STATUS_ERROR_UNIMPLEMENTED;
}
VAStatus
@@ -1128,7 +1131,7 @@ i965_DbgCopySurfaceToBuffer(VADriverContextP ctx,
unsigned int *stride) /* out */
{
/* TODO */
- return VA_STATUS_ERROR_UNKNOWN;
+ return VA_STATUS_ERROR_UNIMPLEMENTED;
}
static VAStatus
@@ -1270,7 +1273,8 @@ VAStatus i965_DeriveImage(VADriverContextP ctx,
VASurfaceID surface,
VAImage *image) /* out */
{
- return VA_STATUS_SUCCESS;
+ /* TODO */
+ return VA_STATUS_ERROR_OPERATION_FAILED;
}
static void

View File

@ -0,0 +1,95 @@
commit c5cb995d6cd49f5f2988b1721cb6b5da8a9b2c09
Author: Gwenole Beauchesne <gbeauchesne@splitted-desktop.com>
Date: Wed Nov 4 13:01:44 2009 +0000
[G45] Add YV12 image format.
diff --git a/i965_drv_video/i965_drv_video.c b/i965_drv_video/i965_drv_video.c
index 9e8502a..6488570 100644
--- a/i965_drv_video/i965_drv_video.c
+++ b/i965_drv_video/i965_drv_video.c
@@ -54,6 +54,36 @@ enum {
I965_SURFACETYPE_INDEXED
};
+/* List of supported image formats */
+typedef struct {
+ unsigned int type;
+ VAImageFormat va_format;
+} i965_image_format_map_t;
+
+static const i965_image_format_map_t
+i965_image_formats_map[I965_MAX_IMAGE_FORMATS + 1] = {
+ { I965_SURFACETYPE_YUV,
+ { VA_FOURCC('Y','V','1','2'), VA_LSB_FIRST, 12, } },
+};
+
+static const i965_image_format_map_t *
+get_image_format(const VAImageFormat *va_format)
+{
+ unsigned int i;
+ for (i = 0; i965_image_formats_map[i].type != 0; i++) {
+ const i965_image_format_map_t * const m = &i965_image_formats_map[i];
+ if (m->va_format.fourcc == va_format->fourcc &&
+ (m->type == I965_SURFACETYPE_RGBA ?
+ (m->va_format.byte_order == va_format->byte_order &&
+ m->va_format.red_mask == va_format->red_mask &&
+ m->va_format.green_mask == va_format->green_mask &&
+ m->va_format.blue_mask == va_format->blue_mask &&
+ m->va_format.alpha_mask == va_format->alpha_mask) : 1))
+ return m;
+ }
+ return NULL;
+}
+
/* List of supported subpicture formats */
typedef struct {
unsigned int type;
@@ -398,8 +428,16 @@ i965_QueryImageFormats(VADriverContextP ctx,
VAImageFormat *format_list, /* out */
int *num_formats) /* out */
{
+ int n;
+
+ for (n = 0; i965_image_formats_map[n].va_format.fourcc != 0; n++) {
+ const i965_image_format_map_t * const m = &i965_image_formats_map[n];
+ if (format_list)
+ format_list[n] = m->va_format;
+ }
+
if (num_formats)
- *num_formats = 0;
+ *num_formats = n;
return VA_STATUS_SUCCESS;
}
@@ -1239,6 +1277,16 @@ i965_CreateImage(VADriverContextP ctx,
image->offsets[0] = 0;
image->data_size = image->offsets[0] + image->pitches[0] * height;
break;
+ case VA_FOURCC('Y','V','1','2'):
+ image->num_planes = 3;
+ image->pitches[0] = width;
+ image->offsets[0] = 0;
+ image->pitches[1] = width2;
+ image->offsets[1] = size + size2;
+ image->pitches[2] = width2;
+ image->offsets[2] = size;
+ image->data_size = size + 2 * size2;
+ break;
default:
goto error;
}
diff --git a/i965_drv_video/i965_drv_video.h b/i965_drv_video/i965_drv_video.h
index 2f538c2..be253ed 100644
--- a/i965_drv_video/i965_drv_video.h
+++ b/i965_drv_video/i965_drv_video.h
@@ -43,7 +43,7 @@
#define I965_MAX_PROFILES 11
#define I965_MAX_ENTRYPOINTS 5
#define I965_MAX_CONFIG_ATTRIBUTES 10
-#define I965_MAX_IMAGE_FORMATS 10
+#define I965_MAX_IMAGE_FORMATS 1
#define I965_MAX_SUBPIC_FORMATS 4
#define I965_MAX_DISPLAY_ATTRIBUTES 4
#define I965_STR_VENDOR "i965 Driver 0.1"

View File

@ -0,0 +1,62 @@
commit c833a4ef4efa20ab8df18d13bdab1e5c5e4671a8
Author: Gwenole Beauchesne <gbeauchesne@splitted-desktop.com>
Date: Wed Nov 4 13:16:34 2009 +0000
[G45] Implement vaGetImage() for full-sized surface readback.
diff --git a/i965_drv_video/i965_drv_video.c b/i965_drv_video/i965_drv_video.c
index ebaf1ae..59ebdd7 100644
--- a/i965_drv_video/i965_drv_video.c
+++ b/i965_drv_video/i965_drv_video.c
@@ -1392,7 +1392,50 @@ i965_GetImage(VADriverContextP ctx,
unsigned int height,
VAImageID image)
{
- return VA_STATUS_SUCCESS;
+ struct i965_driver_data *i965 = i965_driver_data(ctx);
+
+ struct object_surface *obj_surface = SURFACE(surface);
+ if (!obj_surface)
+ return VA_STATUS_ERROR_INVALID_SURFACE;
+
+ struct object_image *obj_image = IMAGE(image);
+ if (!obj_image)
+ return VA_STATUS_ERROR_INVALID_IMAGE;
+
+ /* XXX: we only support full-size surface readback */
+ if (x != 0 ||
+ y != 0 ||
+ width != obj_surface->width ||
+ height != obj_surface->height)
+ return VA_STATUS_ERROR_INVALID_PARAMETER;
+
+ /* XXX: we only support 1:1 image copies */
+ if (width != obj_image->image.width ||
+ height != obj_image->image.height)
+ return VA_STATUS_ERROR_INVALID_PARAMETER;
+
+ VAStatus va_status;
+ void *image_data = NULL;
+
+ va_status = i965_MapBuffer(ctx, obj_image->image.buf, &image_data);
+ if (va_status != VA_STATUS_SUCCESS)
+ return va_status;
+
+ dri_bo_map(obj_surface->bo, 0);
+
+ switch (obj_image->image.format.fourcc) {
+ case VA_FOURCC('Y','V','1','2'): /* YV12 is native format here */
+ memcpy(image_data, obj_surface->bo->virtual, obj_surface->bo->size);
+ break;
+ default:
+ va_status = VA_STATUS_ERROR_OPERATION_FAILED;
+ break;
+ }
+
+ dri_bo_unmap(obj_surface->bo);
+
+ i965_UnmapBuffer(ctx, obj_image->image.buf);
+ return va_status;
}
VAStatus

View File

@ -0,0 +1,102 @@
commit c00ac73b0fa1f5c4ff9cdc76b7556c5db03c5335
Author: Gwenole Beauchesne <gbeauchesne@splitted-desktop.com>
Date: Wed Nov 4 13:36:39 2009 +0000
[G45] Implement vaPutImage() for full-sized surface uploads.
diff --git a/i965_drv_video/i965_drv_video.c b/i965_drv_video/i965_drv_video.c
index 59ebdd7..5c15439 100644
--- a/i965_drv_video/i965_drv_video.c
+++ b/i965_drv_video/i965_drv_video.c
@@ -443,22 +443,6 @@ i965_QueryImageFormats(VADriverContextP ctx,
}
VAStatus
-i965_PutImage(VADriverContextP ctx,
- VASurfaceID surface,
- VAImageID image,
- int src_x,
- int src_y,
- unsigned int src_width,
- unsigned int src_height,
- int dest_x,
- int dest_y,
- unsigned int dest_width,
- unsigned int dest_height)
-{
- return VA_STATUS_SUCCESS;
-}
-
-VAStatus
i965_QuerySubpictureFormats(VADriverContextP ctx,
VAImageFormat *format_list, /* out */
unsigned int *flags, /* out */
@@ -1439,6 +1423,68 @@ i965_GetImage(VADriverContextP ctx,
}
VAStatus
+i965_PutImage(VADriverContextP ctx,
+ VASurfaceID surface,
+ VAImageID image,
+ int src_x,
+ int src_y,
+ unsigned int src_width,
+ unsigned int src_height,
+ int dest_x,
+ int dest_y,
+ unsigned int dest_width,
+ unsigned int dest_height)
+{
+ struct i965_driver_data *i965 = i965_driver_data(ctx);
+
+ struct object_surface *obj_surface = SURFACE(surface);
+ if (!obj_surface)
+ return VA_STATUS_ERROR_INVALID_SURFACE;
+
+ struct object_image *obj_image = IMAGE(image);
+ if (!obj_image)
+ return VA_STATUS_ERROR_INVALID_IMAGE;
+
+ /* XXX: we don't support partial video surface updates */
+ if (src_x != 0 ||
+ src_y != 0 ||
+ src_width != obj_image->image.width ||
+ src_height != obj_image->image.height)
+ return VA_STATUS_ERROR_OPERATION_FAILED;
+ if (dest_x != 0 ||
+ dest_y != 0 ||
+ dest_width != obj_surface->width ||
+ dest_height != obj_surface->height)
+ return VA_STATUS_ERROR_OPERATION_FAILED;
+ if (src_width != dest_width ||
+ src_height != dest_height)
+ return VA_STATUS_ERROR_OPERATION_FAILED;
+
+ VAStatus va_status;
+ void *image_data = NULL;
+
+ va_status = i965_MapBuffer(ctx, obj_image->image.buf, &image_data);
+ if (va_status != VA_STATUS_SUCCESS)
+ return va_status;
+
+ dri_bo_map(obj_surface->bo, 1);
+
+ switch (obj_image->image.format.fourcc) {
+ case VA_FOURCC('Y','V','1','2'): /* YV12 is native format here */
+ memcpy(obj_surface->bo->virtual, image_data, obj_surface->bo->size);
+ break;
+ default:
+ va_status = VA_STATUS_ERROR_OPERATION_FAILED;
+ break;
+ }
+
+ dri_bo_unmap(obj_surface->bo);
+
+ i965_UnmapBuffer(ctx, obj_image->image.buf);
+ return va_status;
+}
+
+VAStatus
i965_PutSurface(VADriverContextP ctx,
VASurfaceID surface,
Drawable draw, /* X Drawable */

View File

@ -0,0 +1,523 @@
commit ab248483d89c6cf7beb7a3a87c9b9a55464023cc
Author: Gwenole Beauchesne <gbeauchesne@splitted-desktop.com>
Date: Wed Nov 4 17:34:53 2009 +0000
[G45] Handle cliprects in vaPutSurface().
diff --git a/i965_drv_video/i965_drv_video.c b/i965_drv_video/i965_drv_video.c
index 5c15439..d4ad6e1 100644
--- a/i965_drv_video/i965_drv_video.c
+++ b/i965_drv_video/i965_drv_video.c
@@ -1507,13 +1507,23 @@ i965_PutSurface(VADriverContextP ctx,
union dri_buffer *buffer;
struct intel_region *dest_region;
struct object_surface *obj_surface;
- int ret;
+ int ret;
uint32_t name;
+ VARectangle src_rect, dst_rect;
Bool new_region = False;
+
/* Currently don't support DRI1 */
if (dri_state->driConnectedFlag != VA_DRI2)
return VA_STATUS_ERROR_UNKNOWN;
+ /* XXX: we currently only support up to 64 cliprects */
+ if (number_cliprects > MAX_CLIP_RECTS)
+ return VA_STATUS_ERROR_OPERATION_FAILED;
+
+ obj_surface = SURFACE(surface);
+ if (!obj_surface)
+ return VA_STATUS_ERROR_INVALID_SURFACE;
+
dri_drawable = dri_get_drawable(ctx, draw);
assert(dri_drawable);
@@ -1552,17 +1562,24 @@ i965_PutSurface(VADriverContextP ctx,
assert(ret == 0);
}
- i965_render_put_surface(ctx, surface,
- srcx, srcy, srcw, srch,
- destx, desty, destw, desth);
- obj_surface = SURFACE(surface);
- if(obj_surface->subpic != VA_INVALID_ID) {
- i965_render_put_subpic(ctx, surface,
- srcx, srcy, srcw, srch,
- destx, desty, destw, desth);
- }
- dri_swap_buffer(ctx, dri_drawable);
+ src_rect.x = srcx;
+ src_rect.y = srcy;
+ src_rect.width = srcw;
+ src_rect.height = srch;
+
+ dst_rect.x = destx;
+ dst_rect.y = desty;
+ dst_rect.width = destw;
+ dst_rect.height = desth;
+ i965_render_put_surface(ctx, surface, &src_rect, &dst_rect,
+ cliprects, number_cliprects);
+
+ if (obj_surface->subpic != VA_INVALID_ID)
+ i965_render_put_subpic(ctx, surface, &src_rect, &dst_rect,
+ cliprects, number_cliprects);
+
+ dri_swap_buffer(ctx, dri_drawable);
return VA_STATUS_SUCCESS;
}
diff --git a/i965_drv_video/i965_render.c b/i965_drv_video/i965_render.c
index c738d22..301d51d 100644
--- a/i965_drv_video/i965_render.c
+++ b/i965_drv_video/i965_render.c
@@ -788,13 +788,81 @@ i965_render_binding_table(VADriverContextP ctx)
dri_bo_unmap(render_state->wm.binding_table);
}
-static void
+static unsigned int
+i965_render_do_upload_vertex(VADriverContextP ctx,
+ unsigned int width,
+ unsigned int height,
+ const VARectangle *src_rect,
+ const VARectangle *dst_rect,
+ const VARectangle *cliprects,
+ unsigned int num_cliprects)
+{
+ struct i965_driver_data *i965 = i965_driver_data(ctx);
+ struct i965_render_state *render_state = &i965->render_state;
+ struct intel_region *dest_region = render_state->draw_region;
+ float *vb, tx1, tx2, ty1, ty2;
+ int x1, x2, y1, y2;
+ unsigned int i, n;
+
+ if (!cliprects || num_cliprects == 0) {
+ cliprects = dst_rect;
+ num_cliprects = 1;
+ }
+
+ dri_bo_map(render_state->vb.vertex_buffer, 1);
+ assert(render_state->vb.vertex_buffer->virtual);
+ vb = render_state->vb.vertex_buffer->virtual;
+
+ for (n = 0, i = 0; i < num_cliprects; i++) {
+ x1 = dest_region->x + cliprects[i].x;
+ y1 = dest_region->y + cliprects[i].y;
+ x2 = x1 + cliprects[i].width;
+ y2 = y1 + cliprects[i].height;
+ x1 = MAX(x1, dst_rect->x);
+ y1 = MAX(y1, dst_rect->y);
+ x2 = MIN(x2, dst_rect->x + dst_rect->width);
+ y2 = MIN(y2, dst_rect->y + dst_rect->height);
+
+ if (x2 <= x1 || y2 <= y1)
+ continue;
+
+ const float sx1 = (float)(x1 - dst_rect->x) / (float)dst_rect->width;
+ const float sy1 = (float)(y1 - dst_rect->y) / (float)dst_rect->height;
+ const float sx2 = (float)(x2 - dst_rect->x) / (float)dst_rect->width;
+ const float sy2 = (float)(y2 - dst_rect->y) / (float)dst_rect->height;
+ tx1 = ((float)src_rect->x + sx1 * (float)src_rect->width) / width;
+ ty1 = ((float)src_rect->y + sy1 * (float)src_rect->height) / height;
+ tx2 = ((float)src_rect->x + sx2 * (float)src_rect->width) / width;
+ ty2 = ((float)src_rect->y + sy2 * (float)src_rect->height) / height;
+
+ vb[n++] = tx2;
+ vb[n++] = ty2;
+ vb[n++] = x2;
+ vb[n++] = y2;
+
+ vb[n++] = tx1;
+ vb[n++] = ty2;
+ vb[n++] = x1;
+ vb[n++] = y2;
+
+ vb[n++] = tx1;
+ vb[n++] = ty1;
+ vb[n++] = x1;
+ vb[n++] = y1;
+ }
+
+ dri_bo_unmap(render_state->vb.vertex_buffer);
+ return n / 12;
+}
+
+static unsigned int
i965_subpic_render_upload_vertex(VADriverContextP ctx,
VASurfaceID surface,
- const VARectangle *output_rect)
-{
+ const VARectangle *output_rect,
+ const VARectangle *cliprects,
+ unsigned int num_cliprects)
+{
struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct i965_render_state *render_state = &i965->render_state;
struct object_surface *obj_surface = SURFACE(surface);
struct object_subpic *obj_subpic = SUBPIC(obj_surface->subpic);
@@ -804,8 +872,6 @@ i965_subpic_render_upload_vertex(VADriverContextP ctx,
const float ssy = (float)output_rect->height / (float)obj_surface->height;
const float sx = psx * ssx;
const float sy = psy * ssy;
- float *vb, tx1, tx2, ty1, ty2, x1, x2, y1, y2;
- int i = 0;
VARectangle dst_rect;
dst_rect.x = output_rect->x + sx * (float)obj_subpic->dst_rect.x;
@@ -813,106 +879,38 @@ i965_subpic_render_upload_vertex(VADriverContextP ctx,
dst_rect.width = sx * (float)obj_subpic->dst_rect.width;
dst_rect.height = sy * (float)obj_subpic->dst_rect.height;
- dri_bo_map(render_state->vb.vertex_buffer, 1);
- assert(render_state->vb.vertex_buffer->virtual);
- vb = render_state->vb.vertex_buffer->virtual;
-
- tx1 = (float)obj_subpic->src_rect.x / (float)obj_subpic->width;
- ty1 = (float)obj_subpic->src_rect.y / (float)obj_subpic->height;
- tx2 = (float)(obj_subpic->src_rect.x + obj_subpic->src_rect.width) / (float)obj_subpic->width;
- ty2 = (float)(obj_subpic->src_rect.y + obj_subpic->src_rect.height) / (float)obj_subpic->height;
-
- x1 = (float)dst_rect.x;
- y1 = (float)dst_rect.y;
- x2 = (float)(dst_rect.x + dst_rect.width);
- y2 = (float)(dst_rect.y + dst_rect.height);
-
- vb[i++] = tx2;
- vb[i++] = ty2;
- vb[i++] = x2;
- vb[i++] = y2;
-
- vb[i++] = tx1;
- vb[i++] = ty2;
- vb[i++] = x1;
- vb[i++] = y2;
-
- vb[i++] = tx1;
- vb[i++] = ty1;
- vb[i++] = x1;
- vb[i++] = y1;
- dri_bo_unmap(render_state->vb.vertex_buffer);
+ return i965_render_do_upload_vertex(ctx,
+ obj_subpic->width, obj_subpic->height,
+ &obj_subpic->src_rect, &dst_rect,
+ cliprects, num_cliprects);
}
-static void
+static unsigned int
i965_render_upload_vertex(VADriverContextP ctx,
VASurfaceID surface,
- short srcx,
- short srcy,
- unsigned short srcw,
- unsigned short srch,
- short destx,
- short desty,
- unsigned short destw,
- unsigned short desth)
+ const VARectangle *src_rect,
+ const VARectangle *dst_rect,
+ const VARectangle *cliprects,
+ unsigned int num_cliprects)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct i965_render_state *render_state = &i965->render_state;
- struct intel_region *dest_region = render_state->draw_region;
- struct object_surface *obj_surface;
- float *vb;
-
- float u1, v1, u2, v2;
- int i, width, height;
- int box_x1 = dest_region->x + destx;
- int box_y1 = dest_region->y + desty;
- int box_x2 = box_x1 + destw;
- int box_y2 = box_y1 + desth;
-
- obj_surface = SURFACE(surface);
- assert(surface);
- width = obj_surface->width;
- height = obj_surface->height;
-
- u1 = (float)srcx / width;
- v1 = (float)srcy / height;
- u2 = (float)(srcx + srcw) / width;
- v2 = (float)(srcy + srch) / height;
-
- dri_bo_map(render_state->vb.vertex_buffer, 1);
- assert(render_state->vb.vertex_buffer->virtual);
- vb = render_state->vb.vertex_buffer->virtual;
-
- i = 0;
- vb[i++] = u2;
- vb[i++] = v2;
- vb[i++] = (float)box_x2;
- vb[i++] = (float)box_y2;
-
- vb[i++] = u1;
- vb[i++] = v2;
- vb[i++] = (float)box_x1;
- vb[i++] = (float)box_y2;
-
- vb[i++] = u1;
- vb[i++] = v1;
- vb[i++] = (float)box_x1;
- vb[i++] = (float)box_y1;
+ struct object_surface *obj_surface = SURFACE(surface);
+ assert(obj_surface);
- dri_bo_unmap(render_state->vb.vertex_buffer);
+ return i965_render_do_upload_vertex(ctx,
+ obj_surface->width, obj_surface->height,
+ src_rect,
+ dst_rect,
+ cliprects, num_cliprects);
}
-static void
+static unsigned int
i965_surface_render_state_setup(VADriverContextP ctx,
- VASurfaceID surface,
- short srcx,
- short srcy,
- unsigned short srcw,
- unsigned short srch,
- short destx,
- short desty,
- unsigned short destw,
- unsigned short desth)
+ VASurfaceID surface,
+ const VARectangle *src_rect,
+ const VARectangle *dst_rect,
+ const VARectangle *cliprects,
+ unsigned int num_cliprects)
{
i965_render_vs_unit(ctx);
i965_render_sf_unit(ctx);
@@ -923,21 +921,17 @@ i965_surface_render_state_setup(VADriverContextP ctx,
i965_render_cc_viewport(ctx);
i965_render_cc_unit(ctx);
i965_render_binding_table(ctx);
- i965_render_upload_vertex(ctx, surface,
- srcx, srcy, srcw, srch,
- destx, desty, destw, desth);
+ return i965_render_upload_vertex(ctx, surface, src_rect, dst_rect,
+ cliprects, num_cliprects);
}
-static void
+
+static unsigned int
i965_subpic_render_state_setup(VADriverContextP ctx,
- VASurfaceID surface,
- short srcx,
- short srcy,
- unsigned short srcw,
- unsigned short srch,
- short destx,
- short desty,
- unsigned short destw,
- unsigned short desth)
+ VASurfaceID surface,
+ const VARectangle *src_rect,
+ const VARectangle *dst_rect,
+ const VARectangle *cliprects,
+ unsigned int num_cliprects)
{
i965_render_vs_unit(ctx);
i965_render_sf_unit(ctx);
@@ -948,16 +942,10 @@ i965_subpic_render_state_setup(VADriverContextP ctx,
i965_render_cc_viewport(ctx);
i965_subpic_render_cc_unit(ctx);
i965_render_binding_table(ctx);
-
- VARectangle output_rect;
- output_rect.x = destx;
- output_rect.y = desty;
- output_rect.width = destw;
- output_rect.height = desth;
- i965_subpic_render_upload_vertex(ctx, surface, &output_rect);
+ return i965_subpic_render_upload_vertex(ctx, surface, dst_rect,
+ cliprects, num_cliprects);
}
-
static void
i965_render_pipeline_select(VADriverContextP ctx)
{
@@ -1193,7 +1181,7 @@ i965_render_upload_image_palette(
}
static void
-i965_render_startup(VADriverContextP ctx)
+i965_render_startup(VADriverContextP ctx, unsigned int vb_offset)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct i965_render_state *render_state = &i965->render_state;
@@ -1204,7 +1192,7 @@ i965_render_startup(VADriverContextP ctx)
(0 << VB0_BUFFER_INDEX_SHIFT) |
VB0_VERTEXDATA |
((4 * 4) << VB0_BUFFER_PITCH_SHIFT));
- OUT_RELOC(ctx, render_state->vb.vertex_buffer, I915_GEM_DOMAIN_VERTEX, 0, 0);
+ OUT_RELOC(ctx, render_state->vb.vertex_buffer, I915_GEM_DOMAIN_VERTEX, 0, vb_offset);
if (IS_IGDNG(i965->intel.device_id))
OUT_RELOC(ctx, render_state->vb.vertex_buffer, I915_GEM_DOMAIN_VERTEX, 0, 12 * 4);
@@ -1269,8 +1257,10 @@ i965_clear_dest_region(VADriverContextP ctx)
}
static void
-i965_surface_render_pipeline_setup(VADriverContextP ctx)
+i965_surface_render_pipeline_setup(VADriverContextP ctx, unsigned int n_rects)
{
+ unsigned int i;
+
intel_batchbuffer_start_atomic(ctx, 0x1000);
intel_batchbuffer_emit_mi_flush(ctx);
i965_clear_dest_region(ctx);
@@ -1284,13 +1274,16 @@ i965_surface_render_pipeline_setup(VADriverContextP ctx)
i965_render_cs_urb_layout(ctx);
i965_render_drawing_rectangle(ctx);
i965_render_vertex_elements(ctx);
- i965_render_startup(ctx);
+ for (i = 0; i < n_rects; i++)
+ i965_render_startup(ctx, 48 * i);
intel_batchbuffer_end_atomic(ctx);
}
static void
-i965_subpic_render_pipeline_setup(VADriverContextP ctx)
+i965_subpic_render_pipeline_setup(VADriverContextP ctx, unsigned int n_rects)
{
+ unsigned int i;
+
intel_batchbuffer_start_atomic(ctx, 0x1000);
intel_batchbuffer_emit_mi_flush(ctx);
i965_render_pipeline_select(ctx);
@@ -1303,7 +1296,8 @@ i965_subpic_render_pipeline_setup(VADriverContextP ctx)
i965_render_cs_urb_layout(ctx);
i965_render_drawing_rectangle(ctx);
i965_render_vertex_elements(ctx);
- i965_render_startup(ctx);
+ for (i = 0; i < n_rects; i++)
+ i965_render_startup(ctx, 48 * i);
intel_batchbuffer_end_atomic(ctx);
}
@@ -1397,45 +1391,39 @@ i965_render_initialize(VADriverContextP ctx)
void
i965_render_put_surface(VADriverContextP ctx,
VASurfaceID surface,
- short srcx,
- short srcy,
- unsigned short srcw,
- unsigned short srch,
- short destx,
- short desty,
- unsigned short destw,
- unsigned short desth)
+ const VARectangle *src_rect,
+ const VARectangle *dst_rect,
+ const VARectangle *cliprects,
+ unsigned int num_cliprects)
{
+ unsigned int n_rects;
+
i965_render_initialize(ctx);
- i965_surface_render_state_setup(ctx, surface,
- srcx, srcy, srcw, srch,
- destx, desty, destw, desth);
- i965_surface_render_pipeline_setup(ctx);
+ n_rects = i965_surface_render_state_setup(ctx, surface,
+ src_rect, dst_rect,
+ cliprects, num_cliprects);
+ i965_surface_render_pipeline_setup(ctx, n_rects);
intel_batchbuffer_flush(ctx);
}
void
i965_render_put_subpic(VADriverContextP ctx,
- VASurfaceID surface,
- short srcx,
- short srcy,
- unsigned short srcw,
- unsigned short srch,
- short destx,
- short desty,
- unsigned short destw,
- unsigned short desth)
+ VASurfaceID surface,
+ const VARectangle *src_rect,
+ const VARectangle *dst_rect,
+ const VARectangle *cliprects,
+ unsigned int num_cliprects)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct object_surface *obj_surface = SURFACE(surface);
struct object_subpic *obj_subpic = SUBPIC(obj_surface->subpic);
+ unsigned int n_rects;
assert(obj_subpic);
i965_render_initialize(ctx);
- i965_subpic_render_state_setup(ctx, surface,
- srcx, srcy, srcw, srch,
- destx, desty, destw, desth);
- i965_subpic_render_pipeline_setup(ctx);
+ n_rects = i965_subpic_render_state_setup(ctx, surface, src_rect, dst_rect,
+ cliprects, num_cliprects);
+ i965_subpic_render_pipeline_setup(ctx, n_rects);
i965_render_upload_image_palette(ctx, obj_subpic->image, 0xff);
intel_batchbuffer_flush(ctx);
}
diff --git a/i965_drv_video/i965_render.h b/i965_drv_video/i965_render.h
index e3dce02..d2e23f1 100644
--- a/i965_drv_video/i965_render.h
+++ b/i965_drv_video/i965_render.h
@@ -28,6 +28,7 @@
#ifndef _I965_RENDER_H_
#define _I965_RENDER_H_
+#define MAX_CLIP_RECTS 80 /* vb_bo:4096 / vb:(3*4*4) */
#define MAX_RENDER_SURFACES 16
#define MAX_SAMPLERS 16
@@ -65,27 +66,20 @@ struct i965_render_state
Bool i965_render_init(VADriverContextP ctx);
Bool i965_render_terminate(VADriverContextP ctx);
+
void i965_render_put_surface(VADriverContextP ctx,
VASurfaceID surface,
- short srcx,
- short srcy,
- unsigned short srcw,
- unsigned short srch,
- short destx,
- short desty,
- unsigned short destw,
- unsigned short desth);
-
+ const VARectangle *src_rect,
+ const VARectangle *dst_rect,
+ const VARectangle *cliprects,
+ unsigned int num_cliprects);
void
i965_render_put_subpic(VADriverContextP ctx,
- VASurfaceID surface,
- short srcx,
- short srcy,
- unsigned short srcw,
- unsigned short srch,
- short destx,
- short desty,
- unsigned short destw,
- unsigned short desth);
+ VASurfaceID surface,
+ const VARectangle *src_rect,
+ const VARectangle *dst_rect,
+ const VARectangle *cliprects,
+ unsigned int num_cliprects);
+
#endif /* _I965_RENDER_H_ */

View File

@ -0,0 +1,305 @@
commit 1eb1e3e56d3c7a83aea7361a02167d382619fea8
Author: Gwenole Beauchesne <gbeauchesne@splitted-desktop.com>
Date: Mon Mar 8 17:22:06 2010 +0100
[G45] Implement vaDeriveImage().
diff --git a/i965_drv_video/i965_drv_video.c b/i965_drv_video/i965_drv_video.c
index eb3b49d..98a824f 100644
--- a/i965_drv_video/i965_drv_video.c
+++ b/i965_drv_video/i965_drv_video.c
@@ -336,12 +336,27 @@ VAStatus i965_QueryConfigAttributes(VADriverContextP ctx,
return vaStatus;
}
+static struct object_image *
+i965_CreateImage_impl(
+ VADriverContextP ctx,
+ const VAImageFormat *format,
+ unsigned int width,
+ unsigned int height,
+ VASurfaceID surface
+);
+
+static void
+i965_DestroyImage_impl(
+ VADriverContextP ctx,
+ struct object_image *obj_image,
+ int from_surface
+);
+
static void
i965_destroy_surface(struct object_heap *heap, struct object_base *obj)
{
struct object_surface *obj_surface = (struct object_surface *)obj;
- dri_bo_unreference(obj_surface->bo);
obj_surface->bo = NULL;
object_heap_free(heap, obj);
}
@@ -358,6 +373,13 @@ i965_CreateSurfaces(VADriverContextP ctx,
int i;
VAStatus vaStatus = VA_STATUS_SUCCESS;
+ /* Internal format: linear I420 (compatible with YV12 VA image) */
+ static const VAImageFormat vaFormat = {
+ .fourcc = VA_FOURCC('Y','V','1','2'),
+ .byte_order = VA_LSB_FIRST,
+ .bits_per_pixel = 12
+ };
+
/* We only support one format */
if (VA_RT_FORMAT_YUV420 != format) {
return VA_STATUS_ERROR_UNSUPPORTED_RT_FORMAT;
@@ -366,28 +388,36 @@ i965_CreateSurfaces(VADriverContextP ctx,
for (i = 0; i < num_surfaces; i++) {
int surfaceID = NEW_SURFACE_ID();
struct object_surface *obj_surface = SURFACE(surfaceID);
+ struct object_image *obj_image;
+ struct object_buffer *obj_buffer;
if (NULL == obj_surface) {
vaStatus = VA_STATUS_ERROR_ALLOCATION_FAILED;
break;
}
+ obj_image = i965_CreateImage_impl(ctx, &vaFormat, width, height, surfaceID);
+ if (!obj_image) {
+ vaStatus = VA_STATUS_ERROR_ALLOCATION_FAILED;
+ break;
+ }
+
+ obj_buffer = BUFFER(obj_image->image.buf);
+ if (!obj_buffer) {
+ vaStatus = VA_STATUS_ERROR_ALLOCATION_FAILED;
+ break;
+ }
+ assert(obj_buffer->buffer_store);
+
surfaces[i] = surfaceID;
obj_surface->status = VASurfaceReady;
obj_surface->subpic = VA_INVALID_ID;
obj_surface->width = width;
obj_surface->height = height;
obj_surface->size = SIZE_YUV420(width, height);
- obj_surface->bo = dri_bo_alloc(i965->intel.bufmgr,
- "vaapi surface",
- obj_surface->size,
- 64);
-
- assert(obj_surface->bo);
- if (NULL == obj_surface->bo) {
- vaStatus = VA_STATUS_ERROR_UNKNOWN;
- break;
- }
+ obj_surface->image = obj_image->image;
+ obj_surface->is_derived = 0;
+ obj_surface->bo = obj_buffer->buffer_store->bo;
}
/* Error recovery */
@@ -417,6 +447,7 @@ i965_DestroySurfaces(VADriverContextP ctx,
struct object_surface *obj_surface = SURFACE(surface_list[i]);
assert(obj_surface);
+ i965_DestroyImage_impl(ctx, IMAGE(obj_surface->image.image_id), 1);
i965_destroy_surface(&i965->surface_heap, (struct object_base *)obj_surface);
}
@@ -1200,29 +1231,28 @@ i965_destroy_heap(struct object_heap *heap,
VAStatus
i965_DestroyImage(VADriverContextP ctx, VAImageID image);
-VAStatus
-i965_CreateImage(VADriverContextP ctx,
- VAImageFormat *format,
- int width,
- int height,
- VAImage *out_image) /* out */
+static struct object_image *
+i965_CreateImage_impl(
+ VADriverContextP ctx,
+ const VAImageFormat *format,
+ unsigned int width,
+ unsigned int height,
+ VASurfaceID surface
+)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct object_image *obj_image;
- VAStatus va_status = VA_STATUS_ERROR_OPERATION_FAILED;
VAImageID image_id;
unsigned int width2, height2, size2, size;
- out_image->image_id = VA_INVALID_ID;
- out_image->buf = VA_INVALID_ID;
-
image_id = NEW_IMAGE_ID();
if (image_id == VA_INVALID_ID)
- return VA_STATUS_ERROR_ALLOCATION_FAILED;
+ return NULL;
obj_image = IMAGE(image_id);
if (!obj_image)
- return VA_STATUS_ERROR_ALLOCATION_FAILED;
+ return NULL;
+ obj_image->surface = surface;
obj_image->bo = NULL;
obj_image->palette = NULL;
@@ -1275,9 +1305,9 @@ i965_CreateImage(VADriverContextP ctx,
goto error;
}
- va_status = i965_CreateBuffer(ctx, 0, VAImageBufferType,
- image->data_size, 1, NULL, &image->buf);
- if (va_status != VA_STATUS_SUCCESS)
+ if (i965_CreateBuffer(ctx, 0, VAImageBufferType,
+ image->data_size, 1, NULL,
+ &image->buf) != VA_STATUS_SUCCESS)
goto error;
obj_image->bo = BUFFER(image->buf)->buffer_store->bo;
@@ -1292,21 +1322,47 @@ i965_CreateImage(VADriverContextP ctx,
image->format = *format;
image->width = width;
image->height = height;
-
- *out_image = *image;
- return VA_STATUS_SUCCESS;
+ return obj_image;
error:
- i965_DestroyImage(ctx, image_id);
- return va_status;
+ i965_DestroyImage_impl(ctx, obj_image, 0);
+ return NULL;
+}
+
+VAStatus
+i965_CreateImage(VADriverContextP ctx,
+ VAImageFormat *format,
+ int width,
+ int height,
+ VAImage *out_image) /* out */
+{
+ struct object_image *obj_image;
+
+ obj_image = i965_CreateImage_impl(ctx, format, width, height, VA_INVALID_ID);
+ if (!obj_image)
+ return VA_STATUS_ERROR_ALLOCATION_FAILED;
+
+ *out_image = obj_image->image;
+ return VA_STATUS_SUCCESS;
}
VAStatus i965_DeriveImage(VADriverContextP ctx,
VASurfaceID surface,
VAImage *image) /* out */
{
- /* TODO */
- return VA_STATUS_ERROR_OPERATION_FAILED;
+ struct i965_driver_data *i965 = i965_driver_data(ctx);
+
+ struct object_surface *obj_surface = SURFACE(surface);
+ if (!obj_surface)
+ return VA_STATUS_ERROR_INVALID_SURFACE;
+
+ struct object_image *obj_image = IMAGE(obj_surface->image.image_id);
+ if (!obj_image)
+ return VA_STATUS_ERROR_INVALID_IMAGE;
+
+ obj_surface->is_derived = 1;
+ *image = obj_surface->image;
+ return VA_STATUS_SUCCESS;
}
static void
@@ -1315,15 +1371,24 @@ i965_destroy_image(struct object_heap *heap, struct object_base *obj)
object_heap_free(heap, obj);
}
-
-VAStatus
-i965_DestroyImage(VADriverContextP ctx, VAImageID image)
+static void
+i965_DestroyImage_impl(
+ VADriverContextP ctx,
+ struct object_image *obj_image,
+ int from_surface
+)
{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
- struct object_image *obj_image = IMAGE(image);
+ struct i965_driver_data * const i965 = i965_driver_data(ctx);
if (!obj_image)
- return VA_STATUS_SUCCESS;
+ return;
+
+ if (!from_surface && obj_image->surface != VA_INVALID_ID) {
+ /* only destroy when called from vaDestroySurfaces() */
+ struct object_surface *obj_surface = SURFACE(obj_image->surface);
+ obj_surface->is_derived = 0;
+ return;
+ }
if (obj_image->image.buf != VA_INVALID_ID) {
i965_DestroyBuffer(ctx, obj_image->image.buf);
@@ -1336,6 +1401,15 @@ i965_DestroyImage(VADriverContextP ctx, VAImageID image)
}
i965_destroy_image(&i965->image_heap, (struct object_base *)obj_image);
+}
+
+VAStatus
+i965_DestroyImage(VADriverContextP ctx, VAImageID image)
+{
+ struct i965_driver_data *i965 = i965_driver_data(ctx);
+ struct object_image *obj_image = IMAGE(image);
+
+ i965_DestroyImage_impl(ctx, obj_image, 0);
return VA_STATUS_SUCCESS;
}
@@ -1382,6 +1456,9 @@ i965_GetImage(VADriverContextP ctx,
if (!obj_surface)
return VA_STATUS_ERROR_INVALID_SURFACE;
+ if (obj_surface->is_derived)
+ return VA_STATUS_ERROR_SURFACE_BUSY;
+
struct object_image *obj_image = IMAGE(image);
if (!obj_image)
return VA_STATUS_ERROR_INVALID_IMAGE;
@@ -1441,6 +1518,9 @@ i965_PutImage(VADriverContextP ctx,
if (!obj_surface)
return VA_STATUS_ERROR_INVALID_SURFACE;
+ if (obj_surface->is_derived)
+ return VA_STATUS_ERROR_SURFACE_BUSY;
+
struct object_image *obj_image = IMAGE(image);
if (!obj_image)
return VA_STATUS_ERROR_INVALID_IMAGE;
diff --git a/i965_drv_video/i965_drv_video.h b/i965_drv_video/i965_drv_video.h
index be253ed..7f410ab 100644
--- a/i965_drv_video/i965_drv_video.h
+++ b/i965_drv_video/i965_drv_video.h
@@ -96,6 +96,8 @@ struct object_surface
int width;
int height;
int size;
+ VAImage image;
+ int is_derived;
dri_bo *bo;
};
@@ -113,6 +115,7 @@ struct object_image
{
struct object_base base;
VAImage image;
+ VASurfaceID surface;
dri_bo *bo;
unsigned int *palette;
};

View File

@ -0,0 +1,69 @@
commit 0b18b60ccc4df5e2dc30ad301451c3bd8b55b49d
Author: Gwenole Beauchesne <gbeauchesne@splitted-desktop.com>
Date: Thu Mar 18 12:25:20 2010 +0100
[G45] Add I420 image format.
diff --git a/i965_drv_video/i965_drv_video.c b/i965_drv_video/i965_drv_video.c
index 98a824f..7b3a206 100644
--- a/i965_drv_video/i965_drv_video.c
+++ b/i965_drv_video/i965_drv_video.c
@@ -64,6 +64,8 @@ static const i965_image_format_map_t
i965_image_formats_map[I965_MAX_IMAGE_FORMATS + 1] = {
{ I965_SURFACETYPE_YUV,
{ VA_FOURCC('Y','V','1','2'), VA_LSB_FIRST, 12, } },
+ { I965_SURFACETYPE_YUV,
+ { VA_FOURCC('I','4','2','0'), VA_LSB_FIRST, 12, } },
};
static const i965_image_format_map_t *
@@ -1301,6 +1303,16 @@ i965_CreateImage_impl(
image->offsets[2] = size;
image->data_size = size + 2 * size2;
break;
+ case VA_FOURCC('I','4','2','0'):
+ image->num_planes = 3;
+ image->pitches[0] = width;
+ image->offsets[0] = 0;
+ image->pitches[1] = width2;
+ image->offsets[1] = size;
+ image->pitches[2] = width2;
+ image->offsets[2] = size + size2;
+ image->data_size = size + 2 * size2;
+ break;
default:
goto error;
}
@@ -1485,7 +1497,8 @@ i965_GetImage(VADriverContextP ctx,
dri_bo_map(obj_surface->bo, 0);
switch (obj_image->image.format.fourcc) {
- case VA_FOURCC('Y','V','1','2'): /* YV12 is native format here */
+ case VA_FOURCC('Y','V','1','2'):
+ case VA_FOURCC('I','4','2','0'): /* I420 is native format here */
memcpy(image_data, obj_surface->bo->virtual, obj_surface->bo->size);
break;
default:
@@ -1550,7 +1563,8 @@ i965_PutImage(VADriverContextP ctx,
dri_bo_map(obj_surface->bo, 1);
switch (obj_image->image.format.fourcc) {
- case VA_FOURCC('Y','V','1','2'): /* YV12 is native format here */
+ case VA_FOURCC('Y','V','1','2'):
+ case VA_FOURCC('I','4','2','0'): /* I420 is native format here */
memcpy(obj_surface->bo->virtual, image_data, obj_surface->bo->size);
break;
default:
diff --git a/i965_drv_video/i965_drv_video.h b/i965_drv_video/i965_drv_video.h
index 7f410ab..9e5707b 100644
--- a/i965_drv_video/i965_drv_video.h
+++ b/i965_drv_video/i965_drv_video.h
@@ -43,7 +43,7 @@
#define I965_MAX_PROFILES 11
#define I965_MAX_ENTRYPOINTS 5
#define I965_MAX_CONFIG_ATTRIBUTES 10
-#define I965_MAX_IMAGE_FORMATS 1
+#define I965_MAX_IMAGE_FORMATS 2
#define I965_MAX_SUBPIC_FORMATS 4
#define I965_MAX_DISPLAY_ATTRIBUTES 4
#define I965_STR_VENDOR "i965 Driver 0.1"

View File

@ -0,0 +1,41 @@
commit 26db277f8e028be83d9ab16ef8e4077e9f745c17
Author: Gwenole Beauchesne <gbeauchesne@splitted-desktop.com>
Date: Thu Sep 3 15:46:37 2009 +0000
Check for __attribute__((visibility("hidden"))).
diff --git a/configure.ac b/configure.ac
index eedfe4c..f2d0ea4 100644
--- a/configure.ac
+++ b/configure.ac
@@ -100,6 +100,30 @@ if test x$enable_i965_driver = xyes && ! $PKG_CONFIG --atleast-version=2.4 libdr
fi
AM_CONDITIONAL(BUILD_I965_DRIVER, test x$enable_i965_driver = xyes)
+dnl Check for __attribute__((visibility()))
+AC_CACHE_CHECK([whether __attribute__((visibility())) is supported],
+ libva_cv_visibility_attribute,
+ [cat > conftest.c <<EOF
+int foo __attribute__ ((visibility ("hidden"))) = 1;
+int bar __attribute__ ((visibility ("protected"))) = 1;
+EOF
+ libva_cv_visibility_attribute=no
+ if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
+ if grep '\.hidden.*foo' conftest.s >/dev/null; then
+ if grep '\.protected.*bar' conftest.s >/dev/null; then
+ libva_cv_visibility_attribute=yes
+ fi
+ fi
+ fi
+ rm -f conftest.[cs]
+])
+ATTRIBUTE_HIDDEN=""
+if test $libva_cv_visibility_attribute = yes; then
+ ATTRIBUTE_HIDDEN="__attribute__((visibility(\"hidden\")))"
+fi
+AC_DEFINE_UNQUOTED([ATTRIBUTE_HIDDEN], [$ATTRIBUTE_HIDDEN],
+ [Defined to __attribute__((visibility("hidden"))) when available])
+
# We only need the headers, we don't link against the DRM libraries
LIBVA_CFLAGS="$DRM_CFLAGS"
AC_SUBST(LIBVA_CFLAGS)

View File

@ -0,0 +1,22 @@
commit a07468c4f0e30b5f207a2bdf1b362f5584d748a7
Author: Gwenole Beauchesne <gbeauchesne@splitted-desktop.com>
Date: Tue Sep 22 12:29:56 2009 +0000
Fix vainfo dependencies (Konstantin Pavlov).
diff --git a/test/Makefile.am b/test/Makefile.am
index d7e1b1f..8785259 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -25,9 +25,8 @@ bin_PROGRAMS = vainfo
AM_CFLAGS = -I$(top_srcdir)/va -I$(top_srcdir)/test/basic -I$(top_srcdir)/src/x11
-
-vainfo_LDADD = $(top_srcdir)/va/$(libvabackendlib)
-vainfo_DEPENDENCIES = $(top_srcdir)/va/$(libvabackendlib)
+vainfo_LDADD = $(top_srcdir)/va/libva.la $(top_srcdir)/va/$(libvabackendlib)
+vainfo_DEPENDENCIES = $(top_srcdir)/va/libva.la $(top_srcdir)/va/$(libvabackendlib)
vainfo_SOURCES = vainfo.c
SUBDIRS = basic decode encode putsurface

View File

@ -0,0 +1,18 @@
commit 5f1314d188c4ecc2e0d5be54bcd663013e8b0077
Author: Gwenole Beauchesne <gbeauchesne@splitted-desktop.com>
Date: Tue Sep 22 13:00:34 2009 +0000
Fix libva-x11 dependencies. Ensure this grabs libva so that people don't have to check for that themselves.
diff --git a/libva-x11.pc.in b/libva-x11.pc.in
index 75e4f0b..6dde07f 100644
--- a/libva-x11.pc.in
+++ b/libva-x11.pc.in
@@ -6,6 +6,7 @@ display=x11
Name: libva-${display}
Description: Userspace Video Acceleration (VA) ${display} interface
+Requires: libva
Version: @PACKAGE_VERSION@
Libs: -L${libdir} -lva-${display}
Cflags: -I${includedir}

View File

@ -0,0 +1,21 @@
commit ecc7b5f332674ee57ad11a0d6bb58a252549c762
Author: Gwenole Beauchesne <gbeauchesne@splitted-desktop.com>
Date: Tue Sep 22 13:03:23 2009 +0000
Don't search LIBGL_DRIVERS_PATH, stick to LIBVA_DRIVERS_PATH only or the default path.
diff --git a/va/va.c b/va/va.c
index c8e036e..ada70ce 100644
--- a/va/va.c
+++ b/va/va.c
@@ -127,10 +127,6 @@ static VAStatus va_openDriver(VADisplay dpy, char *driver_name)
{
/* don't allow setuid apps to use LIBVA_DRIVERS_PATH */
search_path = getenv("LIBVA_DRIVERS_PATH");
- if (!search_path)
- {
- search_path = getenv("LIBGL_DRIVERS_PATH");
- }
}
if (!search_path)
{

View File

@ -0,0 +1,19 @@
commit 43becedcfa2b9b040006868a63c686a131c9ba74
Author: Gwenole Beauchesne <gbeauchesne@splitted-desktop.com>
Date: Wed Jun 24 08:12:13 2009 +0000
Install drivers into pkglibdir/va/.
diff --git a/configure.ac b/configure.ac
index f2d0ea4..ebe5df6 100644
--- a/configure.ac
+++ b/configure.ac
@@ -73,7 +73,7 @@ AC_ARG_ENABLE(i965-driver,
AC_ARG_WITH(drivers-path,
[AC_HELP_STRING([--with-drivers-path=[[path]]], [drivers path])],,
- [with_drivers_path="$libdir/dri"])
+ [with_drivers_path="$libdir/va/drivers"])
LIBVA_DRIVERS_PATH="$with_drivers_path"
AC_SUBST(LIBVA_DRIVERS_PATH)

View File

@ -0,0 +1,97 @@
commit 1f9ee94ab4ac60459048bef5a2aa348cdf88c390
Author: Gwenole Beauchesne <gbeauchesne@splitted-desktop.com>
Date: Tue Feb 23 09:11:22 2010 +0000
Move LIBVA_DRIVER_NAME check in vaInitialize().
diff --git a/va/va.c b/va/va.c
index ada70ce..b5940e5 100644
--- a/va/va.c
+++ b/va/va.c
@@ -320,30 +320,42 @@ VAStatus vaInitialize (
int *minor_version /* out */
)
{
- char *driver_name = NULL;
- VAStatus vaStatus;
-
- CHECK_DISPLAY(dpy);
+ const char *driver_name_env = NULL;
+ char *driver_name = NULL;
+ VAStatus vaStatus;
- va_debug_trace = (getenv("LIBVA_DEBUG_TRACE") != NULL);
+ CHECK_DISPLAY(dpy);
- va_infoMessage("libva version %s\n", VA_VERSION_S);
+ va_debug_trace = (getenv("LIBVA_DEBUG_TRACE") != NULL);
- vaStatus = va_getDriverName(dpy, &driver_name);
- va_infoMessage("va_getDriverName() returns %d\n", vaStatus);
-
- if (VA_STATUS_SUCCESS == vaStatus)
- {
- vaStatus = va_openDriver(dpy, driver_name);
- va_infoMessage("va_openDriver() returns %d\n", vaStatus);
-
- *major_version = VA_MAJOR_VERSION;
- *minor_version = VA_MINOR_VERSION;
- }
+ va_infoMessage("libva version %s\n", VA_VERSION_S);
- if (driver_name)
- free(driver_name);
- return vaStatus;
+ driver_name_env = getenv("LIBVA_DRIVER_NAME");
+ if (driver_name_env && geteuid() == getuid())
+ {
+ /* Don't allow setuid apps to use LIBVA_DRIVER_NAME */
+ driver_name = strdup(driver_name_env);
+ vaStatus = VA_STATUS_SUCCESS;
+ va_infoMessage("User requested driver '%s'\n", driver_name);
+ }
+ else
+ {
+ vaStatus = va_getDriverName(dpy, &driver_name);
+ va_infoMessage("va_getDriverName() returns %d\n", vaStatus);
+ }
+
+ if (VA_STATUS_SUCCESS == vaStatus)
+ {
+ vaStatus = va_openDriver(dpy, driver_name);
+ va_infoMessage("va_openDriver() returns %d\n", vaStatus);
+
+ *major_version = VA_MAJOR_VERSION;
+ *minor_version = VA_MINOR_VERSION;
+ }
+
+ if (driver_name)
+ free(driver_name);
+ return vaStatus;
}
diff --git a/va/x11/va_x11.c b/va/x11/va_x11.c
index 29e81c8..78e38de 100644
--- a/va/x11/va_x11.c
+++ b/va/x11/va_x11.c
@@ -136,19 +136,10 @@ static VAStatus va_DisplayContextGetDriverName (
)
{
VAStatus vaStatus;
- char *driver_name_env;
if (driver_name)
*driver_name = NULL;
- if ((driver_name_env = getenv("LIBVA_DRIVER_NAME")) != NULL
- && geteuid() == getuid())
- {
- /* don't allow setuid apps to use LIBVA_DRIVER_NAME */
- *driver_name = strdup(driver_name_env);
- return VA_STATUS_SUCCESS;
- }
-
vaStatus = va_DRI2GetDriverName(pDisplayContext, driver_name);
if (vaStatus != VA_STATUS_SUCCESS)
vaStatus = va_DRIGetDriverName(pDisplayContext, driver_name);

View File

@ -0,0 +1,155 @@
commit 0eeee71bcd334512a6b86702ee612b35feb644b2
Author: Gwenole Beauchesne <gbeauchesne@splitted-desktop.com>
Date: Tue Feb 23 10:05:25 2010 +0000
Detect Broadcom Crystal HD chip.
diff --git a/va/Makefile.am b/va/Makefile.am
index aeaf82f..f382c0e 100644
--- a/va/Makefile.am
+++ b/va/Makefile.am
@@ -42,7 +42,7 @@ libva_x11_la_DEPENDENCIES = $(libvacorelib) x11/libva_x11.la
SUBDIRS = x11
-libva_la_SOURCES = va.c
+libva_la_SOURCES = va.c va_crystalhd.c
libvaincludedir = ${includedir}/va
libvainclude_HEADERS = va.h va_x11.h va_backend.h va_version.h
@@ -51,4 +51,5 @@ DISTCLEANFILES = \
va_version.h
EXTRA_DIST = \
- va_version.h.in
+ va_version.h.in \
+ va_crystalhd.h
diff --git a/va/va.c b/va/va.c
index b5940e5..fd68481 100644
--- a/va/va.c
+++ b/va/va.c
@@ -24,8 +24,10 @@
#define _GNU_SOURCE 1
+#include "config.h"
#include "va.h"
#include "va_backend.h"
+#include "va_crystalhd.h"
#include <assert.h>
#include <stdarg.h>
@@ -349,6 +351,15 @@ VAStatus vaInitialize (
vaStatus = va_openDriver(dpy, driver_name);
va_infoMessage("va_openDriver() returns %d\n", vaStatus);
+ if (vaStatus != VA_STATUS_SUCCESS && !driver_name_env)
+ {
+ if (va_hasCrystalHD())
+ {
+ vaStatus = va_openDriver(dpy, "crystalhd");
+ va_infoMessage("va_openDriver() returns %d\n", vaStatus);
+ }
+ }
+
*major_version = VA_MAJOR_VERSION;
*minor_version = VA_MINOR_VERSION;
}
diff --git a/va/va_crystalhd.c b/va/va_crystalhd.c
new file mode 100644
index 0000000..1ddd4fe
--- /dev/null
+++ b/va/va_crystalhd.c
@@ -0,0 +1,54 @@
+/*
+ * Copyright (C) 2010 Splitted-Desktop Systems. 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 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.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include "config.h"
+#include "va_crystalhd.h"
+
+/* Checks if the Broadcom Crystal HD decoder is available */
+int va_hasCrystalHD(void)
+{
+ char line[1024];
+ int len, vendor, device, dummy, found = 0;
+ FILE *fp;
+
+ fp = fopen("/proc/bus/pci/devices", "r");
+ if (!fp)
+ return 0;
+
+ while (!found && fgets(line, sizeof(line), fp)) {
+ len = strlen(line);
+ if (len == 0)
+ continue;
+ line[len - 1] = 0;
+ if (sscanf(line, "%x %04x%04x", &dummy, &vendor, &device) == 3) {
+ if (vendor == 0x14e4 && device == 0x1612) /* BCM70012 */
+ found = 1;
+ }
+ }
+ fclose(fp);
+ return found;
+}
diff --git a/va/va_crystalhd.h b/va/va_crystalhd.h
new file mode 100644
index 0000000..44a39d9
--- /dev/null
+++ b/va/va_crystalhd.h
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2010 Splitted-Desktop Systems. 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 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.
+ */
+
+#ifndef VA_CRYSTALHD_H
+#define VA_CRYSTALHD_H
+
+/** Checks if the Broadcom Crystal HD decoder is available */
+int va_hasCrystalHD(void)
+ ATTRIBUTE_HIDDEN;
+
+#endif /* VA_CRYSTALHD_H */

View File

@ -0,0 +1,538 @@
commit 02c2bb46ae11a1674927e6e65f990df1dc9ed1ce
Author: Gwenole Beauchesne <gbeauchesne@splitted-desktop.com>
Date: Mon Mar 8 09:17:09 2010 +0100
Don't link against libdrm to workaround XvBA / fglrx >= 8.66-RC1 bugs.
diff --git a/va/Makefile.am b/va/Makefile.am
index f382c0e..3b9ccfc 100644
--- a/va/Makefile.am
+++ b/va/Makefile.am
@@ -36,7 +36,7 @@ libva_la_LDFLAGS = $(LDADD) -no-undefined
libva_la_LIBADD = $(LIBVA_LIBS) -ldl
libva_x11_la_SOURCES =
-libva_x11_la_LIBADD = $(libvacorelib) x11/libva_x11.la $(LIBVA_LIBS) $(X11_LIBS) $(XEXT_LIBS) $(DRM_LIBS) $(XFIXES_LIBS)
+libva_x11_la_LIBADD = $(libvacorelib) x11/libva_x11.la $(LIBVA_LIBS) $(X11_LIBS) $(XEXT_LIBS) $(XFIXES_LIBS)
libva_x11_la_LDFLAGS = $(LDADD)
libva_x11_la_DEPENDENCIES = $(libvacorelib) x11/libva_x11.la
diff --git a/va/x11/Makefile.am b/va/x11/Makefile.am
index 40346f1..7466fda 100644
--- a/va/x11/Makefile.am
+++ b/va/x11/Makefile.am
@@ -25,6 +25,6 @@ noinst_LTLIBRARIES = libva_x11.la
libva_x11includedir = ${includedir}/va
libva_x11include_HEADERS = va_dri.h va_dri2.h va_dricommon.h
-libva_x11_la_SOURCES = va_x11.c va_dri.c va_dri2.c va_dricommon.c dri2_util.c dri1_util.c va_nvctrl.c
+libva_x11_la_SOURCES = va_x11.c va_dri.c va_dri2.c va_dricommon.c dri2_util.c dri1_util.c va_nvctrl.c libdrm_glue.c
-EXTRA_DIST = va_dristr.h va_dri2str.h va_dri2tokens.h va_nvctrl.h
+EXTRA_DIST = va_dristr.h va_dri2str.h va_dri2tokens.h va_nvctrl.h libdrm_glue.h
diff --git a/va/x11/dri1_util.c b/va/x11/dri1_util.c
index 3e67e2a..f6ce1ba 100644
--- a/va/x11/dri1_util.c
+++ b/va/x11/dri1_util.c
@@ -1,10 +1,13 @@
+#include "config.h"
+#include <stdio.h>
#include <stdlib.h>
+#include <strings.h> /* strcasecmp() */
#include <fcntl.h>
#include <unistd.h>
#include <sys/mman.h>
#include <assert.h>
-#include <xf86drm.h>
+#include "libdrm_glue.h"
#include "X11/Xlib.h"
#include "va.h"
@@ -21,6 +24,75 @@ struct dri1_drawable
int height;
};
+static int
+firegl_drmOpenMinor(int minor)
+{
+ char buf[64];
+ int fd;
+
+ sprintf(buf, "/dev/ati/card%d", minor);
+ if ((fd = open(buf, O_RDWR, 0)) >= 0)
+ return fd;
+ return -1;
+}
+
+static int
+firegl_drmOpenByBusID(const char *busid)
+{
+ int i, fd;
+ drmSetVersion sv;
+ const char *buf;
+
+ for (i = 0; i < DRM_MAX_MINOR; i++) {
+ if ((fd = firegl_drmOpenMinor(i)) < 0)
+ continue;
+ sv.drm_di_major = 1;
+ sv.drm_di_minor = 1;
+ sv.drm_dd_major = -1;
+ sv.drm_dd_minor = -1;
+ libdrm_drmSetInterfaceVersion(fd, &sv);
+ buf = libdrm_drmGetBusid(fd);
+ if (buf && strcasecmp(buf, busid) == 0) { /* XXX: drmMatchBusID() */
+ libdrm_drmFreeBusid(buf);
+ return fd;
+ }
+ if (buf)
+ libdrm_drmFreeBusid(buf);
+ close(fd);
+ }
+ return -1;
+}
+
+static int
+drm_open_once(struct dri_state *dri_state, const char *BusID, int *newlyopened)
+{
+ dri_state->driConnectedFlag = VA_NONE;
+ dri_state->fd = libdrm_drmOpenOnce(NULL, BusID, newlyopened);
+ if (dri_state->fd < 0) {
+ dri_state->fd = firegl_drmOpenByBusID(BusID);
+ if (dri_state->fd >= 0) {
+ *newlyopened = 1;
+ dri_state->driConnectedFlag |= VA_DRI_AMD;
+ }
+ }
+ return dri_state->fd;
+}
+
+static void
+drm_close_once(struct dri_state *dri_state)
+{
+ /* XXX: dri_state->close() doesn't seem to be called, thus this
+ function is never called either */
+ if (dri_state->fd < 0)
+ return;
+ if (dri_state->driConnectedFlag & VA_DRI_AMD)
+ close(dri_state->fd);
+ else
+ libdrm_drmCloseOnce(dri_state->fd);
+ dri_state->fd = -1;
+ dri_state->driConnectedFlag = VA_NONE;
+}
+
static struct dri_drawable *
dri1CreateDrawable(VADriverContextP ctx, XID x_drawable)
{
@@ -64,9 +136,9 @@ dri1Close(VADriverContextP ctx)
free_drawable_hashtable(ctx);
VA_DRIDestroyContext(ctx->x11_dpy, ctx->x11_screen, dri_state->hwContextID);
assert(dri_state->pSAREA != MAP_FAILED);
- drmUnmap(dri_state->pSAREA, SAREA_MAX);
+ libdrm_drmUnmap(dri_state->pSAREA, SAREA_MAX);
assert(dri_state->fd >= 0);
- drmCloseOnce(dri_state->fd);
+ drm_close_once(dri_state);
VA_DRICloseConnection(ctx->x11_dpy, ctx->x11_screen);
}
@@ -104,21 +176,20 @@ isDRI1Connected(VADriverContextP ctx, char **driver_name)
&dri_state->hSAREA, &BusID))
goto err_out0;
-
- dri_state->fd = drmOpenOnce(NULL, BusID, &newlyopened);
+ drm_open_once(dri_state, BusID, &newlyopened);
XFree(BusID);
if (dri_state->fd < 0)
goto err_out1;
- if (drmGetMagic(dri_state->fd, &magic))
+ if (libdrm_drmGetMagic(dri_state->fd, &magic))
goto err_out1;
if (newlyopened && !VA_DRIAuthConnection(ctx->x11_dpy, ctx->x11_screen, magic))
goto err_out1;
- if (drmMap(dri_state->fd, dri_state->hSAREA, SAREA_MAX, &dri_state->pSAREA))
+ if (libdrm_drmMap(dri_state->fd, dri_state->hSAREA, SAREA_MAX, &dri_state->pSAREA))
goto err_out1;
if (!VA_DRICreateContext(ctx->x11_dpy, ctx->x11_screen,
@@ -126,7 +197,8 @@ isDRI1Connected(VADriverContextP ctx, char **driver_name)
&dri_state->hwContextID, &dri_state->hwContext))
goto err_out1;
- dri_state->driConnectedFlag = VA_DRI1;
+ dri_state->driConnectedFlag &= VA_DRI_AMD; /* clear flags but AMD bit */
+ dri_state->driConnectedFlag |= VA_DRI1;
dri_state->createDrawable = dri1CreateDrawable;
dri_state->destroyDrawable = dri1DestroyDrawable;
dri_state->swapBuffer = dri1SwapBuffer;
@@ -137,10 +209,10 @@ isDRI1Connected(VADriverContextP ctx, char **driver_name)
err_out1:
if (dri_state->pSAREA != MAP_FAILED)
- drmUnmap(dri_state->pSAREA, SAREA_MAX);
+ libdrm_drmUnmap(dri_state->pSAREA, SAREA_MAX);
if (dri_state->fd >= 0)
- drmCloseOnce(dri_state->fd);
+ drm_close_once(dri_state);
VA_DRICloseConnection(ctx->x11_dpy, ctx->x11_screen);
diff --git a/va/x11/dri2_util.c b/va/x11/dri2_util.c
index ebe7a2c..b727e97 100644
--- a/va/x11/dri2_util.c
+++ b/va/x11/dri2_util.c
@@ -3,7 +3,7 @@
#include <unistd.h>
#include <assert.h>
-#include <xf86drm.h>
+#include "libdrm_glue.h"
#include <X11/Xlibint.h>
#include <X11/Xlib.h>
@@ -166,7 +166,7 @@ isDRI2Connected(VADriverContextP ctx, char **driver_name)
if (dri_state->fd < 0)
goto err_out;
- if (drmGetMagic(dri_state->fd, &magic))
+ if (libdrm_drmGetMagic(dri_state->fd, &magic))
goto err_out;
if (!VA_DRI2Authenticate(ctx->x11_dpy, RootWindow(ctx->x11_dpy, ctx->x11_screen),
diff --git a/va/x11/libdrm_glue.c b/va/x11/libdrm_glue.c
new file mode 100644
index 0000000..92c7d60
--- /dev/null
+++ b/va/x11/libdrm_glue.c
@@ -0,0 +1,209 @@
+/*
+ * Copyright (C) 2009 Splitted-Desktop Systems. 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 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.
+ */
+
+#define _GNU_SOURCE 1
+#include "libdrm_glue.h"
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <dlfcn.h>
+#include <assert.h>
+
+#define LOAD_FUNC_(NAME, RET, ARGS, FALLBACK) \
+ static RET (*lib_##NAME) ARGS; \
+ if (lib_##NAME == NULL) { \
+ lib_##NAME = libdrm_symbol(#NAME); \
+ if (!lib_##NAME) \
+ lib_##NAME = FALLBACK; \
+ } \
+ assert(lib_##NAME != NULL)
+
+#define LOAD_FUNC(NAME, RET, ARGS) \
+ LOAD_FUNC_(NAME, RET, ARGS, NULL)
+
+static void *libdrm_handle;
+static int libdrm_handle_ok = -1;
+
+static inline void *libdrm_symbol(const char *name)
+{
+ if (!libdrm_open())
+ return NULL;
+ return dlsym(libdrm_handle, name);
+}
+
+int libdrm_open(void)
+{
+ if (libdrm_handle_ok < 0) {
+ libdrm_handle = dlopen("libdrm.so.2", RTLD_LOCAL|RTLD_LAZY);
+ libdrm_handle_ok = libdrm_handle != NULL;
+ }
+ assert(libdrm_handle);
+ return libdrm_handle_ok;
+}
+
+void libdrm_close(void)
+{
+ if (libdrm_handle)
+ dlclose(libdrm_handle);
+}
+
+// Default drmOpenOnce() and drmCloseOnce() implementations based on current GIT
+#define DRM_MAX_FDS 16
+static struct {
+ char *BusID;
+ int fd;
+ int refcount;
+} connection[DRM_MAX_FDS];
+
+static int nr_fds = 0;
+
+// Default implementation for drmOpenOnce() if none exists in the library
+static int
+libdrm_default_drmOpenOnce(void *unused, const char *BusID, int *newlyopened)
+{
+ int i;
+ int fd;
+
+ for (i = 0; i < nr_fds; i++)
+ if (strcmp(BusID, connection[i].BusID) == 0) {
+ connection[i].refcount++;
+ *newlyopened = 0;
+ return connection[i].fd;
+ }
+
+ fd = libdrm_drmOpen(unused, BusID);
+ if (fd <= 0 || nr_fds == DRM_MAX_FDS)
+ return fd;
+
+ connection[nr_fds].BusID = strdup(BusID);
+ connection[nr_fds].fd = fd;
+ connection[nr_fds].refcount = 1;
+ *newlyopened = 1;
+
+ if (0)
+ fprintf(stderr, "saved connection %d for %s %d\n",
+ nr_fds, connection[nr_fds].BusID,
+ strcmp(BusID, connection[nr_fds].BusID));
+ nr_fds++;
+ return fd;
+}
+
+// Default implementation for drmCloseOnce() if none exists in the library
+static void libdrm_default_drmCloseOnce(int fd)
+{
+ int i;
+
+ for (i = 0; i < nr_fds; i++) {
+ if (fd == connection[i].fd) {
+ if (--connection[i].refcount == 0) {
+ libdrm_drmClose(connection[i].fd);
+ free(connection[i].BusID);
+ if (i < --nr_fds)
+ connection[i] = connection[nr_fds];
+ return;
+ }
+ }
+ }
+}
+
+// Determine whether the DRM kernel driver has been loaded
+int libdrm_drmAvailable(void)
+{
+ LOAD_FUNC(drmAvailable, int, (void));
+ return lib_drmAvailable();
+}
+
+// Open the DRM device
+int libdrm_drmOpen(const char *name, const char *busid)
+{
+ LOAD_FUNC(drmOpen, int, (const char *, const char *));
+ return lib_drmOpen(name, busid);
+}
+
+// Close the device
+int libdrm_drmClose(int fd)
+{
+ LOAD_FUNC(drmClose, int, (int));
+ return lib_drmClose(fd);
+}
+
+// Open the DRM device (re-use an existing connection)
+int libdrm_drmOpenOnce(void *unused, const char *BusID, int *newlyopened)
+{
+ LOAD_FUNC_(drmOpenOnce, int, (void *, const char *, int *),
+ libdrm_default_drmOpenOnce);
+ return lib_drmOpenOnce(unused, BusID, newlyopened);
+}
+
+// Close the device (unref an existing connection prior to actually closing it)
+void libdrm_drmCloseOnce(int fd)
+{
+ LOAD_FUNC_(drmCloseOnce, void, (int), libdrm_default_drmCloseOnce);
+ lib_drmCloseOnce(fd);
+}
+
+// DRM connection cookie
+int libdrm_drmGetMagic(int fd, drm_magic_t * magic)
+{
+ LOAD_FUNC(drmGetMagic, int, (int, drm_magic_t *));
+ return lib_drmGetMagic(fd, magic);
+}
+
+// Issue a set-version ioctl
+int libdrm_drmSetInterfaceVersion(int fd, drmSetVersion *version)
+{
+ LOAD_FUNC(drmSetInterfaceVersion, int, (int, drmSetVersion *));
+ return lib_drmSetInterfaceVersion(fd, version);
+}
+
+// Get the bus ID of the device
+char *libdrm_drmGetBusid(int fd)
+{
+ LOAD_FUNC(drmGetBusid, char *, (int));
+ return lib_drmGetBusid(fd);
+}
+
+// Free the bus ID information
+void libdrm_drmFreeBusid(const char *busid)
+{
+ LOAD_FUNC(drmFreeBusid, void, (const char *));
+ lib_drmFreeBusid(busid);
+}
+
+// Map a region of memory
+int libdrm_drmMap(int fd,
+ drm_handle_t handle,
+ drmSize size,
+ drmAddressPtr address)
+{
+ LOAD_FUNC(drmMap, int, (int, drm_handle_t, drmSize, drmAddressPtr));
+ return lib_drmMap(fd, handle, size, address);
+}
+
+// Unmap mappings obtained with drmMap()
+int libdrm_drmUnmap(drmAddress address, drmSize size)
+{
+ LOAD_FUNC(drmUnmap, int, (drmAddress, drmSize));
+ return lib_drmUnmap(address, size);
+}
diff --git a/va/x11/libdrm_glue.h b/va/x11/libdrm_glue.h
new file mode 100644
index 0000000..878470b
--- /dev/null
+++ b/va/x11/libdrm_glue.h
@@ -0,0 +1,73 @@
+/*
+ * Copyright (C) 2009 Splitted-Desktop Systems. 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 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.
+ */
+
+#ifndef LIBDRM_GLUE_H
+#define LIBDRM_GLUE_H
+
+#include "config.h"
+#include <xf86drm.h>
+
+int libdrm_open(void)
+ ATTRIBUTE_HIDDEN;
+
+void libdrm_close(void)
+ ATTRIBUTE_HIDDEN;
+
+int libdrm_drmAvailable(void)
+ ATTRIBUTE_HIDDEN;
+
+int libdrm_drmOpen(const char *name, const char *busid)
+ ATTRIBUTE_HIDDEN;
+
+int libdrm_drmClose(int fd)
+ ATTRIBUTE_HIDDEN;
+
+int libdrm_drmOpenOnce(void *unused, const char *BusID, int *newlyopened)
+ ATTRIBUTE_HIDDEN;
+
+void libdrm_drmCloseOnce(int fd)
+ ATTRIBUTE_HIDDEN;
+
+int libdrm_drmGetMagic(int fd, drm_magic_t * magic)
+ ATTRIBUTE_HIDDEN;
+
+int libdrm_drmSetInterfaceVersion(int fd, drmSetVersion *version)
+ ATTRIBUTE_HIDDEN;
+
+char *libdrm_drmGetBusid(int fd)
+ ATTRIBUTE_HIDDEN;
+
+void libdrm_drmFreeBusid(const char *busid)
+ ATTRIBUTE_HIDDEN;
+
+int libdrm_drmMap(int fd,
+ drm_handle_t handle,
+ drmSize size,
+ drmAddressPtr address)
+ ATTRIBUTE_HIDDEN;
+
+int libdrm_drmUnmap(drmAddress address, drmSize size)
+ ATTRIBUTE_HIDDEN;
+
+#endif /* LIBDRM_GLUE_H */
diff --git a/va/x11/va_dricommon.h b/va/x11/va_dricommon.h
index b762bd0..5ed7a6a 100644
--- a/va/x11/va_dricommon.h
+++ b/va/x11/va_dricommon.h
@@ -13,7 +13,8 @@ enum
{
VA_NONE = 0,
VA_DRI1 = 1,
- VA_DRI2 = 2
+ VA_DRI2 = 2,
+ VA_DRI_AMD = 4 /* AMD DRI implementation */
};
union dri_buffer
diff --git a/va/x11/va_x11.c b/va/x11/va_x11.c
index 78e38de..1216093 100644
--- a/va/x11/va_x11.c
+++ b/va/x11/va_x11.c
@@ -31,6 +31,7 @@
#include "va_dri2.h"
#include "va_dricommon.h"
#include "va_nvctrl.h"
+#include "libdrm_glue.h"
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
@@ -75,6 +76,8 @@ static void va_DisplayContextDestroy (
}
ctx = &((*ctx)->pNext);
}
+
+ libdrm_close();
free(pDisplayContext->pDriverContext->dri_state);
free(pDisplayContext->pDriverContext);
free(pDisplayContext);

View File

@ -0,0 +1,325 @@
commit 595a044901ee32acc3212100966f5a1a9e181515
Author: Gwenole Beauchesne <gbeauchesne@splitted-desktop.com>
Date: Fri Nov 20 15:51:22 2009 +0000
Fix detection of fglrx.
diff --git a/va/Makefile.am b/va/Makefile.am
index 3b9ccfc..99f6bbf 100644
--- a/va/Makefile.am
+++ b/va/Makefile.am
@@ -36,7 +36,7 @@ libva_la_LDFLAGS = $(LDADD) -no-undefined
libva_la_LIBADD = $(LIBVA_LIBS) -ldl
libva_x11_la_SOURCES =
-libva_x11_la_LIBADD = $(libvacorelib) x11/libva_x11.la $(LIBVA_LIBS) $(X11_LIBS) $(XEXT_LIBS) $(XFIXES_LIBS)
+libva_x11_la_LIBADD = $(libvacorelib) x11/libva_x11.la $(LIBVA_LIBS) $(X11_LIBS) $(XEXT_LIBS) $(XFIXES_LIBS) -ldl
libva_x11_la_LDFLAGS = $(LDADD)
libva_x11_la_DEPENDENCIES = $(libvacorelib) x11/libva_x11.la
diff --git a/va/x11/Makefile.am b/va/x11/Makefile.am
index 7466fda..a6d9323 100644
--- a/va/x11/Makefile.am
+++ b/va/x11/Makefile.am
@@ -25,6 +25,23 @@ noinst_LTLIBRARIES = libva_x11.la
libva_x11includedir = ${includedir}/va
libva_x11include_HEADERS = va_dri.h va_dri2.h va_dricommon.h
-libva_x11_la_SOURCES = va_x11.c va_dri.c va_dri2.c va_dricommon.c dri2_util.c dri1_util.c va_nvctrl.c libdrm_glue.c
+libva_x11_la_SOURCES = \
+ dri1_util.c \
+ dri2_util.c \
+ libdrm_glue.c \
+ va_dri.c \
+ va_dri2.c \
+ va_dricommon.c \
+ va_fglext.c \
+ va_nvctrl.c \
+ va_x11.c \
+ $(NULL)
-EXTRA_DIST = va_dristr.h va_dri2str.h va_dri2tokens.h va_nvctrl.h libdrm_glue.h
+EXTRA_DIST = \
+ libdrm_glue.h \
+ va_dri2str.h \
+ va_dri2tokens.h \
+ va_dristr.h \
+ va_fglext.h \
+ va_nvctrl.h \
+ $(NULL)
diff --git a/va/x11/va_fglext.c b/va/x11/va_fglext.c
new file mode 100644
index 0000000..add1f28
--- /dev/null
+++ b/va/x11/va_fglext.c
@@ -0,0 +1,175 @@
+/*
+ * Copyright (C) 2009 Splitted-Desktop Systems. 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 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.
+ */
+
+#define _GNU_SOURCE 1
+#include <string.h>
+
+#define NEED_REPLIES
+#include <stdlib.h>
+#include <X11/Xlibint.h>
+#include <X11/Xutil.h>
+#include <X11/extensions/Xext.h>
+#include <X11/extensions/extutil.h>
+#include "va_fglext.h"
+
+#define ATIFGL_EXTENSION_NAME "ATIFGLEXTENSION"
+#define ATIFGL_EXTENSION_EVENTS 0
+
+typedef struct _FGLGetDriverData {
+ CARD8 reqType;
+ CARD8 fireglReqType;
+ CARD16 length B16;
+ CARD32 screen B32;
+ CARD16 size B16;
+ CARD16 pad1;
+} xFGLGetDriverDataReq;
+#define sz_xFGLGetDriverDataReq sizeof(xFGLGetDriverDataReq)
+
+typedef struct {
+ BYTE type;
+ BYTE pad1;
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ CARD8 majorVersion;
+ CARD8 minorVersion;
+ CARD8 patchlevel B16;
+ CARD8 BIOSVersionMajor;
+ CARD8 BIOSVersionMinor;
+ CARD8 HasSecondary;
+ CARD16 pad3 B16;
+ CARD32 pad4 B32;
+ CARD32 pad5 B32;
+ CARD32 pad6 B32;
+ CARD32 pad7 B32;
+ // ... there are more fields
+} xFGLGetDriverDataReply;
+#define sz_xFGLGetDriverDataReply sizeof(xFGLGetDriverDataReply)
+
+#define X_FGLGetDriverData 0
+
+static XExtensionInfo _fglext_ext_info_data;
+static XExtensionInfo *fglext_ext_info = &_fglext_ext_info_data;
+static /* const */ char *fglext_extension_name = ATIFGL_EXTENSION_NAME;
+
+#define xFGLCheckExtension(dpy,i,val) \
+ XextCheckExtension (dpy, i, fglext_extension_name, val)
+
+static int close_display();
+static /* const */ XExtensionHooks fglext_extension_hooks = {
+ NULL, /* create_gc */
+ NULL, /* copy_gc */
+ NULL, /* flush_gc */
+ NULL, /* free_gc */
+ NULL, /* create_font */
+ NULL, /* free_font */
+ close_display, /* close_display */
+ NULL, /* wire_to_event */
+ NULL, /* event_to_wire */
+ NULL, /* error */
+ NULL, /* error_string */
+};
+
+static XEXT_GENERATE_FIND_DISPLAY (find_display, fglext_ext_info,
+ fglext_extension_name,
+ &fglext_extension_hooks,
+ ATIFGL_EXTENSION_EVENTS, NULL)
+
+static XEXT_GENERATE_CLOSE_DISPLAY (close_display, fglext_ext_info)
+
+Bool VA_FGLEXTQueryDirectRenderingCapable( Display *dpy, int screen,
+ Bool *isCapable )
+{
+ char **extensions;
+ int i, n_extensions, has_fglext = 0, has_fglrxdri = 0;
+
+ if (isCapable)
+ *isCapable = False;
+
+ extensions = XListExtensions(dpy, &n_extensions);
+ if (!extensions)
+ return False;
+
+ for (i = 0; i < n_extensions; i++) {
+ if (strcmp(extensions[i], ATIFGL_EXTENSION_NAME) == 0)
+ has_fglext = 1;
+ if (strcmp(extensions[i], "ATIFGLRXDRI") == 0)
+ has_fglrxdri = 1;
+ }
+ XFreeExtensionList(extensions);
+
+ if (!has_fglext)
+ return False;
+
+ if (isCapable)
+ *isCapable = has_fglrxdri;
+
+ return True;
+}
+
+Bool VA_FGLEXTGetClientDriverName( Display *dpy, int screen,
+ int *ddxDriverMajorVersion, int *ddxDriverMinorVersion,
+ int *ddxDriverPatchVersion, char **clientDriverName )
+{
+ XExtDisplayInfo *info = find_display (dpy);
+ xFGLGetDriverDataReply rep;
+ xFGLGetDriverDataReq *req;
+
+ if (ddxDriverMajorVersion)
+ *ddxDriverMajorVersion = 0;
+ if (ddxDriverMinorVersion)
+ *ddxDriverMinorVersion = 0;
+ if (ddxDriverPatchVersion)
+ *ddxDriverPatchVersion = 0;
+ if (clientDriverName)
+ *clientDriverName = NULL;
+
+ if(!XextHasExtension(info))
+ return False;
+
+ xFGLCheckExtension (dpy, info, False);
+
+ LockDisplay (dpy);
+ GetReq (FGLGetDriverData, req);
+ req->reqType = info->codes->major_opcode;
+ req->fireglReqType = X_FGLGetDriverData;
+ req->screen = screen;
+ if (!_XReply (dpy, (xReply *) &rep, 0, xTrue)) {
+ UnlockDisplay (dpy);
+ SyncHandle ();
+ return False;
+ }
+ UnlockDisplay (dpy);
+ SyncHandle ();
+
+ if (ddxDriverMajorVersion)
+ *ddxDriverMajorVersion = rep.majorVersion;
+ if (ddxDriverMinorVersion)
+ *ddxDriverMinorVersion = rep.minorVersion;
+ if (ddxDriverPatchVersion)
+ *ddxDriverPatchVersion = rep.patchlevel;
+ if (clientDriverName)
+ *clientDriverName = strdup("fglrx");
+
+ return True;
+}
diff --git a/va/x11/va_fglext.h b/va/x11/va_fglext.h
new file mode 100644
index 0000000..f2d87c3
--- /dev/null
+++ b/va/x11/va_fglext.h
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2009 Splitted-Desktop Systems. 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 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.
+ */
+
+#ifndef VA_FGLEXTLIB_H
+#define VA_FGLEXTLIB_H
+
+#include <X11/Xlib.h>
+
+Bool VA_FGLEXTQueryDirectRenderingCapable( Display *dpy, int screen,
+ Bool *isCapable );
+
+Bool VA_FGLEXTGetClientDriverName( Display *dpy, int screen,
+ int *ddxDriverMajorVersion, int *ddxDriverMinorVersion,
+ int *ddxDriverPatchVersion, char **clientDriverName );
+
+#endif /* VA_FGLEXTLIB_H */
diff --git a/va/x11/va_x11.c b/va/x11/va_x11.c
index 1216093..71cc36f 100644
--- a/va/x11/va_x11.c
+++ b/va/x11/va_x11.c
@@ -31,6 +31,7 @@
#include "va_dri2.h"
#include "va_dricommon.h"
#include "va_nvctrl.h"
+#include "va_fglext.h"
#include "libdrm_glue.h"
#include <stdio.h>
#include <stdlib.h>
@@ -133,6 +134,29 @@ static VAStatus va_NVCTRL_GetDriverName (
return VA_STATUS_SUCCESS;
}
+static VAStatus va_FGLEXT_GetDriverName(
+ VADisplayContextP pDisplayContext,
+ char **driver_name
+)
+{
+ VADriverContextP ctx = pDisplayContext->pDriverContext;
+ int direct_capable, driver_major, driver_minor, driver_patch;
+ Bool result;
+
+ result = VA_FGLEXTQueryDirectRenderingCapable(ctx->x11_dpy, ctx->x11_screen,
+ &direct_capable);
+ if (!result || !direct_capable)
+ return VA_STATUS_ERROR_UNKNOWN;
+
+ result = VA_FGLEXTGetClientDriverName(ctx->x11_dpy, ctx->x11_screen,
+ &driver_major, &driver_minor,
+ &driver_patch, driver_name);
+ if (!result)
+ return VA_STATUS_ERROR_UNKNOWN;
+
+ return VA_STATUS_SUCCESS;
+}
+
static VAStatus va_DisplayContextGetDriverName (
VADisplayContextP pDisplayContext,
char **driver_name
@@ -148,7 +172,8 @@ static VAStatus va_DisplayContextGetDriverName (
vaStatus = va_DRIGetDriverName(pDisplayContext, driver_name);
if (vaStatus != VA_STATUS_SUCCESS)
vaStatus = va_NVCTRL_GetDriverName(pDisplayContext, driver_name);
-
+ if (vaStatus != VA_STATUS_SUCCESS)
+ vaStatus = va_FGLEXT_GetDriverName(pDisplayContext, driver_name);
return vaStatus;
}

View File

@ -0,0 +1,96 @@
commit 1821919f68487c5e4fec33bd242208f49cb58c1e
Author: Gwenole Beauchesne <gbeauchesne@splitted-desktop.com>
Date: Wed Jun 24 11:32:40 2009 +0000
Explicit API extensions from SDS.
diff --git a/configure.ac b/configure.ac
index ebe5df6..95cf992 100644
--- a/configure.ac
+++ b/configure.ac
@@ -28,6 +28,9 @@ m4_define([libva_micro_version], [0])
m4_define([libva_version],
[libva_major_version.libva_minor_version.libva_micro_version])
+# increase this number for each API change
+m4_define([libva_sds_version], [6])
+
# if the library source code has changed, increment revision
m4_define([libva_lt_revision], [1])
# if any interface was added/removed/changed, then inc current, reset revision
@@ -52,11 +55,14 @@ AC_SUBST(LIBVA_MINOR_VERSION)
AC_SUBST(LIBVA_MICRO_VERSION)
AC_SUBST(LIBVA_VERSION)
+LIBVA_SDS_VERSION=libva_sds_version
+AC_SUBST(LIBVA_SDS_VERSION)
+
LIBVA_LT_CURRENT=libva_lt_current
LIBVA_LT_REV=libva_lt_revision
LIBVA_LT_AGE=libva_lt_age
LIBVA_LT_VERSION="$LIBVA_LT_CURRENT:$LIBVA_LT_REV:$LIBVA_LT_AGE"
-LIBVA_LT_LDFLAGS="-version-info $LIBVA_LT_VERSION"
+LIBVA_LT_LDFLAGS="-version-info $LIBVA_LT_VERSION -release $LIBVA_VERSION.$LIBVA_SDS_VERSION"
AC_SUBST(LIBVA_LT_VERSION)
AC_SUBST(LIBVA_LT_LDFLAGS)
diff --git a/libva.pc.in b/libva.pc.in
index 60f1483..0b37945 100644
--- a/libva.pc.in
+++ b/libva.pc.in
@@ -3,6 +3,7 @@ exec_prefix=@exec_prefix@
libdir=@libdir@
includedir=@includedir@
driverdir=@LIBVA_DRIVERS_PATH@
+sdsversion=@LIBVA_SDS_VERSION@
Name: libva
Description: Userspace Video Acceleration (VA) core interface
diff --git a/va/va.c b/va/va.c
index fd68481..0d208d8 100644
--- a/va/va.c
+++ b/va/va.c
@@ -162,7 +162,15 @@ static VAStatus va_openDriver(VADisplay dpy, char *driver_name)
else
{
VADriverInit init_func;
- init_func = (VADriverInit) dlsym(handle, DRIVER_INIT_FUNC);
+ char driver_init_func_sds[32];
+ /* First, try SDS extensions (VDPAU and XvBA backends) */
+ sprintf(driver_init_func_sds, "%s_%d_sds%d",
+ DRIVER_INIT_FUNC, VA_MICRO_VERSION, VA_SDS_VERSION);
+ init_func = (VADriverInit) dlsym(handle, driver_init_func_sds);
+ if (!init_func)
+ {
+ init_func = (VADriverInit) dlsym(handle, DRIVER_INIT_FUNC);
+ }
if (!init_func)
{
va_errorMessage("%s has no function %s\n", driver_path, DRIVER_INIT_FUNC);
diff --git a/va/va_version.h.in b/va/va_version.h.in
index c9ea97a..197c482 100644
--- a/va/va_version.h.in
+++ b/va/va_version.h.in
@@ -47,6 +47,13 @@
#define VA_MICRO_VERSION (@LIBVA_MICRO_VERSION@)
/**
+ * VA_SDS_VERSION:
+ *
+ * The version of the SDS API extensions to the VA library
+ */
+#define VA_SDS_VERSION (@LIBVA_SDS_VERSION@)
+
+/**
* VA_VERSION:
*
* The full version of the VA library, like 1.2.3
@@ -59,7 +66,7 @@
* The full version of the VA library, in string form (suited for
* string concatenation)
*/
-#define VA_VERSION_S "@LIBVA_VERSION@"
+#define VA_VERSION_S "@LIBVA_VERSION@-sds@LIBVA_SDS_VERSION@"
/**
* VA_VERSION_HEX:

View File

@ -0,0 +1,202 @@
commit e69075435675d356c7c9b4ff734a60e8cd031604
Author: Gwenole Beauchesne <gbeauchesne@splitted-desktop.com>
Date: Mon Mar 8 09:44:25 2010 +0100
Add OpenGL extensions (v3) and generic implementation with TFP and FBO.
diff --git a/Makefile.am b/Makefile.am
index 459660b..e75a2db 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -32,10 +32,13 @@ endif
pcfiles = libva.pc
pcfiles += libva-x11.pc
+if USE_GLX
+pcfiles += libva-glx.pc
+endif
pkgconfigdir = @pkgconfigdir@
pkgconfig_DATA = $(pcfiles)
-EXTRA_DIST = libva.pc.in libva-x11.pc.in
+EXTRA_DIST = libva.pc.in libva-x11.pc.in libva-glx.pc.in
CLEANFILES = $(pcfiles)
diff --git a/configure.ac b/configure.ac
index 95cf992..86366e9 100644
--- a/configure.ac
+++ b/configure.ac
@@ -66,6 +66,11 @@ LIBVA_LT_LDFLAGS="-version-info $LIBVA_LT_VERSION -release $LIBVA_VERSION.$LIBVA
AC_SUBST(LIBVA_LT_VERSION)
AC_SUBST(LIBVA_LT_LDFLAGS)
+AC_ARG_ENABLE(glx,
+ [AC_HELP_STRING([--enable-glx],
+ [build with OpenGL for X11 support])],
+ [], [enable_glx=yes])
+
AC_ARG_ENABLE(dummy-driver,
[AC_HELP_STRING([--enable-dummy-driver],
[build dummy video driver])],
@@ -130,6 +135,22 @@ fi
AC_DEFINE_UNQUOTED([ATTRIBUTE_HIDDEN], [$ATTRIBUTE_HIDDEN],
[Defined to __attribute__((visibility("hidden"))) when available])
+# Check for OpenGL (X11)
+USE_GLX="no"
+GL_DEPS_CFLAGS=""
+GL_DEPS_LIBS=""
+if test x$enable_glx = xyes; then
+ AC_CHECK_HEADERS([GL/gl.h])
+ AC_CHECK_HEADERS([GL/glx.h])
+ AC_CHECK_LIB(GL, glXCreateContext, [
+ USE_GLX="yes"
+ GL_DEPS_LIBS="-lX11 -lGL"
+ ])
+fi
+AC_SUBST(GL_DEPS_CFLAGS)
+AC_SUBST(GL_DEPS_LIBS)
+AM_CONDITIONAL(USE_GLX, test "$USE_GLX" = "yes")
+
# We only need the headers, we don't link against the DRM libraries
LIBVA_CFLAGS="$DRM_CFLAGS"
AC_SUBST(LIBVA_CFLAGS)
@@ -149,6 +170,7 @@ AC_OUTPUT([
va/Makefile
va/va_version.h
va/x11/Makefile
+ va/glx/Makefile
dummy_drv_video/Makefile
i965_drv_video/Makefile
i965_drv_video/shaders/Makefile
@@ -162,5 +184,6 @@ AC_OUTPUT([
test/encode/Makefile
libva.pc
libva-x11.pc
+ libva-glx.pc
])
diff --git a/libva-glx.pc.in b/libva-glx.pc.in
new file mode 100644
index 0000000..2019915
--- /dev/null
+++ b/libva-glx.pc.in
@@ -0,0 +1,12 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+display=glx
+
+Name: libva-${display}
+Description: Userspace Video Acceleration (VA) ${display} interface
+Requires: libva
+Version: @PACKAGE_VERSION@
+Libs: -L${libdir} -lva-${display}
+Cflags: -I${includedir}
diff --git a/va/Makefile.am b/va/Makefile.am
index 99f6bbf..ebff3d5 100644
--- a/va/Makefile.am
+++ b/va/Makefile.am
@@ -27,9 +27,17 @@ INCLUDES = \
LDADD = \
$(LIBVA_LT_LDFLAGS)
-lib_LTLIBRARIES = \
- libva.la \
- libva-x11.la
+libva_x11_backend = libva-x11.la
+libva_x11_backenddir = x11
+if USE_GLX
+libva_glx_backend = libva-glx.la
+libva_glx_backenddir = glx
+else
+libva_glx_backend =
+libva_glx_backenddir =
+endif
+
+lib_LTLIBRARIES = libva.la $(libva_x11_backend) $(libva_glx_backend)
libva_ladir = $(libdir)
libva_la_LDFLAGS = $(LDADD) -no-undefined
@@ -40,7 +48,14 @@ libva_x11_la_LIBADD = $(libvacorelib) x11/libva_x11.la $(LIBVA_LIBS) $(X11_LIBS
libva_x11_la_LDFLAGS = $(LDADD)
libva_x11_la_DEPENDENCIES = $(libvacorelib) x11/libva_x11.la
-SUBDIRS = x11
+libva_glx_la_SOURCES =
+libva_glx_la_LIBADD = $(libvacorelib) glx/libva_glx.la libva-x11.la $(GL_DEPS_LIBS) -ldl
+libva_glx_la_LDFLAGS = $(LDADD)
+libva_glx_la_DEPENDENCIES = $(libvacorelib) glx/libva_glx.la libva-x11.la
+
+SUBDIRS = $(libva_x11_backenddir) $(libva_glx_backenddir)
+
+DIST_SUBDIRS = x11 glx
libva_la_SOURCES = va.c va_crystalhd.c
diff --git a/va/glx/Makefile.am b/va/glx/Makefile.am
new file mode 100644
index 0000000..337f34e
diff --git a/va/glx/va_backend_glx.h b/va/glx/va_backend_glx.h
new file mode 100644
index 0000000..d110485
diff --git a/va/glx/va_glx.c b/va/glx/va_glx.c
new file mode 100644
index 0000000..ec50a0e
diff --git a/va/glx/va_glx.h b/va/glx/va_glx.h
new file mode 100644
index 0000000..1a0624d
diff --git a/va/glx/va_glx_impl.c b/va/glx/va_glx_impl.c
new file mode 100644
index 0000000..b0f24bb
diff --git a/va/glx/va_glx_impl.h b/va/glx/va_glx_impl.h
new file mode 100644
index 0000000..977bfcc
diff --git a/va/glx/va_glx_private.h b/va/glx/va_glx_private.h
new file mode 100644
index 0000000..d416729
diff --git a/va/va_backend.h b/va/va_backend.h
index ff86744..06fef7f 100644
--- a/va/va_backend.h
+++ b/va/va_backend.h
@@ -365,6 +365,9 @@ struct VADriverVTable
unsigned int *chroma_v_offset,
void **buffer
);
+
+ /* Optional: GLX support hooks */
+ struct VADriverVTableGLX *glx;
};
struct VADriverContext
@@ -387,6 +390,7 @@ struct VADriverContext
void *handle; /* dlopen handle */
void *dri_state;
+ void *glx; /* opaque for GLX code */
};
#define VA_DISPLAY_MAGIC 0x56414430 /* VAD0 */
@@ -409,6 +413,8 @@ struct VADisplayContext
VADisplayContextP ctx,
char **driver_name
);
+
+ void *opaque; /* opaque for display extensions (e.g. GLX) */
};
typedef VAStatus (*VADriverInit) (
diff --git a/va/x11/va_x11.c b/va/x11/va_x11.c
index 71cc36f..6826b31 100644
--- a/va/x11/va_x11.c
+++ b/va/x11/va_x11.c
@@ -217,6 +217,7 @@ VADisplay vaGetDisplay (
pDisplayContext->vaIsValid = va_DisplayContextIsValid;
pDisplayContext->vaDestroy = va_DisplayContextDestroy;
pDisplayContext->vaGetDriverName = va_DisplayContextGetDriverName;
+ pDisplayContext->opaque = NULL;
pDisplayContexts = pDisplayContext;
pDriverContext->dri_state = dri_state;
dpy = (VADisplay)pDisplayContext;

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,143 @@
commit 94db34ae392a7787afac9087799bb0421c844b83
Author: Gwenole Beauchesne <gbeauchesne@splitted-desktop.com>
Date: Wed Jun 24 11:40:56 2009 +0000
Add compatibility layer with original VA-API 0.29 to 0.31.
diff --git a/va/Makefile.am b/va/Makefile.am
index ebff3d5..1752526 100644
--- a/va/Makefile.am
+++ b/va/Makefile.am
@@ -57,7 +57,7 @@ SUBDIRS = $(libva_x11_backenddir) $(libva_glx_backenddir)
DIST_SUBDIRS = x11 glx
-libva_la_SOURCES = va.c va_crystalhd.c
+libva_la_SOURCES = va.c va_crystalhd.c va_compat.c
libvaincludedir = ${includedir}/va
libvainclude_HEADERS = va.h va_x11.h va_backend.h va_version.h
@@ -67,4 +67,8 @@ DISTCLEANFILES = \
EXTRA_DIST = \
va_version.h.in \
- va_crystalhd.h
+ va_crystalhd.h \
+ va_compat.h \
+ va_compat_template.h
+
+va_compat.c: va_compat_template.h
diff --git a/va/va.c b/va/va.c
index 0d208d8..ad201fa 100644
--- a/va/va.c
+++ b/va/va.c
@@ -28,6 +28,7 @@
#include "va.h"
#include "va_backend.h"
#include "va_crystalhd.h"
+#include "va_compat.h"
#include <assert.h>
#include <stdarg.h>
@@ -39,6 +40,8 @@
#define DRIVER_INIT_FUNC "__vaDriverInit_0_31"
+#define DRIVER_INIT_FUNC_0_29 "__vaDriverInit_0_29"
+#define DRIVER_INIT_FUNC_0_30 "__vaDriverInit_0_30"
#define DRIVER_EXTENSION "_drv_video.so"
@@ -163,13 +166,24 @@ static VAStatus va_openDriver(VADisplay dpy, char *driver_name)
{
VADriverInit init_func;
char driver_init_func_sds[32];
+ int compat_version = 0;
/* First, try SDS extensions (VDPAU and XvBA backends) */
sprintf(driver_init_func_sds, "%s_%d_sds%d",
DRIVER_INIT_FUNC, VA_MICRO_VERSION, VA_SDS_VERSION);
init_func = (VADriverInit) dlsym(handle, driver_init_func_sds);
if (!init_func)
{
+ /* Otherwise, we need the compatibility layer for some buffers */
init_func = (VADriverInit) dlsym(handle, DRIVER_INIT_FUNC);
+ compat_version = VA_MINOR_VERSION;
+ if (!init_func) {
+ init_func = (VADriverInit) dlsym(handle, DRIVER_INIT_FUNC_0_29);
+ compat_version = 29;
+ }
+ if (!init_func) {
+ init_func = (VADriverInit) dlsym(handle, DRIVER_INIT_FUNC_0_30);
+ compat_version = 30;
+ }
}
if (!init_func)
{
@@ -178,7 +192,36 @@ static VAStatus va_openDriver(VADisplay dpy, char *driver_name)
}
else
{
- vaStatus = (*init_func)(ctx);
+ struct VADriverContext_0_29 ctx_0_29;
+ struct VADriverContext_0_30 ctx_0_30;
+ void *compat_ctx = NULL;
+
+ switch (compat_version) {
+ case 29:
+ compat_ctx = &ctx_0_29;
+ ctx_0_29.pDriverData = NULL;
+ ctx_0_29.x11_dpy = ctx->x11_dpy;
+ ctx_0_29.x11_screen = ctx->x11_screen;
+ break;
+ case 30:
+ compat_ctx = &ctx_0_30;
+ ctx_0_30.pDriverData = NULL;
+ ctx_0_30.x11_dpy = ctx->x11_dpy;
+ ctx_0_30.x11_screen = ctx->x11_screen;
+ break;
+ case VA_MINOR_VERSION:
+ compat_ctx = ctx;
+ break;
+ default:
+ ASSERT(compat_version == 0);
+ vaStatus = VA_STATUS_ERROR_UNKNOWN;
+ break;
+ }
+
+ vaStatus = (*init_func)(compat_ctx ? compat_ctx : ctx);
+
+ if (VA_STATUS_SUCCESS == vaStatus)
+ vaStatus = va_compat_init(dpy, compat_version, compat_ctx);
if (VA_STATUS_SUCCESS == vaStatus)
{
@@ -399,6 +442,8 @@ VAStatus vaTerminate (
old_ctx->handle = NULL;
}
+ va_compat_fini(dpy);
+
if (VA_STATUS_SUCCESS == vaStatus)
pDisplayContext->vaDestroy(pDisplayContext);
return vaStatus;
diff --git a/va/va_backend.h b/va/va_backend.h
index 06fef7f..9cf8911 100644
--- a/va/va_backend.h
+++ b/va/va_backend.h
@@ -391,6 +391,7 @@ struct VADriverContext
void *dri_state;
void *glx; /* opaque for GLX code */
+ void *compat; /* opaque for compat code */
};
#define VA_DISPLAY_MAGIC 0x56414430 /* VAD0 */
diff --git a/va/va_compat.c b/va/va_compat.c
new file mode 100644
index 0000000..af43188
diff --git a/va/va_compat.h b/va/va_compat.h
new file mode 100644
index 0000000..2c9d801
diff --git a/va/va_compat_template.h b/va/va_compat_template.h
new file mode 100644
index 0000000..18349de

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,183 @@
commit 23dc87f7a37ea245e9797b947df6fbd3c911dd76
Author: Gwenole Beauchesne <gbeauchesne@splitted-desktop.com>
Date: Fri Oct 16 12:39:06 2009 +0000
Fix compatibility with older programs linked against libva.so.0.
diff --git a/va/Makefile.am b/va/Makefile.am
index 1752526..f92ba8a 100644
--- a/va/Makefile.am
+++ b/va/Makefile.am
@@ -72,3 +72,8 @@ EXTRA_DIST = \
va_compat_template.h
va_compat.c: va_compat_template.h
+
+lib_LTLIBRARIES += libva-compat.la
+libva_compat_la_SOURCES = va_compat_lib.c
+libva_compat_la_LIBADD = libva-x11.la -ldl
+libva_compat_la_DEPENDENCIES = libva-x11.la
diff --git a/va/va_compat_lib.c b/va/va_compat_lib.c
new file mode 100644
index 0000000..b7e9ea5
--- /dev/null
+++ b/va/va_compat_lib.c
@@ -0,0 +1,158 @@
+/*
+ * Copyright (C) 2009 Splitted-Desktop Systems. 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 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.
+ */
+
+#define _GNU_SOURCE 1
+#include <dlfcn.h>
+#include <assert.h>
+#include <stddef.h>
+
+typedef void *VADisplay;
+typedef int VAStatus;
+typedef unsigned int VAGenericID;
+typedef VAGenericID VAContextID;
+typedef VAGenericID VASurfaceID;
+typedef VAGenericID VAImageID;
+typedef VAGenericID VASubpictureID;
+
+#define PREPARE_FUNC(NAME, RET, ARGS) \
+ static RET (*lib_##NAME) ARGS; \
+ if (lib_##NAME == NULL) \
+ lib_##NAME = dlsym(RTLD_NEXT, #NAME); \
+ assert(lib_##NAME != NULL)
+
+VAStatus
+vaSyncSurface(
+ VADisplay dpy,
+ VAContextID context,
+ VASurfaceID render_target
+)
+{
+ PREPARE_FUNC(vaSyncSurface, VAStatus, (VADisplay, VASurfaceID));
+
+ return lib_vaSyncSurface(dpy, render_target);
+}
+
+VAStatus
+vaPutImage(
+ VADisplay dpy,
+ VASurfaceID surface,
+ VAImageID image,
+ int src_x,
+ int src_y,
+ unsigned int width,
+ unsigned int height,
+ int dest_x,
+ int dest_y
+)
+{
+ PREPARE_FUNC(vaPutImage, VAStatus, (VADisplay, VASurfaceID, VAImageID,
+ int, int, unsigned int, unsigned int,
+ int, int, unsigned int, unsigned int));
+
+ return lib_vaPutImage(dpy, surface, image,
+ src_x, src_y, width, height,
+ dest_x, dest_y, width, height);
+}
+
+VAStatus
+vaPutImage2(
+ VADisplay dpy,
+ VASurfaceID surface,
+ VAImageID image,
+ int src_x,
+ int src_y,
+ unsigned int src_width,
+ unsigned int src_height,
+ int dest_x,
+ int dest_y,
+ unsigned int dest_width,
+ unsigned int dest_height
+)
+{
+ PREPARE_FUNC(vaPutImage, VAStatus, (VADisplay, VASurfaceID, VAImageID,
+ int, int, unsigned int, unsigned int,
+ int, int, unsigned int, unsigned int));
+
+ return lib_vaPutImage(dpy, surface, image,
+ src_x, src_y, src_width, src_height,
+ dest_x, dest_y, dest_width, dest_height);
+}
+
+VAStatus
+vaAssociateSubpicture(
+ VADisplay dpy,
+ VASubpictureID subpicture,
+ VASurfaceID *target_surfaces,
+ int num_surfaces,
+ short src_x,
+ short src_y,
+ short dest_x,
+ short dest_y,
+ unsigned short width,
+ unsigned short height,
+ unsigned int flags
+)
+{
+ PREPARE_FUNC(vaAssociateSubpicture,
+ VAStatus, (VADisplay, VASubpictureID, VASurfaceID *, int,
+ short, short, unsigned short, unsigned short,
+ short, short, unsigned short, unsigned short,
+ unsigned int));
+
+ return lib_vaAssociateSubpicture(dpy, subpicture,
+ target_surfaces, num_surfaces,
+ src_x, src_y, width, height,
+ dest_x, dest_y, width, height,
+ flags);
+}
+
+VAStatus
+vaAssociateSubpicture2(
+ VADisplay dpy,
+ VASubpictureID subpicture,
+ VASurfaceID *target_surfaces,
+ int num_surfaces,
+ short src_x,
+ short src_y,
+ unsigned short src_width,
+ unsigned short src_height,
+ short dest_x,
+ short dest_y,
+ unsigned short dest_width,
+ unsigned short dest_height,
+ unsigned int flags
+)
+{
+ PREPARE_FUNC(vaAssociateSubpicture,
+ VAStatus, (VADisplay, VASubpictureID, VASurfaceID *, int,
+ short, short, unsigned short, unsigned short,
+ short, short, unsigned short, unsigned short,
+ unsigned int));
+
+ return lib_vaAssociateSubpicture(dpy, subpicture,
+ target_surfaces, num_surfaces,
+ src_x, src_y, src_width, src_height,
+ dest_x, dest_y, dest_width, dest_height,
+ flags);
+}

File diff suppressed because it is too large Load Diff

View File

@ -1 +1 @@
http://www.splitted-desktop.com/~gbeauchesne/libva/libva_0.31.0-1+sds9.tar.gz
http://www.splitted-desktop.com/~gbeauchesne/libva/libva_0.31.0-1+sds12.tar.gz

View File

@ -1,6 +1,6 @@
# start Avahi Daemon
#
# runlevels: openelec, text
# runlevels: openelec, textmode
(
progress "Starting Avahi Daemon"

View File

@ -16,6 +16,7 @@ cd $PKG_BUILD
--prefix=/usr \
--sysconfdir=/etc \
--localstatedir=/var \
--disable-debug \
--disable-static \
--enable-shared \
--enable-threads \
@ -28,8 +29,7 @@ cd $PKG_BUILD
--disable-resolvconf \
--enable-loopback \
--enable-dnsproxy \
--disable-hso \
--disable-mbm \
--enable-portal \
--disable-iwmx \
--disable-iospm \
--disable-polkit \
@ -43,7 +43,7 @@ cd $PKG_BUILD
--disable-gtk-doc \
--disable-openconnect \
--disable-google \
--disable-moblin \
--enable-meego \
--disable-test \
--disable-capng \

View File

@ -1,9 +1,11 @@
# start connman network manager
#
# runlevels: openelec, text
# runlevels: openelec, textmode
progress "Starting Connection Manager"
$IONICE mkdir -p /var/run
$IONICE touch /var/run/resolv.conf
connmand
udhcpc > /dev/null 2>&1 &

View File

@ -2,7 +2,6 @@
. config/options
#$SCRIPTS/install hal
$SCRIPTS/install dbus
$SCRIPTS/install udev
#$SCRIPTS/install bluez
@ -15,13 +14,13 @@ add_user system x 430 430 "service" "/var/run/connman" "/bin/sh"
add_group system 430
mkdir -p $INSTALL/usr/sbin
cp -PR $PKG_BUILD/src/connmand $INSTALL/usr/sbin
cp -P $PKG_BUILD/src/connmand $INSTALL/usr/sbin
mkdir -p $INSTALL/usr/lib/connman/plugins
cp -PR $PKG_BUILD/plugins/.libs/*.so $INSTALL/usr/lib/connman/plugins
cp -P $PKG_BUILD/plugins/.libs/*.so $INSTALL/usr/lib/connman/plugins
mkdir -p $INSTALL/usr/lib/connman/scripts
cp -PR $PKG_BUILD/scripts/udhcpc-script $INSTALL/usr/lib/connman/scripts
cp -P $PKG_BUILD/scripts/udhcpc-script $INSTALL/usr/lib/connman/scripts
mkdir -p $INSTALL/etc/dbus-1/system.d
cp -PR $PKG_BUILD/src/connman-dbus.conf $INSTALL/etc/dbus-1/system.d
cp -P $PKG_BUILD/src/connman-dbus.conf $INSTALL/etc/dbus-1/system.d

View File

@ -1 +1 @@
http://www.kernel.org/pub/linux/network/connman/connman-0.48.tar.bz2
http://www.kernel.org/pub/linux/network/connman/connman-0.51.tar.bz2

View File

@ -1,22 +1,22 @@
# start ssh server
#
# runlevels: openelec, text
# runlevels: openelec, textmode
(
# Check for the Dropbear RSA key
if [ ! -f /etc/dropbear/dropbear_rsa_host_key ] ; then
if [ ! -f /storage/.cache/dropbear/dropbear_rsa_host_key ] ; then
progress "SSH: generating rsa key"
$IONICE mkdir -p /etc/dropbear
dropbearkey -t rsa -f /etc/dropbear/dropbear_rsa_host_key > /dev/null 2>&1
$IONICE mkdir -p /storage/.cache/dropbear
dropbearkey -t rsa -f /storage/.cache/dropbear/dropbear_rsa_host_key > /dev/null 2>&1
fi
# Check for the Dropbear DSS key
if [ ! -f /etc/dropbear/dropbear_dss_host_key ] ; then
if [ ! -f /storage/.cache/dropbear/dropbear_dss_host_key ] ; then
progress "SSH: generating dsa key"
$IONICE mkdir -p /etc/dropbear
dropbearkey -t dss -f /etc/dropbear/dropbear_dss_host_key > /dev/null 2>&1
$IONICE mkdir -p /storage/.cache/dropbear
dropbearkey -t dss -f /storage/.cache/dropbear/dropbear_dss_host_key > /dev/null 2>&1
fi
progress "Starting SSH Server"

View File

@ -13,5 +13,5 @@ mkdir -p $INSTALL/usr/bin
cp -PR $PKG_BUILD/dropbearkey $INSTALL/usr/bin
cp -PR $PKG_BUILD/scp $INSTALL/usr/bin
mkdir -p $INSTALL/usr/config/dropbear
ln -s /storage/.config/dropbear $INSTALL/etc/dropbear
mkdir -p $INSTALL/etc
ln -s /storage/.cache/dropbear $INSTALL/etc/dropbear

View File

@ -4,6 +4,7 @@
$SCRIPTS/build toolchain
$SCRIPTS/build libiconv
$SCRIPTS/build avahi
export samba_cv_CC_NEGATIVE_ENUM_VALUES=no

View File

@ -0,0 +1,75 @@
[global]
server string = OpenELEC.tv Mediacenter(%i)
workgroup = WORKGROUP
netbios name = openelec
security = share
guest account = root
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
wins support = no
syslog only = yes
# here you can add a writable share of a disk under /storage
[Update]
path = /storage/.update
available = yes
browsable = yes
public = yes
writable = yes
root preexec = mkdir -p /storage/.update
[Videos]
path = /storage/videos
available = yes
browsable = yes
public = yes
writable = yes
root preexec = mkdir -p /storage/videos
[Music]
path = /storage/music
available = yes
browsable = yes
public = yes
writable = yes
root preexec = mkdir -p /storage/music
[TV Shows]
path = /storage/tvshows
available = yes
browsable = yes
public = yes
writable = yes
root preexec = mkdir -p /storage/tvshows
[Downloads]
path = /storage/downloads
available = yes
browsable = yes
public = yes
writable = yes
root preexec = mkdir -p /storage/downloads
[Pictures]
path = /storage/pictures
available = yes
browsable = yes
public = yes
writable = yes
root preexec = mkdir -p /storage/pictures
[Configfiles]
path = /storage/.config
available = yes
browsable = yes
public = yes
writable = yes
root preexec = mkdir -p /storage/.config
[Screenshots]
path = /storage/screenshots
available = yes
browsable = yes
public = yes
writable = yes
root preexec = mkdir -p /storage/screenshots

View File

@ -1,26 +1,75 @@
[global]
server string = OpenELEC.tv Mediacenter(%i)
workgroup = WORKGROUP
netbios name = openelec
security = share
guest account = root
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
wins support = no
syslog only = yes
[Storage]
path = /storage
# here you can add a writable share of a disk under /storage
[Update]
path = /storage/.update
available = yes
browsable = yes
public = yes
writable = yes
root preexec = mkdir -p /storage/.update
# To add a writable share of a disk under /mnt uncomment and edit the
# following share declaration
# 'mydisk' is the disk name as seen by OpenELEC
;[mydisk]
; path = /mnt/mydisk
; available = yes
; browsable = yes
; public = yes
; writable = yes
; root preexec = /usr/bin/rw /mnt/mydisk
; root postexec = /usr/bin/ro /mnt/mydisk
[Videos]
path = /storage/videos
available = yes
browsable = yes
public = yes
writable = yes
root preexec = mkdir -p /storage/videos
[Music]
path = /storage/music
available = yes
browsable = yes
public = yes
writable = yes
root preexec = mkdir -p /storage/music
[TV Shows]
path = /storage/tvshows
available = yes
browsable = yes
public = yes
writable = yes
root preexec = mkdir -p /storage/tvshows
[Downloads]
path = /storage/downloads
available = yes
browsable = yes
public = yes
writable = yes
root preexec = mkdir -p /storage/downloads
[Pictures]
path = /storage/pictures
available = yes
browsable = yes
public = yes
writable = yes
root preexec = mkdir -p /storage/pictures
[Configfiles]
path = /storage/.config
available = yes
browsable = yes
public = yes
writable = yes
root preexec = mkdir -p /storage/.config
[Screenshots]
path = /storage/screenshots
available = yes
browsable = yes
public = yes
writable = yes
root preexec = mkdir -p /storage/screenshots

View File

@ -1,9 +1,20 @@
# start Samba Server
#
# runlevels: openelec, text
# runlevels: openelec, textmode
(
progress "Starting Samba server"
smbd -D > /dev/null 2>&1
SMB_USERCONF="/storage/.config/samba.conf"
SMB_DEFCONF="/etc/samba/smb.conf"
SMB_ARG="--daemon"
if [ -f $SMB_USERCONF ]; then
SMB_ARG="$SMB_ARG --configfile=$SMB_USERCONF"
else
SMB_ARG="$SMB_ARG --configfile=$SMB_DEFCONF"
fi
smbd $SMB_ARG > /dev/null 2>&1
)&

View File

@ -3,18 +3,22 @@
. config/options
$SCRIPTS/install libiconv
$SCRIPTS/install avahi
PKG_DIR=`find $PACKAGES -type d -name $1`
mkdir -p $INSTALL/usr/lib
cp -PR $PKG_BUILD/source3/bin/libsmbclient.so* $INSTALL/usr/lib
cp -PR $PKG_BUILD/source3/bin/libtalloc.so* $INSTALL/usr/lib
cp -PR $PKG_BUILD/source3/bin/libtdb.so* $INSTALL/usr/lib
cp -P $PKG_BUILD/source3/bin/libsmbclient.so* $INSTALL/usr/lib
cp -P $PKG_BUILD/source3/bin/libtalloc.so* $INSTALL/usr/lib
cp -P $PKG_BUILD/source3/bin/libtdb.so* $INSTALL/usr/lib
mkdir -p $INSTALL/usr/config
cp -P $PKG_DIR/config/samba.conf.sample $INSTALL/usr/config
if [ "$SAMBA_SERVER" = yes ]; then
mkdir -p $INSTALL/usr/bin
cp $PKG_BUILD/source3/bin/smbd $INSTALL/usr/bin
cp -P $PKG_BUILD/source3/bin/smbd $INSTALL/usr/bin
mkdir -p $INSTALL/etc/samba
cp $PKG_DIR/config/smb.conf $INSTALL/etc/samba
cp -P $PKG_DIR/config/smb.conf $INSTALL/etc/samba
fi

View File

@ -1,9 +1,11 @@
# Starting SABnzbd Newsgroup downloader daemon
#
# runlevels: openelec, text, debug
# runlevels: openelec, textmode
(
progress "Starting SABnzbd Newsgroup downloader daemon"
progress "Starting SABnzbd Newsgroup downloader daemon"
python /usr/share/SABnzbd/SABnzbd.py -d $SABNZBD_ARGS > /dev/null 2>&1
. /etc/sabnzbd.conf
python /usr/share/SABnzbd/SABnzbd.py -d $SABNZBD_ARGS > /dev/null 2>&1
)&

View File

@ -10,5 +10,10 @@ $SCRIPTS/install unrar
$SCRIPTS/install unzip
$SCRIPTS/install par2cmdline
PKG_DIR=`find $PACKAGES -type d -name $1`
mkdir -p $INSTALL/usr/share/$1
cp -PR $BUILD/$1*/* $INSTALL/usr/share/$1
cp -P $BUILD/$1*/* $INSTALL/usr/share/$1
mkdir -p $INSTALL/etc
cp -P $PKG_DIR/config/*.conf $INSTALL/etc

View File

@ -1 +1 @@
http://prdownloads.sourceforge.net/freetype/freetype-2.3.11.tar.bz2
http://prdownloads.sourceforge.net/freetype/freetype-2.3.12.tar.bz2

View File

@ -1,6 +1,6 @@
# start D-BUS daemon
#
# runlevels: openelec, text
# runlevels: openelec, textmode
(
progress "Setup ConsoleKit"

View File

@ -1,60 +0,0 @@
#!/bin/sh
. config/options
$SCRIPTS/install sg3_utils
$SCRIPTS/install udev
$SCRIPTS/install glib
$SCRIPTS/install dbus
$SCRIPTS/install dbus-glib
$SCRIPTS/install LVM2
$SCRIPTS/install parted
$SCRIPTS/install polkit
$SCRIPTS/install libatasmart
mkdir -p $INSTALL/etc/dbus-1/system.d
cp $PKG_BUILD/data/org.freedesktop.DeviceKit.Disks.conf $INSTALL/etc/dbus-1/system.d
mkdir -p $INSTALL/lib/udev
cp -PR $PKG_BUILD/src/devkit-disks-dm-export $INSTALL/lib/udev
cp -PR $PKG_BUILD/src/devkit-disks-part-id $INSTALL/lib/udev
cp -PR $PKG_BUILD/src/devkit-disks-probe-ata-smart $INSTALL/lib/udev
mkdir -p $INSTALL/lib/udev/rules.d
cp $PKG_BUILD/data/95-devkit-disks.rules $INSTALL/lib/udev/rules.d
#mkdir -p $INSTALL/sbin
# cp -PR $PKG_BUILD/tools/umount.devkit $INSTALL/sbin
mkdir -p $INSTALL/usr/bin
cp -PR $PKG_BUILD/tools/devkit-disks $INSTALL/usr/bin
mkdir -p $INSTALL/usr/lib/polkit-1/extensions
cp -PR $PKG_BUILD/src/.libs/*.so $INSTALL/usr/lib/polkit-1/extensions
mkdir -p $INSTALL/usr/lib/DeviceKit-disks
cp -PR $PKG_BUILD/src/devkit-disks-daemon $INSTALL/usr/lib/DeviceKit-disks
cp -PR $PKG_BUILD/src/devkit-disks-helper-ata-smart-collect $INSTALL/usr/lib/DeviceKit-disks
cp -PR $PKG_BUILD/src/devkit-disks-helper-ata-smart-selftest $INSTALL/usr/lib/DeviceKit-disks
cp -PR $PKG_BUILD/src/devkit-disks-helper-change-filesystem-label $INSTALL/usr/lib/DeviceKit-disks
# cp -PR $PKG_BUILD/src/devkit-disks-helper-change-luks-password $INSTALL/usr/lib/DeviceKit-disks
cp -PR $PKG_BUILD/src/devkit-disks-helper-create-partition $INSTALL/usr/lib/DeviceKit-disks
cp -PR $PKG_BUILD/src/devkit-disks-helper-create-partition-table $INSTALL/usr/lib/DeviceKit-disks
cp -PR $PKG_BUILD/src/devkit-disks-helper-delete-partition $INSTALL/usr/lib/DeviceKit-disks
cp -PR $PKG_BUILD/src/devkit-disks-helper-drive-detach $INSTALL/usr/lib/DeviceKit-disks
cp -PR $PKG_BUILD/src/devkit-disks-helper-drive-poll $INSTALL/usr/lib/DeviceKit-disks
cp -PR $PKG_BUILD/src/devkit-disks-helper-fstab-mounter $INSTALL/usr/lib/DeviceKit-disks
cp -PR $PKG_BUILD/src/devkit-disks-helper-linux-md-check $INSTALL/usr/lib/DeviceKit-disks
cp -PR $PKG_BUILD/src/devkit-disks-helper-linux-md-remove-component $INSTALL/usr/lib/DeviceKit-disks
cp -PR $PKG_BUILD/src/devkit-disks-helper-mkfs $INSTALL/usr/lib/DeviceKit-disks
cp -PR $PKG_BUILD/src/devkit-disks-helper-modify-partition $INSTALL/usr/lib/DeviceKit-disks
mkdir -p $INSTALL/usr/share/dbus-1/interfaces
cp -PR $PKG_BUILD/data/org.freedesktop.DeviceKit.Disks.Device.xml $INSTALL/usr/share/dbus-1/interfaces
cp -PR $PKG_BUILD/data/org.freedesktop.DeviceKit.Disks.xml $INSTALL/usr/share/dbus-1/interfaces
mkdir -p $INSTALL/usr/share/dbus-1/system-services
cp -PR $PKG_BUILD/data/org.freedesktop.DeviceKit.Disks.service $INSTALL/usr/share/dbus-1/system-services
mkdir -p $INSTALL/usr/share/polkit-1/actions
cp -PR $PKG_BUILD/policy/org.freedesktop.devicekit.disks.policy $INSTALL/usr/share/polkit-1/actions

View File

@ -1 +0,0 @@
http://hal.freedesktop.org/releases/DeviceKit-disks-009.tar.gz

View File

@ -21,7 +21,6 @@ ac_cv_func_malloc_0_nonnull=yes \
--enable-applib \
--enable-cmdlib \
--enable-pkgconfig \
--enable-driver \
--enable-fsadm \
--disable-dmeventd \
--disable-selinux \

View File

@ -26,6 +26,6 @@
}
# read config files
for config in `ls /etc/conf.d/`; do
. /etc/conf.d/$config
for config in `ls /etc/profile.d/`; do
. /etc/profile.d/$config
done

View File

@ -1,6 +1,6 @@
# start debug shell
#
# runlevels: openelec, text
# runlevels: openelec, textmode
TTY="3"
@ -12,7 +12,6 @@ if [ "$DEBUG" = "yes" ]; then
echo "## ...... switch with ctrl-alt-f$TTY ...... ##"
echo "###########################################"
# exec /bin/sh </dev/tty$TTY >/dev/tty$TTY 2>&1 &
exec /sbin/getty -n -l /bin/sh 38400 tty$TTY &
fi

View File

@ -1,7 +1,7 @@
#
# mounting needed filesystems
#
# runlevels: openelec, text
# runlevels: openelec, textmode
progress "mounting needed filesystems"

View File

@ -1,7 +1,7 @@
#
# make variable directory structure
#
# runlevels: openelec, text
# runlevels: openelec, textmode
progress "make variable directory structure"
$IONICE mkdir -p /var/log \

View File

@ -1,13 +1,8 @@
#
# copying config into storage
# copy userconfig and samples
#
# runlevels: openelec, text
progress "copying config into storage"
$IONICE mkdir -p $HOME/.config
for i in `ls /usr/config`; do
[ ! -f "$HOME/.config/$i" ] && cp -PR /usr/config/$i $HOME/.config
done
# runlevels: openelec, textmode
progress "copy userconfig and samples"
$IONICE mkdir -p /storage/.config
$IONICE cp -PR /usr/config/* /storage/.config

View File

@ -1,11 +1,7 @@
#
# start syslog daemon
#
# runlevels: openelec, text
HOSTNAME=`cat /etc/hostname`
export $HOSTNAME
# runlevels: openelec, textmode
# bring lo up, whether we have network card or not
progress "starting Loopback Network interface"
@ -14,6 +10,3 @@ export $HOSTNAME
# setup hostname
progress "Setup hostname"
echo $HOSTNAME > /proc/sys/kernel/hostname
# create /etc/hosts file, useful for gethostbyname(localhost)
echo -e "127.0.0.1\tlocalhost $HOSTNAME" > /var/run/hosts

View File

@ -1,7 +1,7 @@
#
# start syslog daemon
#
# runlevels: openelec, text
# runlevels: openelec, textmode
(
progress "Starting Syslog daemon"

View File

@ -1,6 +1,6 @@
# start the ACPI daemon subsystem
#
# runlevels: openelec, text
# runlevels: openelec, textmode
(
progress "Starting ACPI daemon"

View File

@ -1,6 +1,6 @@
# start text mode shell
#
# runlevels: text
# runlevels: textmode
TTY="1"
@ -11,6 +11,5 @@ echo "## ...... switch with ctrl-alt-f$TTY ...... ##"
echo "###########################################"
while true; do
# exec /bin/sh </dev/tty$TTY >/dev/tty$TTY 2>&1
exec /sbin/getty -n -l /bin/sh 38400 tty$TTY
done

View File

@ -22,15 +22,21 @@ USER_PWD="`$ROOT/$TOOLCHAIN/bin/cryptpw $USER_PASSWORD`"
mkdir -p $INSTALL/bin
ln -sf /bin/sh $INSTALL/bin/bash
mkdir -p $INSTALL/sbin
cp $PKG_DIR/scripts/init $INSTALL/sbin/
mkdir -p $INSTALL/etc
cp $PKG_DIR/config/sysconfig $INSTALL/etc
cp $PKG_DIR/config/sysconfig $INSTALL/etc/profile
cp $PKG_DIR/config/profile $INSTALL/etc
touch $INSTALL/etc/fstab
ln -sf /var/run/resolv.conf $INSTALL/etc/resolv.conf
ln -sf /var/run/hosts $INSTALL/etc/hosts
# create /etc/hostname
echo $HOSTNAME > $INSTALL/etc/hostname
# create /etc/hosts file, useful for gethostbyname(localhost)
echo -e "127.0.0.1\tlocalhost $HOSTNAME" > $INSTALL/etc/hosts
# create /etc/issue
echo $GREATING0 > $INSTALL/etc/issue
echo $GREATING1 >> $INSTALL/etc/issue
echo $GREATING2 >> $INSTALL/etc/issue
@ -40,10 +46,7 @@ USER_PWD="`$ROOT/$TOOLCHAIN/bin/cryptpw $USER_PASSWORD`"
mkdir -p $INSTALL/usr/share/udhcpc
cp $PKG_DIR/scripts/udhcp.script $INSTALL/usr/share/udhcpc/default.script
mkdir -p $INSTALL/sbin
cp $PKG_DIR/scripts/init $INSTALL/sbin/
# acpid specific
# acpid specific
mkdir -p $INSTALL/etc/acpi/PWRF
cp $PKG_DIR/scripts/acpi_powerbtn $INSTALL/etc/acpi/PWRF/00000080

View File

@ -0,0 +1,10 @@
################################################################################
# Core (Shell) environment variables.
#
# This file contains non-OpenELEC evironment variables as well as OpenELEC
# evironment variables that are not user defined.
################################################################################
CONFIG_CACHE="/storage/.cache"
export CONFIG_CACHE

View File

@ -0,0 +1,16 @@
################################################################################
# Core (Shell) environment variables.
#
# This file contains non-OpenELEC evironment variables as well as OpenELEC
# evironment variables that are not user defined.
################################################################################
# setting some Variables
if test "$FASTBOOT" = "yes"; then
IONICE="ionice -c 1 -n 0"
NICE_20="nice -n -20"
else
FASTBOOT=no
fi
export FASTBOOT

View File

@ -0,0 +1,10 @@
################################################################################
# Core (Shell) environment variables.
#
# This file contains non-OpenELEC evironment variables as well as OpenELEC
# evironment variables that are not user defined.
################################################################################
HOSTNAME=`cat /etc/hostname`
export HOSTNAME

Some files were not shown because too many files have changed in this diff Show More