2013-09-13, 19:23
checkmate1980:
To resolve the issues with support for AMD chipsets in Xbmc you can:
- Please start with reading the first post in this thread.
- Xbmc trunk does not support XvBA, which you want if you want to use Xbmc with fglrx, the reason for this: see below.
- fglrx vdpau is broken, only AMD can fix this. Don't use it.
- XvBA in fglrx 13.8 is broken, only AMD can fix this. Don't use it.
- Actually, XvBA in all fglrx versions in portage are broken, except one, only AMD can fix this.
- fglrx 13.6 beta mostly works. but not everything, like DTS-HD, mpeg2, etc.. But it's as good as it gets, only AMD can fix this.
- As xbmc trunk doesn't work, you'll need a custom ebuild that uses fernetmentas sources, as described it the first post. Here's a sample of media-tv/xbmc-fernetmenta-9999.ebuild, might need manual updates :
Code:
# Copyright 1999-2013 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $
EAPI="5"
inherit eutils python pax-utils
# FernetMenta XvBA
EGIT_REPO_URI="https://github.com/FernetMenta/xbmc.git"
EGIT_PROJECT="${PN}"
#EGIT_BRANCH="master"
EGIT_BRANCH="frodo"
if [[ ${PV} == "9999" ]] ; then
inherit git-2 autotools
else
inherit autotools
MY_P=${P/_/-}
SRC_URI="mirror://sourceforge/${PN}/${MY_P}.tar.gz"
KEYWORDS="~amd64 ~x86"
S=${WORKDIR}/${MY_P}
fi
DESCRIPTION="XBMC is a free and open source media-player and entertainment hub. This is FernetMentas branch of XBMC with support for AMD XVBA."
HOMEPAGE="https://github.com/FernetMenta/xbmc.git"
LICENSE="GPL-2"
SLOT="0"
IUSE="airplay alsa altivec avahi bluetooth bluray cec css debug goom joystick midi mysql nfs profile +projectm pulseaudio pvr +rsxs rtmp +samba sse sse2 sftp udev upnp vaapi vdpau webserver +xrandr xvba"
COMMON_DEPEND="virtual/opengl
app-arch/bzip2
app-arch/unzip
app-arch/zip
app-i18n/enca
airplay? ( app-pda/libplist )
>=dev-lang/python-2.4
dev-libs/boost
dev-libs/fribidi
dev-libs/libcdio[-minimal]
cec? ( dev-libs/libcec )
dev-libs/libpcre[cxx]
>=dev-libs/lzo-2.04
dev-libs/tinyxml
dev-libs/yajl
dev-python/simplejson
media-libs/alsa-lib
media-libs/flac
media-libs/fontconfig
media-libs/freetype
>=media-libs/glew-1.5.6
media-libs/jasper
media-libs/jbigkit
>=media-libs/libass-0.9.7
bluray? ( media-libs/libbluray )
css? ( media-libs/libdvdcss )
media-libs/libmad
media-libs/libmodplug
media-libs/libmpeg2
media-libs/libogg
media-libs/libpng
projectm? ( media-libs/libprojectm )
media-libs/libsamplerate
media-libs/libsdl[audio,opengl,video,X]
alsa? ( media-libs/libsdl[alsa] )
>=media-libs/taglib-1.8
media-libs/libvorbis
media-libs/sdl-gfx
>=media-libs/sdl-image-1.2.10[gif,jpeg,png]
media-libs/sdl-mixer
media-libs/sdl-sound
media-libs/tiff
pulseaudio? ( media-sound/pulseaudio )
media-sound/wavpack
>=virtual/ffmpeg-0.6
rtmp? ( media-video/rtmpdump )
avahi? ( net-dns/avahi )
nfs? ( net-fs/libnfs )
webserver? ( net-libs/libmicrohttpd[messages] )
sftp? ( net-libs/libssh )
net-misc/curl
samba? ( >=net-fs/samba-3.4.6[smbclient] )
bluetooth? ( net-wireless/bluez )
sys-apps/dbus
sys-libs/zlib
virtual/jpeg
virtual/mysql
x11-apps/xdpyinfo
x11-apps/mesa-progs
vaapi? ( x11-libs/libva )
vdpau? (
|| ( x11-libs/libvdpau >=x11-drivers/nvidia-drivers-180.51 )
virtual/ffmpeg[vdpau]
)
xvba? ( x11-libs/xvba-video )
x11-libs/libXinerama
xrandr? ( x11-libs/libXrandr )
x11-libs/libXrender
virtual/jre"
RDEPEND="${COMMON_DEPEND}
udev? ( sys-fs/udisks sys-power/upower )
!media-tv/xbmc"
DEPEND="${COMMON_DEPEND}
dev-util/gperf
x11-proto/xineramaproto
dev-util/cmake
x86? ( dev-lang/nasm )
dev-libs/tinyxml"
src_unpack() {
if [[ ${PV} == "9999" ]] ; then
git-2_src_unpack
cd "${S}"
rm -f configure
else
unpack ${A}
cd "${S}"
fi
# Fix case sensitivity
mv media/Fonts/{a,A}rial.ttf || die
mv media/{S,s}plash.png || die
}
src_prepare() {
# some dirs ship generated autotools, some dont
local d
for d in \
. \
lib/{libdvd/lib*/,cpluff,libapetag,libid3tag/libid3tag} \
xbmc/screensavers/rsxs-* \
xbmc/visualizations/Goom/goom2k4-0
do
[[ -e ${d}/configure ]] && continue
pushd ${d} >/dev/null
einfo "Generating autotools in ${d}"
eautoreconf
popd >/dev/null
done
local squish #290564
use altivec && squish="-DSQUISH_USE_ALTIVEC=1 -maltivec"
use sse && squish="-DSQUISH_USE_SSE=1 -msse"
use sse2 && squish="-DSQUISH_USE_SSE=2 -msse2"
sed -i \
-e '/^CXXFLAGS/{s:-D[^=]*=.::;s:-m[[:alnum:]]*::}' \
-e "1iCXXFLAGS += ${squish}" \
lib/libsquish/Makefile.in || die
# Fix XBMC's final version string showing as "exported"
# instead of the SVN revision number.
export HAVE_GIT=no GIT_REV=${EGIT_VERSION:-exported}
# Avoid lsb-release dependency
sed -i \
-e 's:lsb_release -d:cat /etc/gentoo-release:' \
xbmc/utils/SystemInfo.cpp || die
# avoid long delays when powerkit isn't running #348580
sed -i \
-e '/dbus_connection_send_with_reply_and_block/s:-1:3000:' \
xbmc/linux/*.cpp || die
epatch_user #293109
# Tweak autotool timestamps to avoid regeneration
find . -type f -print0 | xargs -0 touch -r configure
}
src_configure() {
# Disable documentation generation
export ac_cv_path_LATEX=no
# Avoid help2man
export HELP2MAN=$(type -P help2man || echo true)
econf \
--docdir=/usr/share/doc/${PF} \
--disable-ccache \
--disable-optimizations \
--disable-external-libraries \
--enable-gl \
$(use_enable airplay) \
$(use_enable avahi) \
$(use_enable bluray libbluray) \
$(use_enable cec libcec) \
$(use_enable css dvdcss) \
$(use_enable debug) \
$(use_enable goom) \
--disable-hal \
$(use_enable joystick) \
$(use_enable midi mid) \
$(use_enable mysql) \
$(use_enable nfs) \
$(use_enable profile profiling) \
$(use_enable projectm) \
$(use_enable pulseaudio pulse) \
$(use_enable pvr mythtv) \
$(use_enable rsxs) \
$(use_enable rtmp) \
$(use_enable samba) \
$(use_enable sftp ssh) \
$(use_enable upnp) \
$(use_enable vaapi) \
$(use_enable vdpau) \
$(use_enable xvba) \
$(use_enable webserver) \
$(use_enable xrandr)
}
src_install() {
default
rm "${ED}"/usr/share/doc/*/{LICENSE.GPL,copying.txt}*
domenu tools/Linux/xbmc.desktop
newicon tools/Linux/xbmc-48x48.png xbmc.png
insinto "$(python_get_sitedir)" #309885
doins tools/EventClients/lib/python/xbmcclient.py || die
newbin "tools/EventClients/Clients/XBMC Send/xbmc-send.py" xbmc-send || die
pax-mark -m "${D}"usr/lib64/xbmc/xbmc.bin
}
pkg_postinst() {
elog "Visit http://wiki.xbmc.org/?title=XBMC_Online_Manual"
}
To resolve the issues with support for AMD chipsets in Xbmc you can:
- Mail AMD every day and ask them to update the fglrx driver with working XvBA support in linux
- Contribute to the radeon open source driver to support XvBA. Lots and lots of work remains.
Update: Actually, there been some breakthroughs here. Stay tuned, as this may turn out pretty well.
- Buy something else than AMD until either AMD goes away or fixes the driver.
Impressive what a few lines of code can change.