Intel Graphics: Difference between revisions

imported>Primeos
Move the VA-API note into a dedicated section
hardware.graphics -> hardware.opengl
 
(9 intermediate revisions by 7 users not shown)
Line 1: Line 1:
== Driver ==
Refer to the [https://nixos.org/manual/nixos/stable/#sec-x11--graphics-cards-intel Intel Graphics drivers] section of the NixOS manual.
== Video acceleration ==
== Video acceleration ==


To enable hardware (GPU) accelerated video decoding and encoding you need to add additional entries in <code>hardware.opengl.extraPackages</code> (see [[Accelerated_Video_Playback|"accelerated video playback"]]).
To enable hardware (GPU) accelerated video decoding and encoding you need to add additional entries in <code>hardware.graphics.extraPackages</code> (see [[Accelerated_Video_Playback|accelerated video playback]]).


== Iris ==
== Quick Sync Video ==


On <code>nixos-unstable</code> the new Gallium <code>iris</code> driver is enabled by default. For <code>nixos-20.03</code> you can use the following in your system configuration:
Intel Quick Sync Video (QSV) is a hardware accelerated media conversion framework for Intel GPUs.
Applications that can be accelerated using QSV include OBS Studio and ffmpeg.


QSV support can be used through either [https://github.com/Intel-Media-SDK/MediaSDK Intel Media SDK] or [https://github.com/intel/libvpl Intel VPL]. Intel VPL supersedes the now deprecated Media SDK.
Both libraries dispatch to a backing implementation that is different depending on the GPU generation at runtime. You need to add either <code>intel-media-sdk</code> or <code>vpl-gpu-rt</code> (previously <code>onevpl-intel-gpu</code>) to <code>hardware.graphics.extraPackages</code>. You can check the [https://github.com/intel/libvpl?tab=readme-ov-file#dispatcher-behavior-when-targeting-intel-gpus this] table to decide whether you need the Media SDK or VPL GPU runtime.
Sample configuration:
<syntaxHighlight lang=nix>
<syntaxHighlight lang=nix>
   config = {
   hardware.graphics = { # hardware.opengl in 24.05
     environment.variables = {
     enable = true;
      MESA_LOADER_DRIVER_OVERRIDE = "iris";
     extraPackages = with pkgs; [
     };
      ... # your Open GL, Vulkan and VAAPI drivers
    hardware.opengl.package = (pkgs.mesa.override {
       vpl-gpu-rt # or intel-media-sdk for QSV
       galliumDrivers = [ "nouveau" "virgl" "swrast" "iris" ];
     ];
     }).drivers;
   };
   };
</syntaxHighlight>
</syntaxHighlight>


(See [https://github.com/NixOS/nixpkgs/pull/65017 this GitHub thread] for context and explanation. <code>nouveau</code> is included to trigger the gallium-xa build, which is currently required because the nix derivation expects to copy the gallium-xa pkg-config files into place. Without <code>swrast</code> and/or <code>virgl</code>, it complains about needing softpipe/llvmpipe to build the <code>nine state tracker</code>.)
== 12th Gen (Alder Lake) ==
 
The X Server may fail to start with the newer 12th generation, Alder Lake, iRISxe integrated graphics chips. If this is the case, you can give the kernel a hint as to what driver to use. First confirm the graphic chip's device ID by running in a terminal:
 
<syntaxHighlight lang=console>
$ nix-shell -p pciutils --run "lspci -nn | grep VGA"
00:02.0 VGA compatible controller [0300]: Intel Corporation Alder Lake-UP3 GT2 [Iris Xe Graphics] [8086:46a8] (rev 0c)
</syntaxHighlight>
 
In this example, "46a8" is the device ID. You can then add this to your configuration and reboot:
 
<pre>boot.kernelParams = [ "i915.force_probe=<device ID>" ];</pre>
 
[[Category:Video]]