Differences between revisions 9 and 15 (spanning 6 versions)
Revision 9 as of 2021-02-25 20:49:23
Size: 8872
Editor: ?SebastianRamacher
Comment:
Revision 15 as of 2021-08-09 14:45:19
Size: 9062
Editor: GregWooledge
Comment: mpv.conf location
Deletions are marked like this. Additions are marked like this.
Line 28: Line 28:
For Intel, it's split generationally and into free and non-free drivers. The non-free drivers '''are necessary to encode media''' while the free drivers can only decode. For Intel, it's split generationally, and into free and non-free drivers. The non-free drivers '''are necessary to encode media''' while the free drivers can only decode.
Line 30: Line 30:
For Gen 8+ Intel hardware, the free driver can be installed with the DebianPkg:intel-media-va-driver package. The non-free driver can be installed with the DebianPkg:intel-media-va-driver-non-free after adding a non-free component to your [[SourcesList]] file. For Gen 8+ Intel hardware, the free driver can be installed with the DebianPkg:intel-media-va-driver package. You can find the non-free driver in the DebianPkg:intel-media-va-driver-non-free package after adding a non-free component to your [[SourcesList|apt sources]].
Line 32: Line 32:
For older Intel hardware, the free driver can be installed with the DebianPkg:i965-va-driver package. This driver supports of to Gen 9 GPUs. If both drivers are installed, the driver from DebianPkg:intel-media-driver is preferred over DebianPkg:i965-va-driver (since bullseye). The non-free driver can be installed with the DebianPkg:i965-va-driver-shaders package after adding a non-free component to your [[SourcesList]] file. For older Intel hardware, the free driver can be installed with the DebianPkg:i965-va-driver package. The non-free driver can be installed with the DebianPkg:i965-va-driver-shaders package after adding a non-free component to your [[SourcesList|apt sources]]. This driver supports up to Gen 9 GPUs. If both drivers are installed, the newer driver from DebianPkg:intel-media-va-driver is preferred over DebianPkg:i965-va-driver (since Debian 11/Bullseye).
Line 34: Line 34:
Driver selection can be overridden by setting the environment variable `LIBVA_DRIVER_NAME` to a specific driver, e.g., `LIBVA_DRIVER_NAME=i965` (to use the driver from DebianPkg:i965-va-driver on bullseye) or `LIBVA_DRIVER_NAME=iHD` (to use the driver from DebianPkg:intel-media-va-driver on buster). See EnvironmentVariables for more details on how to set this environment variable system-wide or per user. Driver selection can be overridden by setting the environment variable `LIBVA_DRIVER_NAME` to a specific driver, e.g., `LIBVA_DRIVER_NAME=i965` (to use the driver from DebianPkg:i965-va-driver on Bullseye) or `LIBVA_DRIVER_NAME=iHD` (to use the driver from DebianPkg:intel-media-va-driver on Debian 10/Buster). See EnvironmentVariables for more details on how to set this environment variable system-wide or per user.
Line 69: Line 69:
mpv has good hardware acceleration support, although it is not enabled by default. To enable it, use the `–hwdec` command line switch. It can also be made the default by adding a line like “`hwdec`” to the mpv configuration file (e.g., `$HOME/.config/mpv.conf`). [`hwdec` can also take various values, although ideally supplying the switch with no value should be sufficient. See the mpv manpage for more details.] mpv has good hardware acceleration support, although it is not enabled by default. To enable it, use the `–hwdec` command line switch. It can also be made the default by adding a line like “`hwdec`” to the mpv configuration file (e.g., `$HOME/.config/mpv/mpv.conf`). [`hwdec` can also take various values, although ideally supplying the switch with no value should be sufficient. See the mpv manpage for more details (which recommends not to set the switch).]
Line 100: Line 100:
Web video is one of the most important use cases for hardware video acceleration, as without it sites like YouTube will cause heavy CPU usage (and therefore power consumption), a particular concern on mobile devices such as laptops and tablets. Web video is one of the most important use-cases for hardware video acceleration, as without it, sites like !YouTube will cause heavy CPU usage (and therefore power consumption), a particular concern on mobile devices such as laptops and tablets.
Line 102: Line 102:
As of [[DebianBullseye|Debian 11/Bullseye]], VA-API support is enabled by default in Chromium and Firefox. However, in the case of Firefox, it currently only works on [[Wayland]] desktops. [[WikiPedia:GNOME Web]] has VA-API support through the [[DebianPkg:gstreamer1.0-vaapi]] package if installed. As of [[DebianBullseye|Debian 11/Bullseye]], VA-API support is enabled by default in Chromium, and is available in Firefox.[[WikiPedia:GNOME Web]] has VA-API support through the [[DebianPkg:gstreamer1.0-vaapi]] package if installed.
Line 105: Line 105:



----
## permalink 2021-04 https://www.debian.org/releases/bullseye/amd64/release-notes/ch-information.en.html#new-vaapi-default-driver
CategoryPermalink

Translation(s): none


With modern graphics cards, it's often possible to offload the jobs of video encoding and decoding to them from the CPU in order to reduce power usage and make more resources available to the rest of the system. Compared to CPUs, GPUs are much more efficient at the job. However, both hardware as well as software support are required for this offloading, and the latter in particular (at least in the Linux world) has undergone much evolution in recent years. Online documentation is therefore sparse and incomplete, inconsistent, and often outdated. Furthermore, support for hardware video acceleration under Linux world is unfortunately split across different APIs with different levels of support.

Benefits

Historically, the benefits of hardware acceleration under Linux have been uncertain, but it seems likely that support today has improved drastically. In at least some relatively typical scenarios, the performance gains of using hardware decoding can be huge, with reductions in CPU usage of around 90%.

APIs and Hardware / Software Support

The three main APIs that are in use are VA-API, VDPAU, and NVENC/NVDEC.

  • VA-API - Supported on Intel, AMD, and NVIDIA (only via the open-source Nouveau drivers). Widely supported by software, including Kodi, VLC, MPV, Chromium, and Firefox. Main limitation is lacking any support in the proprietary NVIDIA drivers.

  • VDPAU - Supported fully on AMD and NVIDIA (both proprietary and Nouveau). Supported by most desktop applications like Kodi, VLC, and MPV, but has no support at all in Chromium or Firefox. Main limitations are poor and incomplete Intel support and not working with browsers for web video acceleration.
  • NVENC/NVDEC - A proprietary API supported exclusively by NVIDIA. Only supported in a few major applications (FFmpeg and OBS Studio for encoding, FFmpeg and MPV for decoding). Main limitation is limited software and hardware support across the board because of its proprietary nature.


Installation

VA-API

VA-API sees broad software support and is even used by default in applications like MPV when it's available.

For Nouveau and the various AMD drivers, support can be added simply by installing the mesa-va-drivers package.

For Intel, it's split generationally, and into free and non-free drivers. The non-free drivers are necessary to encode media while the free drivers can only decode.

For Gen 8+ Intel hardware, the free driver can be installed with the intel-media-va-driver package. You can find the non-free driver in the intel-media-va-driver-non-free package after adding a non-free component to your apt sources.

For older Intel hardware, the free driver can be installed with the i965-va-driver package. The non-free driver can be installed with the i965-va-driver-shaders package after adding a non-free component to your apt sources. This driver supports up to Gen 9 GPUs. If both drivers are installed, the newer driver from intel-media-va-driver is preferred over i965-va-driver (since Debian 11/Bullseye).

Driver selection can be overridden by setting the environment variable LIBVA_DRIVER_NAME to a specific driver, e.g., LIBVA_DRIVER_NAME=i965 (to use the driver from i965-va-driver on Bullseye) or LIBVA_DRIVER_NAME=iHD (to use the driver from intel-media-va-driver on Debian 10/Buster). See EnvironmentVariables for more details on how to set this environment variable system-wide or per user.

VDPAU

VDPAU faces considerably more limitations compared to VA-API, but nonetheless, it's the only option for some users. Particularly, anyone using the NVIDIA proprietary drivers. It's not supported in any major browser except for GNOME Web but is useful for local playback. MPV is recommended for this.

To enable VDPAU support for the AMD drivers (radeon and amdgpu), along with the open-source Nouveau driver for NVIDIA cards, install the vdpau-driver-all package.

This will also enable VDPAU support over the OpenGL/VA-API backend for Intel GPUs. However, this has severe stability issues and may not work at all on some Intel devices. If possible, you are heavily recommended to use VA-API instead with Intel.

To enable VDPAU support for the proprietary NVIDIA drivers, you must choose the relevant package for your driver version. If you installed the latest drivers via the nvidia-driver package, then you can simply install the nvidia-vdpau-driver package.

Otherwise, if you're using a legacy driver, choose the appropriate package from the following: nvidia-legacy-304xx-vdpau-driver, nvidia-legacy-340xx-vdpau-driver, nvidia-legacy-390xx-vdpau-driver

NVENC/NVDEC

NVDEC is supported by the libnvcuvid1 package.

For the legacy drivers, instead choose the libnvidia-legacy-304xx-nvcuvid1, libnvidia-legacy-340xx-nvcuvid1, or libnvidia-legacy-390xx-nvcuvid1 package.

NVENC is supported by the libnvidia-encode1 package.

For the legacy drivers, instead choose either the libnvidia-legacy-340xx-encode1 or libnvidia-legacy-390xx-encode1 package.

These are only non-free runtime libraries however. Applications in Debian's main archive, including FFmpeg and OBS Studio, are not compiled with support for NVENC or NVDEC and so the usefulness is limited to third-party binaries not supplied by Debian.


Checking support

You can find a full report of whether or not VA-API or VDPAU are functional, and what codecs they support, by installing the vainfo and vdpauinfo packages and running their commands. vainfo and vdpauinfo

Application Support

Application support for hardware acceleration varies, and each application requires individual configuration. Following are details for various applications.

mpv

mpv has good hardware acceleration support, although it is not enabled by default. To enable it, use the –hwdec command line switch. It can also be made the default by adding a line like “hwdec” to the mpv configuration file (e.g., $HOME/.config/mpv/mpv.conf). [hwdec can also take various values, although ideally supplying the switch with no value should be sufficient. See the mpv manpage for more details (which recommends not to set the switch).]

If hardware acceleration is being used, mpv’s output will contain lines like the following:

libva info: VA-API version 0.39.4
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/i965_drv_video.so
libva info: Found init function __vaDriverInit_0_39
libva info: va_openDriver() returns 0
AO: [alsa] 48000Hz stereo 2ch float
Using hardware decoding (vaapi).
VO: [opengl] 1920x816 vaapi

VLC

Hardware acceleration in VLC is controlled in the GUI via “Tools → Preferences → Input / Codecs → Hardware-accelerated decoding”, or via the CLI option –avcodec-hw value [‘value’ is mandatory].

If hardware acceleration is being used, VLC’s output will contain lines like the following:

libva info: VA-API version 0.39.4
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/i965_drv_video.so
libva info: Found init function __vaDriverInit_0_39
libva info: va_openDriver() returns 0
[00007f082ce97280] avcodec decoder: Using Intel i965 driver for Intel(R) Broadwell - 1.7.3 for hardware decoding

Browser support

Web video is one of the most important use-cases for hardware video acceleration, as without it, sites like YouTube will cause heavy CPU usage (and therefore power consumption), a particular concern on mobile devices such as laptops and tablets.

As of Debian 11/Bullseye, VA-API support is enabled by default in Chromium, and is available in Firefox.GNOME Web has VA-API support through the gstreamer1.0-vaapi package if installed.

VDPAU isn't supported at all in Chromium or Firefox. The only browser that supports it is GNOME Web, available in the epiphany-browser package. GNOME Web leverages GStreamer for this support, also requiring the gstreamer1.0-plugins-bad package for VDPAU support to work properly.


CategoryPermalink