iGPU Driver Issues - Intel (Alder Lake)

Hello!

@randoneering I’m having what I assume to be a driver issue because certain applications seem fuzzy and more graphically demanding tasks have some severe lag. This has happened to me before on Arch, but I don’t know how to fix it on NixOS. Here’s my system info and what I’ve got in both configuration.nix and hardware-configuration.nix:

Any thoughts/solutions?

Try to delete
pkgs.vaapi-intel-hybrid
pkgs.driversi686Linux.libvdpau-va-gl
pkgs.xf86-video-intel

and graphics part do
hardware.graphics = {
enable = true;
extraPackages = with pkgs; [
intel-media-driver
vpl-gpu-rt
];
};

environment.sessionVariables = {
LIBVA_DRIVER_NAME = "iHD";
};

then show what nix-shell -p libva-utils --run vainfo command shows

1 Like

Here’s what I got:

Trying display: wayland
error: XDG_RUNTIME_DIR is invalid or not set in the environment.
Trying display: x11
libva info: VA-API version 1.23.0
libva info: User environment variable requested driver 'iHD'
libva info: Trying to open /run/opengl-driver/lib/dri/iHD_drv_video.so
libva info: Found init function __vaDriverInit_1_23
libva info: va_openDriver() returns 0
vainfo: VA-API version: 1.23 (libva 2.23.0)
vainfo: Driver version: Intel iHD driver for Intel(R) Gen Graphics - 26.1.6 ()
vainfo: Supported profile and entrypoints
      VAProfileNone                   :	VAEntrypointVideoProc
      VAProfileNone                   :	VAEntrypointStats
      VAProfileMPEG2Simple            :	VAEntrypointVLD
      VAProfileMPEG2Simple            :	VAEntrypointEncSlice
      VAProfileMPEG2Main              :	VAEntrypointVLD
      VAProfileMPEG2Main              :	VAEntrypointEncSlice
      VAProfileH264Main               :	VAEntrypointVLD
      VAProfileH264Main               :	VAEntrypointEncSlice
      VAProfileH264Main               :	VAEntrypointFEI
      VAProfileH264Main               :	VAEntrypointEncSliceLP
      VAProfileH264High               :	VAEntrypointVLD
      VAProfileH264High               :	VAEntrypointEncSlice
      VAProfileH264High               :	VAEntrypointFEI
      VAProfileH264High               :	VAEntrypointEncSliceLP
      VAProfileVC1Simple              :	VAEntrypointVLD
      VAProfileVC1Main                :	VAEntrypointVLD
      VAProfileVC1Advanced            :	VAEntrypointVLD
      VAProfileJPEGBaseline           :	VAEntrypointVLD
      VAProfileJPEGBaseline           :	VAEntrypointEncPicture
      VAProfileH264ConstrainedBaseline:	VAEntrypointVLD
      VAProfileH264ConstrainedBaseline:	VAEntrypointEncSlice
      VAProfileH264ConstrainedBaseline:	VAEntrypointFEI
      VAProfileH264ConstrainedBaseline:	VAEntrypointEncSliceLP
      VAProfileVP8Version0_3          :	VAEntrypointVLD
      VAProfileHEVCMain               :	VAEntrypointVLD
      VAProfileHEVCMain               :	VAEntrypointEncSlice
      VAProfileHEVCMain               :	VAEntrypointFEI
      VAProfileHEVCMain               :	VAEntrypointEncSliceLP
      VAProfileHEVCMain10             :	VAEntrypointVLD
      VAProfileHEVCMain10             :	VAEntrypointEncSlice
      VAProfileHEVCMain10             :	VAEntrypointEncSliceLP
      VAProfileVP9Profile0            :	VAEntrypointVLD
      VAProfileVP9Profile0            :	VAEntrypointEncSliceLP
      VAProfileVP9Profile1            :	VAEntrypointVLD
      VAProfileVP9Profile1            :	VAEntrypointEncSliceLP
      VAProfileVP9Profile2            :	VAEntrypointVLD
      VAProfileVP9Profile2            :	VAEntrypointEncSliceLP
      VAProfileVP9Profile3            :	VAEntrypointVLD
      VAProfileVP9Profile3            :	VAEntrypointEncSliceLP
      VAProfileHEVCMain12             :	VAEntrypointVLD
      VAProfileHEVCMain12             :	VAEntrypointEncSlice
      VAProfileHEVCMain422_10         :	VAEntrypointVLD
      VAProfileHEVCMain422_10         :	VAEntrypointEncSlice
      VAProfileHEVCMain422_12         :	VAEntrypointVLD
      VAProfileHEVCMain422_12         :	VAEntrypointEncSlice
      VAProfileHEVCMain444            :	VAEntrypointVLD
      VAProfileHEVCMain444            :	VAEntrypointEncSliceLP
      VAProfileHEVCMain444_10         :	VAEntrypointVLD
      VAProfileHEVCMain444_10         :	VAEntrypointEncSliceLP
      VAProfileHEVCMain444_12         :	VAEntrypointVLD
      VAProfileHEVCSccMain            :	VAEntrypointVLD
      VAProfileHEVCSccMain            :	VAEntrypointEncSliceLP
      VAProfileHEVCSccMain10          :	VAEntrypointVLD
      VAProfileHEVCSccMain10          :	VAEntrypointEncSliceLP
      VAProfileHEVCSccMain444         :	VAEntrypointVLD
      VAProfileHEVCSccMain444         :	VAEntrypointEncSliceLP
      VAProfileAV1Profile0            :	VAEntrypointVLD
      VAProfileHEVCSccMain444_10      :	VAEntrypointVLD
      VAProfileHEVCSccMain444_10      :	VAEntrypointEncSliceLP

