Accelerated Video Playback: Difference between revisions

From NixOS Wiki
imported>Hyperfekt
No edit summary
(→‎Intel: Explain Broadwell in terms of years)
 
(28 intermediate revisions by 13 users not shown)
Line 1: Line 1:
This page is meant to help with techniques for getting accelerated video playback working in NixOS.
Accelerated video playback in NixOS is generally done by adding relevant packages to {{nixos:option|hardware.opengl.extraPackages}}.


This is done by adding relevant <code>libva</code>-related packages to the <code>hardware.opengl.extraPackages</code> option.
== Installation ==
=== Intel ===
{{file|/etc/nixos/configuration.nix|nix|<nowiki>
{
  hardware.opengl = {
    enable = true;
    extraPackages = with pkgs; [
      intel-media-driver # For Broadwell (2015) or newer processors. LIBVA_DRIVER_NAME=iHD
      intel-vaapi-driver # For older processors. LIBVA_DRIVER_NAME=i965
    ];
  };
  environment.sessionVariables = { LIBVA_DRIVER_NAME = "iHD"; }; # Optionally, set the environment variable
}
</nowiki>}}
For 32-bit support, use {{nixos:option|hardware.opengl.extraPackages32}}:
{{file|/etc/nixos/configuration.nix|nix|<nowiki>
{
  hardware.opengl.extraPackages32 = with pkgs.pkgsi686Linux; [ intel-vaapi-driver ];
}
</nowiki>}}


Additionally, the <code>vaapiIntel</code> package can be overriden to enable [https://github.com/01org/intel-hybrid-driver Intel's Hybrid Driver].
=== AMD ===


Sample configuration:
AMD configuration (at least for Ryzen 5 iGPUs) works out of the box:


  {
{{file|/etc/nixos/configuration.nix|nix|<nowiki>
    ...
{
    nixpkgs.config.packageOverrides = pkgs: {
  hardware.opengl.enable = true;
      vaapiIntel = pkgs.vaapiIntel.override { enableHybridCodec = true; };
}
    };
</nowiki>}}
    hardware.opengl = {
== Testing your configuration ==
      enable = true;
      extraPackages = with pkgs; [
        vaapiIntel
        vaapiVdpau
        libvdpau-va-gl
      ];
    };
    ...
  }
 


== Prepared Hardware configuration ==
You can test your configuration by running: <code>nix-shell -p libva-utils --run vainfo</code>
Sometimes different opengl packages are required to achieve full performance. You can check different configuration repositories for similar hardware configuration:
* [https://github.com/NixOS/nixos-hardware The NixOS-Hardware Repository]


See [https://wiki.archlinux.org/index.php/Hardware_video_acceleration#Verification Arch Linux wiki#Hardware video acceleration] for more information.


== Applications ==
== Applications ==


===Chromium===
=== Chromium ===
Needs a patch for VA-API support, see [https://github.com/NixOS/nixpkgs/issues/21481 nixpkgs#21481] for current status.


===Other===
See [[Chromium#Accelerated_video_playback]].
See the [https://wiki.archlinux.org/index.php/Hardware_video_acceleration#Application_support Arch Linux wiki].
 
=== Firefox ===
 
See [https://wiki.archlinux.org/index.php/Firefox#Hardware_video_acceleration Arch Linux wiki#Firefox].
 
=== MPV ===
You can place the following configuration in {{ic|~/.config/mpv/mpv.conf}}:
 
<syntaxHighlight lang=ini>
hwdec=auto-safe
vo=gpu
profile=gpu-hq
gpu-context=wayland ; On wayland only
</syntaxHighlight>
 
See [https://wiki.archlinux.org/title/mpv#Hardware_video_acceleration Arch Linux wiki#mpv].
 
== Also see ==
* [https://wiki.archlinux.org/index.php/Hardware_video_acceleration Arch Linux wiki#Hardware video acceleration].
* [https://github.com/NixOS/nixos-hardware nixos-hardware] has example configurations for various types of hardware.
 
[[Category:Video]]

Latest revision as of 17:50, 23 April 2024

Accelerated video playback in NixOS is generally done by adding relevant packages to hardware.opengl.extraPackages.

Installation

Intel

/etc/nixos/configuration.nix
{
  hardware.opengl = {
    enable = true;
    extraPackages = with pkgs; [
      intel-media-driver # For Broadwell (2015) or newer processors. LIBVA_DRIVER_NAME=iHD
      intel-vaapi-driver # For older processors. LIBVA_DRIVER_NAME=i965
    ];
  };
  environment.sessionVariables = { LIBVA_DRIVER_NAME = "iHD"; }; # Optionally, set the environment variable
}

For 32-bit support, use hardware.opengl.extraPackages32:

/etc/nixos/configuration.nix
{
  hardware.opengl.extraPackages32 = with pkgs.pkgsi686Linux; [ intel-vaapi-driver ];
}

AMD

AMD configuration (at least for Ryzen 5 iGPUs) works out of the box:

/etc/nixos/configuration.nix
{
  hardware.opengl.enable = true;
}

Testing your configuration

You can test your configuration by running: nix-shell -p libva-utils --run vainfo

See Arch Linux wiki#Hardware video acceleration for more information.

Applications

Chromium

See Chromium#Accelerated_video_playback.

Firefox

See Arch Linux wiki#Firefox.

MPV

You can place the following configuration in ~/.config/mpv/mpv.conf:

hwdec=auto-safe
vo=gpu
profile=gpu-hq
gpu-context=wayland ; On wayland only

See Arch Linux wiki#mpv.

Also see