All in an afternoon's work - enabled UVD on the open-source Radeon drivers. This is how I did it:
UVD on the free radeon drivers requires three parts - an updated mesa package, updated firmware, and linux-3.10.
I already have the latest mesa running because I don't use the official mesa packages from arch; rather, I use the excellent mesa-git repository which does a pretty good job of tracking and updating the mesa packages from git every few days. You can get the repository from here: http://pkgbuild.com/~lcarlier/mesa-git/
You also need updated firmware for your radeon cards. Thankfully, the current linux-firmware package includes all the required firmware, so you don't need to hunt for any more packages - simply run pacman -Syu
The third bit you need is linux-3.10. In my case, installing linux-3.10 is a complete no-no, because I don't use the stock kernel, I use linux-ck (which includes the bfs scheduler and the bfq io scheduler, two things that I actually need to avoid lockups on my system). Turns out there's a way to get away with using linux-3.9 - backports.
What you need to do is the follwing:
1. Head to http://drvbp1.linux-foundation.org/~mcgrof/rel-html/backports/
and get the latest stable release. As of now, it's backports-3.10-rc1-2. Download the tarball and keep it somewhere.
2. Ensure you have a compiler, your linux-headers package, and ncurses installed.
3. Extract the tarball with tar -xvjf backports-1.10-rc1-2.tar.bz2
4. Head into the kconfig directory and edit the Makefile. In line 6, (the first line that starts with mconf: ....), remove the "-ltinfo" at the end. This is because most distributions nowadays build ncurses as two libraries - libncurses and libtinfo (which includes the terminfo bits separately), but Arch does not.
5. Now run make menuconfig
. Disable everything except Direct Rendering Manager, and inside it, only (repeat only) ATI Radeon. Leave ATI Rage and everything else well alone. Leave userspace modesetting disabled. Again, disable everything else.
6. now run make && sudo make install
. This will build your modules and install them into the /lib/modules/<your-kernel-version>/updates directory, and run depmod for you automatically. If you need to remove the backports, simply remove this updates directory and run sudo depmod -a
. No other files are touched.
7. Rebuild your initramfs - something like sudo mkinitcpio -p linux
should do. (replace linux with your kernel variant. Mine is linux-ck).
9. Once rebooted, open a terminal and run dmesg | grep -i uvd
. You should see a line like this: [drm] UVD initialized successfully.
10. Now install vdpauinfo and run VDPAU_DRIVER=r600 vdpauinfo
. This should list quite a few video modes available under Decoder Capabilities
- there should be modes for MPEG1/2/4, VC1 and H.264.
11. If it works, add the line VDPAU_DRIVER=r600
into /etc/environment. Congratulations, you have enabled hardware accelerated video decoding using the open source drivers on your radeon card!
Now - you need to rebuild the backports every time you update the kernel, until you get 3.10. UVD support is included in 3.10, so once you get it, you can let go of the backports. The line in /etc/environment needs to be kept added, however, because otherwise vdpau will default to looking for nvidia drivers, which obviously don't exist on an AMD system.
/CC +Michael Larabel
and +Swapnil Bhartiya