Difference between revisions of "Accelerated Video Playback"
Doronbehar (talk | contribs) m (→MPV: Make MPV headline an internal link) |
m (rollback unauthorized mass edits) Tag: Rollback |
||
(12 intermediate revisions by 7 users not shown) | |||
Line 3: | Line 3: | ||
This is done by adding relevant <code>libva</code>-related packages to the <code>hardware.opengl.extraPackages</code> option. | This is done by adding relevant <code>libva</code>-related packages to the <code>hardware.opengl.extraPackages</code> option. | ||
− | Additionally, the <code>vaapiIntel</code> package can be | + | Additionally, the <code>intel-vaapi-driver</code> (previously <code>vaapiIntel</code>) package can be overridden to enable [https://github.com/01org/intel-hybrid-driver Intel's Hybrid Driver]. |
Intel users also can enable <code>intel-media-driver</code>. 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 also can enable <code>intel-media-driver</code>. 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 12: | Line 12: | ||
... | ... | ||
nixpkgs.config.packageOverrides = pkgs: { | nixpkgs.config.packageOverrides = pkgs: { | ||
− | + | intel-vaapi-driver = pkgs.intel-vaapi-driver.override { enableHybridCodec = true; }; | |
}; | }; | ||
hardware.opengl = { | hardware.opengl = { | ||
enable = true; | enable = true; | ||
extraPackages = with pkgs; [ | extraPackages = with pkgs; [ | ||
− | + | intel-media-driver # LIBVA_DRIVER_NAME=iHD | |
− | + | intel-vaapi-driver # LIBVA_DRIVER_NAME=i965 (older but works better for Firefox/Chromium) | |
libvdpau-va-gl | libvdpau-va-gl | ||
− | |||
]; | ]; | ||
}; | }; | ||
+ | environment.sessionVariables = { LIBVA_DRIVER_NAME = "iHD"; }; # Force intel-media-driver | ||
... | ... | ||
} | } | ||
</syntaxHighlight> | </syntaxHighlight> | ||
+ | |||
+ | 32 bit example: | ||
+ | <syntaxhighlight lang="nix"> | ||
+ | hardware.opengl.extraPackages32 = with pkgs.pkgsi686Linux; [ intel-vaapi-driver ]; | ||
+ | </syntaxhighlight> | ||
== Prepared Hardware configuration == | == Prepared Hardware configuration == | ||
Sometimes different opengl packages are required to achieve full performance. You can check different configuration repositories for similar hardware configuration: | 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] | * [https://github.com/NixOS/nixos-hardware The NixOS-Hardware Repository] | ||
+ | |||
+ | == Testing your configuration == | ||
+ | |||
+ | You can test your configuration by running: <code>nix-shell -p libva-utils --run vainfo</code> | ||
+ | |||
+ | See [https://wiki.archlinux.org/index.php/Hardware_video_acceleration#Verification Hardware video acceleration: Verification (Arch Wiki)] for more information. | ||
== Applications == | == Applications == | ||
===Chromium=== | ===Chromium=== | ||
− | + | ||
+ | See [https://nixos.wiki/wiki/Chromium#Enable_GPU_accelerated_video_decoding_.28VA-API.29 Chromium]. | ||
+ | |||
+ | === Firefox === | ||
+ | |||
+ | See [https://wiki.archlinux.org/index.php/Firefox#Hardware_video_acceleration Firefox#Hardware_video_acceleration (ArchWiki)]. | ||
===[[MPV]]=== | ===[[MPV]]=== | ||
− | + | You can place the following configuration in <code>~/.config/mpv/mpv.conf</code> | |
− | for mpv to use hardware acceleration for VP9 on Intel Broadwell: | + | for mpv to use hardware acceleration for VP9 on Intel Broadwell (and probably later): |
<syntaxHighlight lang=ini> | <syntaxHighlight lang=ini> | ||
− | hwdec= | + | hwdec=auto-safe |
vo=gpu | vo=gpu | ||
− | + | profile=gpu-hq | |
</syntaxHighlight> | </syntaxHighlight> | ||
Line 52: | Line 68: | ||
</syntaxHighlight> | </syntaxHighlight> | ||
− | This is based on the [https://wiki.archlinux.org/ | + | This is based on the [https://wiki.archlinux.org/title/mpv#Hardware_video_acceleration Arch Linux mpv article]. |
===Other=== | ===Other=== | ||
See the [https://wiki.archlinux.org/index.php/Hardware_video_acceleration#Application_support Arch Linux wiki]. | See the [https://wiki.archlinux.org/index.php/Hardware_video_acceleration#Application_support Arch Linux wiki]. |
Latest revision as of 10:58, 6 April 2024
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.opengl.extraPackages
option.
Additionally, the intel-vaapi-driver
(previously vaapiIntel
) package can be overridden to enable Intel's Hybrid Driver.
Intel users also can enable intel-media-driver
. It can be used at runtime with LIBVA_DRIVER_NAME=iHD mpv ...
for example, if you use Mic92's mpv settings below.
Sample configuration:
{
...
nixpkgs.config.packageOverrides = pkgs: {
intel-vaapi-driver = pkgs.intel-vaapi-driver.override { enableHybridCodec = true; };
};
hardware.opengl = {
enable = true;
extraPackages = with pkgs; [
intel-media-driver # LIBVA_DRIVER_NAME=iHD
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 ];
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.