Excellent, VA-API works as it should - the iHD driver caught everything correctly
Now OpenGL rendering show

nix-shell -p glxinfo --run "glxinfo | grep -E 'OpenGL vendor|OpenGL renderer|OpenGL version'"

and

dmesg | grep -i i915

1 Like

Cool!

Here’s the result of glxinfo (for some reason it made me run it as mesa-demos):

OpenGL vendor string: Intel
OpenGL renderer string: Mesa Intel(R) Iris(R) Xe Graphics (ADL GT2)
OpenGL version string: 4.6 (Compatibility Profile) Mesa 26.1.8

And the dmesg print:

[ 0.000000] Command line: initrd=\EFI\nixos\143gazi6aqpqqgaq36aqsn2ycajiwfn1-initrd-linux-7.2.1-initrd.efi init=/nix/store/lh330qdwvcy1pidj7z5xwmz8wgx076yk-nixos-system-nixos-26.05.20260827.d57af92/init i915.force_probe=46a8 i915.force_probe=46a8 root=fstab loglevel=4 lsm=landlock,yama,bpf
[ 0.029296] Kernel command line: initrd=\EFI\nixos\143gazi6aqpqqgaq36aqsn2ycajiwfn1-initrd-linux-7.2.1-initrd.efi init=/nix/store/lh330qdwvcy1pidj7z5xwmz8wgx076yk-nixos-system-nixos-26.05.20260827.d57af92/init i915.force_probe=46a8 i915.force_probe=46a8 root=fstab loglevel=4 lsm=landlock,yama,bpf
[ 6.914623] i915 0000:00:02.0: [drm] Found alderlake_p (device ID 46a8) integrated display version 13.00 stepping D0
[ 6.915660] i915 0000:00:02.0: [drm] VT-d active for gfx access
[ 6.939141] i915 0000:00:02.0: vgaarb: deactivate vga console
[ 6.939299] i915 0000:00:02.0: [drm] Using Transparent Hugepages
[ 6.947562] i915 0000:00:02.0: [drm] Finished loading DMC firmware i915/adlp_dmc.bin (v2.20)
[ 6.951407] i915 0000:00:02.0: [drm] [ENCODER:516:DDI B/PHY B] unusable PPS, disabling eDP
[ 6.952045] i915 0000:00:02.0: vgaarb: VGA decodes changed: olddecodes=io+mem,decodes=io:owns=io+mem
[ 6.974344] i915 0000:00:02.0: [drm] GT0: GuC firmware i915/adlp_guc_70.bin version 70.49.4
[ 6.974370] i915 0000:00:02.0: [drm] GT0: HuC firmware i915/tgl_huc.bin version 7.9.3
[ 7.023929] i915 0000:00:02.0: [drm] GT0: HuC: authenticated for all workloads
[ 7.024915] i915 0000:00:02.0: [drm] GT0: GUC: submission enabled
[ 7.024933] i915 0000:00:02.0: [drm] GT0: GUC: SLPC enabled
[ 7.025460] i915 0000:00:02.0: [drm] GT0: GUC: RC enabled
[ 7.027558] mei_hdcp 0000:00:16.0-b638ab7e-94e2-4ea2-a552-d1c54b627f04: bound 0000:00:02.0 (ops i915_hdcp_ops [i915])
[ 7.034191] i915 0000:00:02.0: [drm] Registered 4 planes with drm panic
[ 7.081989] [drm] Initialized i915 1.6.0 for 0000:00:02.0 on minor 1
[ 7.095060] fbcon: i915drmfb (fb0) is primary device
[ 7.131168] sof-audio-pci-intel-tgl 0000:00:1f.3: bound 0000:00:02.0 (ops intel_audio_component_bind_ops [i915])
[ 7.135942] i915 0000:00:02.0: [drm] fb0: i915drmfb frame buffer device

OpenGL renders normally.
GPU acceleration works at both the OpenGL and VA-API levels. Check if everything works after reboot. If no try to replace boot.kernelParams to
boot.kernelParams = [
"i915.enable_psr=0"
];

1 Like

Thank you so much, everything’s looking much better!

1 Like