Accelerated Video Playback: Difference between revisions
imported>Blitz Add kcmp hint for amdgpu |
m Add missing module args to he nvidia config example |
||
(25 intermediate revisions by 11 users not shown) | |||
Line 1: | Line 1: | ||
<languages/> | |||
<translate> | |||
<!--T:1--> | |||
Accelerated video playback in NixOS is generally done by adding relevant packages to {{nixos:option|hardware.graphics.extraPackages}}. | |||
</translate> | |||
<translate> | |||
== Installation == <!--T:18--> | |||
</translate> | |||
<translate> | |||
=== Intel === <!--T:19--> | |||
</translate> | |||
{{file|/etc/nixos/configuration.nix|nix|<nowiki> | |||
< | |||
{ | { | ||
hardware.graphics = { | |||
hardware. | |||
enable = true; | enable = true; | ||
extraPackages = with pkgs; [ | extraPackages = with pkgs; [ | ||
intel-media-driver # LIBVA_DRIVER_NAME=iHD | intel-media-driver # For Broadwell (2014) 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>}} | ||
<translate> | |||
<!--T:2--> | |||
Note, <code>intel-vaapi-driver</code> still performs better for browsers (gecko/chromium based) on newer Skylake (2015) processors.<ref>https://github.com/intel/media-driver/issues/1024</ref> | |||
</translate> | |||
32 bit | <translate> | ||
< | <!--T:3--> | ||
hardware. | For 32-bit support, use | ||
</ | </translate> {{nixos:option|hardware.graphics.extraPackages32}}: | ||
{{file|/etc/nixos/configuration.nix|nix|<nowiki> | |||
{ | |||
hardware.graphics.extraPackages32 = with pkgs.pkgsi686Linux; [ intel-vaapi-driver ]; | |||
} | |||
</nowiki>}} | |||
<translate> | |||
=== AMD === <!--T:4--> | |||
<!--T:5--> | |||
AMD configuration (at least for Ryzen 5 iGPUs) works out of the box: | |||
</translate> | |||
{{file|/etc/nixos/configuration.nix|nix|<nowiki> | |||
{ | |||
hardware.graphics.enable = true; | |||
} | |||
</nowiki>}} | |||
== | <translate> | ||
=== NVIDIA === | |||
NVIDIA do not officially support accelerated video playback on Linux. A third-party implementation exists, but does not support Chrome<ref>https://github.com/elFarto/nvidia-vaapi-driver#chrome</ref>, and has significant limitations compared to the other implementations<ref>https://github.com/elFarto/nvidia-vaapi-driver#codec-support</ref>. | |||
NVIDIA users with a separate iGPU should generally prefer to use their iGPU for this, and therefore look to the above Intel and AMD sections instead. | |||
Users with only an NVIDIA GPU can attempt to use the third party implementation; the package is added to <code>hardware.graphics.extraPackages</code> by default, but it requires some additional setup to be useful<ref>https://github.com/elFarto/nvidia-vaapi-driver#configuration</ref>: | |||
</translate> | |||
= | {{file|/etc/nixos/configuration.nix|nix|<nowiki> | ||
{ config, lib, ...}: { | |||
environment.variables.LIBVA_DRIVER_NAME = "nvidia" | |||
# If used with Firefox | |||
environment.variables.MOZ_DISABLE_RDD_SANDBOX = "1"; | |||
=== | programs.firefox.preferences = let | ||
ffVersion = config.programs.firefox.package.version; | |||
in { | |||
"media.ffmpeg.vaapi.enabled" = lib.versionOlder ffVersion "137.0.0"; | |||
"media.hardware-video-decoding.force-enabled" = lib.versionAtLeast ffVersion "137.0.0"; | |||
"media.rdd-ffmpeg.enabled" = lib.versionOlder ffVersion "97.0.0"; | |||
"gfx.x11-egl.force-enabled" = true; | |||
"widget.dmabuf.force-enabled" = true; | |||
# Set this to true if your GPU supports AV1. | |||
# | |||
# This can be determined by reading the output of the | |||
# `vainfo` command, after the driver is enabled with | |||
# the environment variable. | |||
"media.av1.enabled" = false; | |||
}; | |||
} | |||
</nowiki>}} | |||
<translate> | |||
== Testing your configuration == <!--T:6--> | |||
<!--T:7--> | |||
You can | You can test your configuration by running: <code>nix-shell -p libva-utils --run vainfo</code> | ||
</translate> | |||
<translate> | |||
<!--T:8--> | |||
See [https://wiki.archlinux.org/index.php/Hardware_video_acceleration#Verification Arch Linux wiki#Hardware video acceleration] for more information. | |||
</translate> | |||
<translate> | |||
== Applications == <!--T:9--> | |||
</translate> | |||
<translate> | |||
<!--T:10--> | |||
=== Chromium === | |||
See [[Chromium#Accelerated_video_playback]]. | |||
</translate> | |||
<translate> | |||
=== Firefox === <!--T:11--> | |||
<!--T:12--> | |||
See [https://wiki.archlinux.org/index.php/Firefox#Hardware_video_acceleration Arch Linux wiki#Firefox]. | |||
</translate> | |||
<!--T:13--> | |||
<translate> | |||
=== MPV === <!--T:20--> | |||
</translate> | |||
<translate> | |||
<!--T:21--> | |||
You can place the following configuration in {{ic|~/.config/mpv/mpv.conf}}: | |||
</translate> | |||
<!--T:14--> | |||
<syntaxHighlight lang=ini> | <syntaxHighlight lang=ini> | ||
hwdec=auto-safe | hwdec=auto-safe | ||
vo=gpu | vo=gpu | ||
profile=gpu-hq | profile=gpu-hq | ||
gpu-context=wayland ; On wayland only | |||
</syntaxHighlight> | </syntaxHighlight> | ||
<!--T:15--> | |||
<translate> | |||
< | <!--T:22--> | ||
See [https://wiki.archlinux.org/title/mpv#Hardware_video_acceleration Arch Linux wiki#mpv]. | |||
</ | </translate> | ||
<translate> | |||
<!--T:16--> | |||
== 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. | |||
</translate> | |||
[[Category:Video]] | |||