Intel Graphics: Difference between revisions

imported>Colemickens
mNo edit summary
DHCP (talk | contribs)
m style fixes
 
(19 intermediate revisions by 10 users not shown)
Line 1: Line 1:
== Iris ==
Example configuration with Hardware Acceleration & Quick Sync Video enabled on a modern Intel Graphics (Including ARC)
<syntaxhighlight lang="nix">
services.xserver.videoDrivers = [ "modesetting" ];


To use the new Gallium <code>iris</code> driver, you can use the following in your system configuration:
hardware.graphics = {
  enable = true;
  extraPackages = with pkgs; [
    # Required for modern Intel GPUs (Xe iGPU and ARC)
    intel-media-driver     # VA-API (iHD) userspace
    vpl-gpu-rt            # oneVPL (QSV) runtime


    # Optional (compute / tooling):
    intel-compute-runtime  # OpenCL (NEO) + Level Zero for Arc/Xe
    # NOTE: 'intel-ocl' also exists as a legacy package; not recommended for Arc/Xe.
    # libvdpau-va-gl      # Only if you must run VDPAU-only apps
  ];
};
environment.sessionVariables = {
  LIBVA_DRIVER_NAME = "iHD";    # Prefer the modern iHD backend
  # VDPAU_DRIVER = "va_gl";      # Only if using libvdpau-va-gl
};
# May help if FFmpeg/VAAPI/QSV init fails (esp. on Arc with i915):
hardware.enableRedistributableFirmware = true;
boot.kernelParams = [ "i915.enable_guc=3" ];
# May help services that have trouble accessing /dev/dri (e.g., jellyfin/plex):
# users.users.<service>.extraGroups = [ "video" "render" ];
</syntaxhighlight>
== 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 ==
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]]).
== Quick Sync Video ==
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>
hardware.opengl.package =
hardware.graphics = {
   (pkgs.mesa.override {
  enable = true;
     galliumDrivers = [
   extraPackages = with pkgs; [
      "r300" "r600" "radeonsi" "nouveau" "virgl" "svga" "swrast"
    ... # your Open GL, Vulkan and VAAPI drivers
      "iris"
     vpl-gpu-rt # or intel-media-sdk for QSV
    ];
  ];
  });
};
</syntaxHighlight>
</syntaxHighlight>


Note that you might want additional entries in <code>extraPackages</code>, for example, to enable [[Accelerated_Video_Playback|"accelerated video playback"]].
== 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:
 
<syntaxHighlight lang=nix>
boot.kernelParams = [ "i915.force_probe=<device ID>" ];
</syntaxHighlight>


(See [https://github.com/NixOS/nixpkgs/pull/65017 this GitHub thread] for context and explanation.)
[[Category:Video]]