Major Open-Source Code Drop For XvBA, PowerVR Coming
The code being pushed out so far can be found in the Splitted Desktop Systems' Git repository. The SDS Git repositories updated today are GStreamer-VAAPI, MPlayer, VDPAU-Video, and XvBA-Video. Some of the code, such as for MPlayer, has been open-source already, but the one item to note is that xvba-video up to this point has only been distributed as a closed-source blob.
The xvba-video library is what Splitted Desktop Systems developed in conjunction with AMD for the past several years. This library allows VA-API-enabled applications to take advantage of the UVD2/UVD3 engine on modern ATI/AMD Radeon HD graphics processors to offload the video playback process from the CPU to the GPU.
The Catalyst Linux driver only exposes the X-Video Bitstream Acceleration (XvBA) interface while this library wraps the common Video Acceleration API (VA-API) interface around it. For a long time this was the only way to take advantage of the Unified Video Decoders on Radeon HD GPUs. XvBA had been present in the Catalyst drivers since 2008 but only in 2009 the xvba-video library appeared thanks to the cooperation of AMD and Splitted Desktop Systems.
Only in February did AMD open up their XvBA interface by providing specifications and sample code. This finally allows multimedia applications to directly target XvBA rather than VA-API, as previous to that the XvBA interface was closed and Splitted Desktop Systems was provided with NDA-covered documentation to write this library, thus also requiring this library be closed-source.
Not many Linux media projects are interested in XvBA since VA-API and VDPAU work so well, which as a result means this xvba-video component is still heavily depended upon for the Catalyst Linux desktop. Now the code is open-source.
Why is this code being opened up today? Well, Gwenolé Beauchesne, the developer behind much of this code at Splitted Desktop Systems, is leaving the company. Yesterday he emailed me to inform me that he would be departing soon and that "all work will be committed to our GIT, including xvba-video." That code has now been pushed to Git today.
While xvba-video is now open-source, it turns out that it's a simplified implementation. When AMD opened up XvBA, it turns out they didn't open up the full specification. "xvba-video will be in a 'simplified' form because AMD again failed to release further documentation/API specifications." The closed-up xvba-video relies upon some of the XvBA API that AMD hasn't yet publicly documented. This just further shows VA-API and VDPAU are APIs to take more serious by Linux multimedia applications.
The xvba-video code is out under the GPLv2 license.
Gwenolé hasn't commented on what his future plans are, but he is a Phoronix reader and an active member of the Phoronix Forums, so hopefully he will comment there on his future endeavors. I've heard some rumblings that he may be another new Intel employee, but he hasn't yet responded (or opted not to) my inquiry.
This isn't all of the code to be opened either by Splitted Desktop Systems. Gwenolé is looking to move the VA-API related code over to the FreeDesktop.org infrastructure, as indicated by this FreeDesktop.org bug report. The bug report is so that the server administrators can create Git repositories for the VDPAU, XvBA, and Intel drivers for VA-API along with moving around libva (the central VA-API library). This bug report was created at the end of May but still hasn't been acted upon.
Where this bug report gets interesting, however, is with the next two bug comments. Austin Yuan, an Intel employee, added, "please include vaapi/pvr-driver - for PowerVR chips."
Gwenole then added as another bug comment:
Here are the suggested details for the PVR driver:
- Services: GIT hosting, bugzilla
- Approve new members: Austin Yuan
- GIT & Bugzilla description: HW video decode/encode support for PowerVR
Open-source hardware video encoding/decoding for PowerVR chipsets!? In speaking with an independent developer who's worked on the closed-source PowerVR Linux drivers, this VA-API driver would likely require PVR-specific shaders and compiler to be included, both of which items would be frowned upon by the IP holder, Imagination Technologies. This PowerVR VA-API driver opening could be part of a bigger effort -- e.g. possible open-source PowerVR graphics driver stack. However, we aren't sure yet what's going on and will need to wait for the FreeDesktop.org administrators to act so that the Git repositories can be created and code pushed. It is interesting that this PowerVR VA-API repository request comes from Intel and indicates that this isn't a lone effort by Beauchesne.
Stay tuned for more news.