Difference between revisions of "Accelerated Video Playback"
(Corrected intel accelleration driver info. THe previously linked issue had nothing to do with vaapi-driver, only hybrid. Aso since vaapi-driver is now archived, and media supports a wider CPU range and is more moddern (and supports both Skylake and the older broadwell) it should be prioritised for new users. Finally... my skylake wouldn't get accelleration at all with vaapi driver, but did with media-driver) |
(update configuration names for newer NixOS versions) |
||
| Line 1: | Line 1: | ||
This page is meant to help with techniques for getting accelerated video playback working in NixOS. This is generally done via libva and vaapi (and sometimes vdpau). | This page is meant to help with techniques for getting accelerated video playback working in NixOS. This is generally done via libva and vaapi (and sometimes vdpau). | ||
| − | This is done by adding relevant <code>libva</code>-related packages to the <code>hardware. | + | This is done by adding relevant <code>libva</code>-related packages to the <code>hardware.graphics.extraPackages</code> (or <code>hardware.opengpl.extraPackages</code> until NixOS 24.05) option. |
Intel users should enable <code>intel-media-driver</code> if their CPU is on the [https://github.com/intel/media-driver?tab=readme-ov-file#supported-platforms supported list] (Broadwell and newer). It can be used at runtime with <code>LIBVA_DRIVER_NAME=iHD mpv ...</code> for example, if you use Mic92's mpv settings below. | Intel users should enable <code>intel-media-driver</code> if their CPU is on the [https://github.com/intel/media-driver?tab=readme-ov-file#supported-platforms supported list] (Broadwell and newer). It can be used at runtime with <code>LIBVA_DRIVER_NAME=iHD mpv ...</code> for example, if you use Mic92's mpv settings below. | ||
| Line 17: | Line 17: | ||
intel-vaapi-driver = pkgs.intel-vaapi-driver.override { enableHybridCodec = true; }; | intel-vaapi-driver = pkgs.intel-vaapi-driver.override { enableHybridCodec = true; }; | ||
}; | }; | ||
| − | hardware. | + | hardware.graphics = { # hardware.opengl until NixOS 24.05 |
enable = true; | enable = true; | ||
extraPackages = with pkgs; [ | extraPackages = with pkgs; [ | ||
| − | intel-media-driver # LIBVA_DRIVER_NAME=iHD | + | intel-media-driver # LIBVA_DRIVER_NAME=iHD (for HD Graphics starting Broadwell (2014) and newer) |
intel-vaapi-driver # LIBVA_DRIVER_NAME=i965 (older but works better for Firefox/Chromium) | intel-vaapi-driver # LIBVA_DRIVER_NAME=i965 (older but works better for Firefox/Chromium) | ||
libvdpau-va-gl | libvdpau-va-gl | ||
Latest revision as of 13:25, 27 November 2025
This page is meant to help with techniques for getting accelerated video playback working in NixOS. This is generally done via libva and vaapi (and sometimes vdpau).
This is done by adding relevant libva-related packages to the hardware.graphics.extraPackages (or hardware.opengpl.extraPackages until NixOS 24.05) option.
Intel users should enable intel-media-driver if their CPU is on the supported list (Broadwell and newer). It can be used at runtime with LIBVA_DRIVER_NAME=iHD mpv ... for example, if you use Mic92's mpv settings below.
Other intel CPUs could enable the intel-vaapi-driver. This may have better results in some cases where the media driver doesn't work. However, this driver is unmaintained.
Additionally, the intel-vaapi-driver (previously vaapiIntel) package can be overridden to enable Intel's Hybrid Driver.
Sample configuration:
{
...
nixpkgs.config.packageOverrides = pkgs: {
intel-vaapi-driver = pkgs.intel-vaapi-driver.override { enableHybridCodec = true; };
};
hardware.graphics = { # hardware.opengl until NixOS 24.05
enable = true;
extraPackages = with pkgs; [
intel-media-driver # LIBVA_DRIVER_NAME=iHD (for HD Graphics starting Broadwell (2014) and newer)
intel-vaapi-driver # LIBVA_DRIVER_NAME=i965 (older but works better for Firefox/Chromium)
libvdpau-va-gl
];
};
environment.sessionVariables = { LIBVA_DRIVER_NAME = "iHD"; }; # Force intel-media-driver
...
}
32 bit example:
hardware.opengl.extraPackages32 = with pkgs.pkgsi686Linux; [ intel-vaapi-driver ];
On unstable:
hardware.graphics.extraPackages32 = with pkgs.pkgsi686Linux; [ intel-vaapi-driver ];
Prepared Hardware configuration
Sometimes different opengl packages are required to achieve full performance. You can check different configuration repositories for similar hardware configuration:
Testing your configuration
You can test your configuration by running: nix-shell -p libva-utils --run vainfo
See Hardware video acceleration: Verification (Arch Wiki) for more information.
Applications
Chromium
See Chromium.
Firefox
See Firefox#Hardware_video_acceleration (ArchWiki).
MPV
You can place the following configuration in ~/.config/mpv/mpv.conf
for mpv to use hardware acceleration for VP9 on Intel Broadwell (and probably later):
hwdec=auto-safe
vo=gpu
profile=gpu-hq
With Wayland, you need to nudge mpv to do the right thing:
gpu-context=wayland
This is based on the Arch Linux mpv article.
Other
See the Arch Linux wiki.