Over the course of the past few months we have been saying that the NVIDIA 180 Linux driver to be released in the fourth quarter of 2008 would hold in store a few interesting features. Well, today that closed-source driver has been released in beta form. This driver adds a new VDPAU API, which provides PureVideo-like features on Linux, adds in CUDA 2.1 support, new workstation performance optimizations, X Render improvements, and other improvements.
The two leading X video output extensions for Linux are Xv (X-Video) and XvMC (X-Video Motion Compensation), with the latter being an extension of X-Video that is able to offload some decoding of videos to the graphics processor. Right now XvMC is limited to MPEG-2 format, but there has been talk by Intel of extending XvMC to support more formats. NVIDIA has supported X-Video through their binary driver for quite some time and they even support XvMC on some graphics cards but that support was discontinued with the GeForce 8 series. On the AMD side they support X-Video / Textured Video, but not until recently did they support XvMC when they began work on their XvBA API (X-Video Bitstream Acceleration).
XvBA still hasn't been officially announced nor any header files released, but it is supported in the most recent Catalyst drivers. XvBA uses the Unified Video Decoder 2 (UVD2) found on newer ATI Radeon GPUs. NVIDIA's new VDPAU API is now what will be the competitor to XvBA -- though any driver can now implement VDPAU if they so desire. VDPAU provides PureVideo-like features, which is a technology NVIDIA has embedded into their graphics cards for several generations now with the latest iteration being known as PureVideo HD. PureVideo is described by NVIDIA as providing ultra-smooth video, superb picture clarity, and precise, vivid colors on any display. The necessary header files, wrapper library, and library / driver files ship with this just-released 180.06 driver.
So what's VDPAU? The Video Decode and Presentation API for Unix. It is currently able to accelerate the decoding of MPEG-1, MPEG-2, H.264, and VC-1 bitstreams. It also provides an API for post-processing of decoded video (to apply such operations as temporal and spatial deinterlacing and noise reduction), timestamp-based presentation of final video frames, and compositing of sub-picture elements. NVIDIA's developer documentation describes it as:
"The Video Decode and Presentation API for Unix (VDPAU) provides a complete solution for decoding, post-processing, compositing, and displaying compressed or uncompressed video streams. These video streams may be combined (composited) with bitmap content, to implement OSDs and other application user interfaces."
The VDPAU documentation is currently housed within a header file in /usr/include/vdpau/ that contains hundreds of lines of documentation and covers threading, extending the API, and more. VDPAU is also supported in the 180 releases of the FreeBSD and Solaris display drivers.
NVIDIA has published patches to enable VDPAU support for MPlayer with changes also against libavcodec, libavutil, and ffmpeg. These patches are currently available through an FTP download and NVIDIA will push them for integration into MPlayer once they have been well-tested. A GeForce 8 series GPU or newer is needed for VDPAU support.
Aside from the Video Decode and Presentation API for Unix, the NVIDIA 180.06 driver adds CUDA 2.1 support. Among other features, version 2.1 of the Compute Unified Device Architecture supports running on CPUs -- not just GPUs. As another staple to the NVIDIA 180.xx driver, this new driver adds in new workstation performance optimizations, but we are still in the process of testing out these improvements. The GlyphCache option for the X Render extension is also now enabled by default while shared memory X pixmaps is disabled by default.
Other fixes in the NVIDIA 180.06 Linux driver include a window decoration corruption with Compiz on GeForce 6/7 GPUs, improved X pixmap placement, improved compatibility with recent Linux kernels, and improved stability on some GeForce 8 GPUs and newer.
What does appear to be missing though from this initial 180.xx driver is support for OpenGL 3.0. Last month NVIDIA had delivered a beta OpenGL 3.0 Linux driver that was branched from an earlier code release, but it doesn't look like it has worked its way into the 180.06 release.
We are still testing out this new NVIDIA 180.06 driver and we will report back as soon as we have explored the changes and have begun examining VDPAU, NVIDIA's new PureVideo-like acceleration API for Linux, FreeBSD, and Solaris. NVIDIA hasn't officially announced these new drivers yet, but there are Linux x86 and Linux x86_64 pages. Before installing the 180.06 driver, be forewarned that it is considered beta quality.