Library Layout

The VDPAU wrapper library. These files are located in the standard system (possibly X11-specific) library path.

libvdpau.so.1 (runtime)

libvdpau.so (development)

Back-end driver files. These files are located in a system-defined library path, which is configurable at compile time but is typically /usr/lib/vdpau. Use pkg-config --variable=moduledir vdpau to locate the driver install path.

$moduledir/libvdpau_%s.so.1 For example:

/usr/lib/vdpau/libvdpau_nvidia.so.1

/usr/lib/vdpau/libvdpau_intel.so.1

/usr/lib/vdpau/libvdpau_ati.so.1 The library path can be overridden by the VDPAU_DRIVER_PATH environment variable.

The VDPAU wrapper library implements just one function; vdp_device_create_x11. The wrapper implements this function by dynamically loading the appropriate back-end driver file mentioned above. When available, the wrapper uses the DRI2 extension's DRI2Connect request with the driver type 'DRI2DriverVDPAU' to determine which back-end driver to load. If that fails, the wrapper library hard-codes the driver name as "nvidia", although this can be overridden using the environment variable VDPAU_DRIVER.

The back-end driver is expected to implement a function named vdp_imp_device_create_x11. The wrapper will call this function to actually implement the vdp_device_create_x11 application call.

Note that it is theoretically possible for an application to create multiple VdpDevice objects. In this case, the wrapper library may load multiple back-end drivers into the same application, and/or invoke a specific back-end driver's VdpImpDeviceCreateX11 multiple times. The wrapper library imposes no policy regarding whether the application may instantiate multiple VdpDevice objects for the same display and/or screen. However, back-end drivers are free to limit the number of VdpDevice objects as required by their implementation.

Note: VDPAU expects to own the entire drawable for the duration of time that the presentation queue target exists. In particular, implementations may choose to manipulate client-visible X11 window state as required. As such, it is recommended that applications create a dedicated window for the presentation queue target, as a child (grand-child, ...) of their top-level application window.

Applications may also create child-windows of the presentation queue target, which will cover any presented video in the normal fashion. VDPAU implementations will not manipulate such child windows in any fashion.