Intel Graphics: Difference between revisions

imported>IgorM
m Console syntax highlight, category
m Reword comment in the example
 
(8 intermediate revisions by 5 users not shown)
Line 1: Line 1:
Example configuration with Hardware Acceleration & Quick Sync Video enabled on a modern Intel Graphics (Including ARC)
<syntaxhighlight lang="nix">
  services.xserver.videoDrivers = [ "modesetting" ];
  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 ==
== 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]]).
 
== 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>
  hardware.graphics = {
    enable = true;
    extraPackages = with pkgs; [
      ... # your Open GL, Vulkan and VAAPI drivers
      vpl-gpu-rt # or intel-media-sdk for QSV
    ];
  };
</syntaxHighlight>


== 12th Gen (Alder Lake) ==
== 12th Gen (Alder Lake) ==


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:
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>
<syntaxHighlight lang=console>
Line 16: Line 70:
<pre>boot.kernelParams = [ "i915.force_probe=<device ID>" ];</pre>
<pre>boot.kernelParams = [ "i915.force_probe=<device ID>" ];</pre>


[[Category:Hardware]]
[[Category:Video]]