Within the next few hours AMD will be publishing open-source driver code that exposes their Unified Video Decoder (UVD) engine on modern Radeon HD graphics cards. This will finally allow open-source graphics drivers to take advantage of hardware-accelerated video decoding. Read more details in this Phoronix exclusive.
For many years, AMD Linux users have wanted open-source UVD/video-acceleration support to go along with their open-source OpenGL driver. However, it never came until now -- many years after UVD first arrived back in the ATI days. The official reasoning for years was that it's complicated to get any public documentation or open-source code since documenting UVD/UVD2 in the public domain could potentially compromise the Digital Rights Management abilities of their Catalyst driver on other operating systems. Obviously it's in AMD's best business interest to cater towards the much larger Windows market where Digital Rights Management for protected video content is critical, so it's been a sticky and drawn out situation getting open-source UVD support.
AMD has said they were working on some open-source UVD solution for many months, but it was complicated getting legal clearance and frankly many Linux desktop users lost hope of seeing hardware-accelerated video playback outside of the Catalyst blob (in March of last year is when we shared that UVD was going through code review). Thus it was a very huge and welcome surprise when receiving an advance and exclusive notice from AMD a few hours ago. Alex Deucher of AMD shared with Phoronix that tomorrow (3 April, or possibly in the late hours tonight), there will be a code drop of open-source UVD Linux support.
Alex has graciously allowed Phoronix to share this information early with our readers, many of whom will be really excited now that there's finally support for offloading the video playback process to the GPU.
This UVD support will come for the Radeon HD 4000 "R700" graphics cards through the Radeon HD 7000 "Southern Islands" graphics cards. This is effectively UVD2 hardware and newer. There was the original UVD decoder found with the Radeon HD 2000 GPUs and UVD+ to come with the Radeon HD 3000 series, but this support is targetting UVD2 and beyond. The latest generation is UVD3 that was introduced with the Radeon HD 6000 series. UVD3 brought in DivX and Xvid along with Blu-ray 3D and 120Hz Stereo 3D.
This open-source AMD UVD support will allow for accelerated playback of H.264, VC-1, and MPEG variants on the HD 4000 through HD 7000 series GPUs. Interestingly, and to much pleasure, the UVD support is being exposed over VDPAU.
VDPAU, a.k.a. the Video Decode and Presentation API for Unix, was introduced by NVIDIA many years ago for bringing PureVideo support to their Linux driver. After that, AMD introduced XvBA (X-Video Bitstream Acceleration) for an API to expose UVD with the Catalyst driver under Linux. More multimedia Linux software has supported VDPAU than XvBA. XvBA adoption is almost non-existent with just a few video programs supporting the AMD API. There's also VA-API that is backed by Intel and also supported much better by Linux multimedia software than XvBA.
AMD using VDPAU to expose UVD with their open-source Linux graphics driver is a great win for Linux desktop users. There's also been the VDPAU Gallium3D state tracker, which is likely why AMD went with this using this as their video API in order to reduce their workload.
On top of the current AMD Radeon Linux graphics driver code, the UVD support requires changes to their Radeon Direct Rendering Manager driver within the Linux kernel and Mesa. The Linux kernel changes are part of this code drop and should be merged to mainline for the Linux 3.10 kernel. Alex Deucher says the Mesa changes to the Radeon Gallium3D drivers will be immediately merged to master (rather than some code branch) and thus will be part of Mesa 9.1 / Mesa 10.0 when released in several months.
Overall, this is a great day in the open-source AMD history. It's been several months without any exciting open-source AMD news (namely since the introduction of the RadeonSI driver for the HD 7000 series GPUs), but now there's finally the long-awaited open-source video playback support! Great job to all of the developers involved in bringing this much sought after support.
There's no word on any public UVD documentation being released at this time. Hopefully next though will be proper open-source Radeon driver power management, another much sought after feature by Radeon Linux desktop users with no "out of the box" dynamic re-clocking support by default.
Information regarding this imminent code drop was first shared via Michael's Twitter account hours ago. Follow @MichaelLarabel where there is often exclusive Linux tidbits and other early bits of information. [Editor's Note: Welcome a new contributor on Phoronix!]
Update: The code just arrived! There's also the Mesa patches!