For a long time, GPU drivers on Linux were a reliable source of frustration. NVIDIA required a proprietary blob that fought the kernel at every update. AMD's story was fragmented between a proprietary stack and a half-finished open-source one. Intel barely registered as a discrete GPU vendor. In 2026, that picture looks genuinely different. This guide covers where each vendor's driver stack stands today, how to install and verify drivers correctly, and what to watch for when things go wrong.

NVIDIA AMD Intel
Kernel driver Open KM (OKM)
proprietary also available
AMDGPU
in mainline since 4.2
Xe
kernel 6.11+ for Battlemage
Vulkan driver Proprietary
NVK in Mesa (stable, Vulkan 1.4)
RADV (Mesa)
AMDVLK discontinued Sep 2025
ANV (Mesa)
Intel-maintained
Wayland support Good
explicit sync since 555+
Excellent
native, no extra config
Good
Battlemage + Lunar Lake
Install effort Medium
DKMS, Secure Boot config
Minimal
ships with kernel + Mesa
Minimal
auto-loads on 6.11+
Compute (AI/ML) CUDA
industry standard
ROCm 7.2.0
CUDA-compatible layer
oneAPI / OpenCL
limited ecosystem
Legacy GPU support Dropped Maxwell/Pascal/Volta
590 branch, Dec 2025
GCN 5+ (Vega+)
actively supported
Arc + Xe only
older iGPU via i915
$ interactive guide
Find the right driver path for your situation
What GPU brand do you have?
Which NVIDIA GPU generation?
Which AMD GPU generation?
Which Intel GPU?
What is the discrete GPU in your laptop?
recommended path
Use the open kernel module (OKM) with the 580.x production driver. It is the default since the 560 series. Install via sudo ubuntu-drivers install on Ubuntu, or manually with apt install nvidia-open-kernel-dkms nvidia-driver. If Secure Boot is enabled, you will need to enroll a MOK key on the first reboot.
legacy hardware path
Maxwell, Pascal, and Volta were dropped from the 590 branch in December 2025. You need legacy community packages such as nvidia-580xx-dkms on Arch-based systems, or the distribution's equivalent legacy driver package. Active development has ended for these architectures. The 580.x branch was the last to ship any support. Verify your distribution's policy before relying on legacy packages in production.
NVIDIA section
recommended path
Nothing to install. AMDGPU is in the mainline kernel and Mesa RADV ships with every major distribution. Confirm the driver is active with glxinfo | grep "OpenGL renderer". For AI or ML compute, install ROCm 7.2.0 on top using the amdgpu-install script.
AMD section
legacy hardware path
Pre-GCN 5 cards use the older radeon kernel driver, which remains in the kernel. Linux 6.19 delivers performance improvements for GCN 1.0 and 1.1 hardware. These cards are not supported by AMDGPU or ROCm. Verify your card's GCN version before assuming AMDGPU will load for it.
AMD section
recommended path
The Xe kernel driver loads automatically on kernel 6.11 and later. Nothing to install for the kernel or Vulkan driver (ANV is in Mesa). Add intel-media-va-driver-non-free separately for hardware video decode. Wayland works cleanly on this hardware.
Intel section
transition path
Arc A-series cards can use the Xe driver but some users reported instability during the i915-to-xe transition. On kernel 6.11+, try Xe first. If you encounter rendering anomalies, check whether your distribution's kernel config still allows falling back to i915. Firmware updates through linux-firmware matter for this hardware.
Intel section
status
Older Intel integrated graphics (Tiger Lake, Alder Lake, Raptor Lake) remain on the i915 driver, which is stable and well-supported. No additional configuration is needed. The i915 driver is not being removed -- new development is simply concentrated on Xe for newer silicon.
Intel section
hybrid path
Intel+NVIDIA and AMD+NVIDIA laptops use PRIME offloading. The integrated GPU handles the display output; the discrete NVIDIA GPU handles workloads when invoked with __NV_PRIME_RENDER_OFFLOAD=1. The 570 and 580 driver series improved power management for idle dGPU states. Verify your laptop's dGPU powers down to D3cold when idle with cat /sys/bus/pci/devices/.../power_state. Wayland works with PRIME on the 555+ driver series.
hybrid path
AMD iGPU + AMD dGPU configurations work cleanly on modern kernels. PRIME switching, power management, and offloading all function without manual configuration. Use DRI_PRIME=1 to route specific applications to the discrete GPU. This is the lowest-friction dual-GPU laptop configuration on Linux.

How Linux GPU Drivers Work

Linux graphics involves two layers that are easy to confuse. The kernel driver handles the low-level communication between the operating system and the GPU hardware -- memory management, command submission, power states, and display output via the Direct Rendering Manager (DRM) subsystem. Above it sits the userspace driver, which translates OpenGL, Vulkan, or compute API calls into GPU instructions.

On AMD and Intel, both layers are open-source and ship together through Mesa. On NVIDIA, the kernel module is now available in both proprietary and open-source variants, but the userspace components remain closed. Understanding this split matters when you are debugging a driver failure -- a crash in the kernel module looks very different from a Vulkan driver bug in Mesa.

# driver stack by vendor
Linux Kernel / DRM Subsystem Direct Rendering Manager — shared interface for all GPU drivers
nvidia.ko / nouveau
OKM (open) or proprietary
amdgpu
mainline kernel since 4.2
xe / i915
xe default on 6.11+ (Battlemage)
libGL / libvulkan
proprietary (closed source)
Mesa RADV / radeonsi
open source (Mesa)
Mesa ANV / iris
open source (Mesa)
Your application game / desktop compositor / AI workload — calls OpenGL, Vulkan, or CUDA
open source proprietary / mixed
Note

The DRM subsystem is the kernel framework that manages GPU hardware, framebuffers, and display connectors. Every major GPU driver on Linux -- NVIDIA's nvidia.ko, AMD's amdgpu, and Intel's xe -- registers itself with DRM. This shared interface is why tools like drm_info and wlr-randr work across all three vendors.

Before touching any driver, identify what hardware you have and what the kernel has already loaded:

identify GPU and current driver
# List GPU hardware and bound kernel module
$ lspci -k | grep -A 2 -i vga

# Check DRM devices recognized by the kernel
$ ls /dev/dri/

# Confirm which OpenGL driver is active
$ glxinfo | grep "OpenGL renderer"
key events: 2025 – 2026
Jan 2026
NVIDIA driver security patches. Drivers older than the 550.x branch received critical security fixes. 470.x legacy branch nearing end of life.
Jan 21, 2026
AMD ROCm 7.2.0 released. Extended RDNA4 support to Radeon AI PRO R9600D and RX 9060 XT LP. Supported on Ubuntu 22.04.3, 24.04, and RHEL 10.0.
Dec 2025
NVIDIA 590 branch drops Maxwell, Pascal, Volta. Arch Linux and Phoronix confirmed: 590 branch switches to open kernel modules by default and removes legacy architecture support.
Nov 26, 2025
KDE announces Wayland-only future. Plasma 6.8 (expected October 2026) will drop the X11 session option. Plasma 6.7 will receive extended bug-fix releases into early 2027.
Sep 15, 2025
AMD discontinues AMDVLK. AMD formally announced the end of the open-source AMDVLK Vulkan driver project, redirecting all Linux Vulkan support to Mesa RADV.
2025
Mesa 25.1 makes NVK the default OpenGL path for NVIDIA Turing+. NVK + Zink replaces the old Nouveau GL driver as the default OpenGL implementation on Turing and newer hardware.
2024
Intel Xe driver becomes default for Battlemage (kernel 6.11). Arc B580/B570 and Lunar Lake integrated graphics ship with the Xe driver as the automatic binding.

NVIDIA: Proprietary vs Open Kernel Module NVIDIA

NVIDIA's Linux driver situation has improved substantially since the open kernel module (OKM) was released in 2022 and has been maturing ever since. As of March 2026, the current production branch is 580.x, with 590.x as the latest feature branch. Starting with the 560 driver series, the open kernel module became the default and recommended option — NVIDIA's own installation guide confirms that as of the 560 series, the open kernel module is the default and recommended option for Turing and newer hardware. Maxwell, Pascal, and Volta owners face a harder situation: the 590 branch dropped all three architectures from active support, meaning those cards now require legacy community-maintained packages (such as nvidia-580xx-dkms from the AUR on Arch-based systems) and will no longer receive game-ready optimizations.

What changed with the open kernel module

The closed NVIDIA kernel module was notorious for fighting Linux's standard kernel interfaces. It bypassed DRM APIs, which is why NVIDIA GPUs historically could not use fbdev, had KMS (Kernel Mode Setting) disabled by default, and caused chaos with suspend/resume. The open kernel module changes this by registering properly with the DRM subsystem. It still ships with the same proprietary userspace components -- libGL, libvulkan, CUDA runtime -- but the kernel-facing code is now auditable and better maintained alongside kernel updates.

When a driver bypasses DRM, the kernel has no centralized record of who owns the GPU hardware at any moment. On suspend, the kernel tries to save and restore GPU state through DRM -- if the NVIDIA module is operating outside that framework, the kernel either can't reach it or conflicts with it. This is why legacy NVIDIA configurations on Linux frequently produced black screens after waking from sleep, or required disabling suspend entirely. With DRM integration, suspend/resume follows the same code path as AMD and Intel, and the failures are dramatically rarer.

The fully open-source path: NVK and Nouveau

If you want a fully open-source NVIDIA stack with no proprietary components, that path now exists and is production-ready. NVK is an open-source Vulkan 1.4 driver for NVIDIA hardware in Mesa, developed primarily by Faith Ekstrand at Collabora. It reached stable status with Mesa 24.1 and ships by default in distributions that include it in their Vulkan driver list. Starting with Mesa 25.1, NVK combined with the Zink OpenGL-on-Vulkan layer is the default OpenGL implementation for Turing and newer GPUs -- replacing the old Nouveau GL driver on those architectures. The kernel side of this stack uses the nouveau kernel module rather than NVIDIA's open kernel module.

The tradeoffs are real. NVK does not provide CUDA, DLSS, or hardware ray tracing -- those require the proprietary driver stack. Gaming performance through NVK and DXVK is workable but trails the proprietary driver on demanding titles, particularly those relying on shader pre-compilation. For a desktop workstation, media workloads, or any setup where avoiding the proprietary blob is the priority, NVK is now a legitimate option.

# open vs proprietary NVIDIA stack on Linux
NVK + Nouveau
fully open source
Proprietary (OKM)
recommended for most
Vulkan
NVK (Mesa) — Vulkan 1.4
Proprietary Vulkan
OpenGL
NVK + Zink (Mesa 25.1+)
Proprietary libGL
CUDA
Not available
Full CUDA support
DLSS
Not available
Available (Turing+)
Ray tracing
Not available
RTX hardware RT
Wayland
Works (via nouveau)
Works (555+ explicit sync)
Best for
Privacy, no-blob policy, desktop/media
Gaming, AI/ML, professional workloads

Secure Boot and NVIDIA: why your driver installs but does not load

This is the failure mode that causes more confusion than any other NVIDIA issue on Linux. You install the driver, everything appears to succeed, you reboot -- and the GPU is still running Nouveau or falling back to software rendering. The culprit is almost always Secure Boot.

When Secure Boot is active, the UEFI firmware only loads kernel modules that are cryptographically signed by a trusted key. NVIDIA's kernel module is a third-party module and is not pre-trusted. The install process generates a Machine Owner Key (MOK) and signs the module with it, but the key itself must be enrolled in firmware before it will be accepted. That enrollment happens at a one-time prompt on the next reboot. If you miss that prompt -- by pressing the wrong button on the blue MOK Manager screen, or if you did not notice the screen at all -- the module will be built but the firmware will refuse to load it.

Pro Tip

When installing on Ubuntu or Debian, use ubuntu-drivers install or apt install nvidia-open-kernel-dkms nvidia-driver to get the open module build. On systems with Secure Boot enabled, DKMS will prompt you to enroll a machine owner key (MOK). Do this before the driver install, not after -- otherwise you will boot to a black screen and need to enroll from the UEFI firmware menu manually.

If you missed the MOK enrollment prompt, you can re-trigger it without reinstalling:

Secure Boot MOK enrollment recovery
# Check whether Secure Boot is active
$ mokutil --sb-state
SecureBoot enabled

# Re-trigger MOK enrollment for the existing key
$ sudo update-secureboot-policy --enroll-key

# Alternative: import the MOK key directly (Ubuntu/Debian path)
$ sudo mokutil --import /var/lib/shim-signed/mok/MOK.der

# Reboot -- at the blue MokManager screen, select:
# "Enroll MOK" -> "Continue" -> "Yes" -> enter the password you set
# Do NOT select "Continue Boot" -- that skips enrollment
$ sudo reboot

# After reboot, verify the module loaded
$ lsmod | grep nvidia
$ nvidia-smi
Warning

On the MokManager blue screen, Enroll MOK is the correct choice. Continue Boot skips enrollment and leaves the module unsigned. If you accidentally select Continue Boot, run sudo update-secureboot-policy --enroll-key to re-trigger the prompt on the next reboot.

Installing the NVIDIA driver on Ubuntu

NVIDIA driver install -- Ubuntu
# Let ubuntu-drivers recommend the right version
$ sudo ubuntu-drivers list
nvidia-driver-580-open
nvidia-driver-580

# Install the recommended open module version (OKM is default since 560.x)
$ sudo ubuntu-drivers install

# Or install the open module build manually with apt
$ sudo apt install nvidia-open-kernel-dkms nvidia-driver

# Reboot, then verify
$ nvidia-smi

NVIDIA and Wayland

The flickering and tearing that plagued NVIDIA GPUs under Wayland was caused by a missing explicit synchronization protocol. NVIDIA adopted linux-drm-syncobj-v1 in the 555 driver series, and the 570 and 580 series have refined it further. On GNOME 46 and KDE Plasma 6.1 and later, the experience is now comparable to X11 for standard desktop use. Some compositors and XFCE-based setups have reported regression issues with the 580 and 590 series -- if you hit compositor breakage, check whether your compositor's vertical blank mode conflicts with NVIDIA's settings before rolling back.

Warning

NVIDIA released security patches for their driver stack in January 2026. If you are running anything older than the 550.x branch, update immediately. The 470.x legacy branch receives security fixes but is approaching end of life -- check NVIDIA's Unix Drivers page for the current status of your branch before relying on it in production.

AMD: The All-In Open-Source Stack AMD

AMD's driver story is the simplest in 2026: everything is open-source and everything lives in the upstream kernel and Mesa. In May 2025, AMD announced it would begin officially supporting Mesa RADV as part of its packaged Radeon Software for Linux while dropping its proprietary OpenGL and Vulkan drivers from that package. On September 15, 2025, AMD formally confirmed the discontinuation of AMDVLK on its GitHub page. AMD's JianRong JIN announced that the company was unifying its Linux Vulkan driver strategy by ending the AMDVLK project and moving all official support to the Mesa RADV driver as the sole supported open-source Vulkan driver for Radeon graphics. That leaves AMDGPU (kernel driver) and RADV (Mesa Vulkan driver) as the entire stack. For most users on GCN 5 (Vega) and newer hardware, there is nothing to install -- the drivers ship with the kernel and Mesa packages on every major distribution.

The AMDGPU and RADV stack

AMDGPU is the kernel driver that handles hardware initialization, command scheduling, memory management, and power management. RADV is the community-maintained Vulkan driver inside Mesa that uses the ACO shader compiler. ACO compiles shaders faster than AMD's earlier LLVM compiler backend and consistently performs better in gaming workloads -- benchmarks on recent Ryzen hardware show RADV outperforming the old proprietary driver by measurable margins. For compute workloads, AMD provides the ROCm stack as a separate install on top of AMDGPU.

AMD's proprietary driver (AMDVLK) was engineered to be maximally portable across platforms, which meant architectural choices that favored flexibility over raw Linux performance. RADV was built specifically for Linux by developers who could focus entirely on the Mesa code path, without needing to maintain a cross-platform abstraction layer. The ACO compiler in particular was designed from the start to optimize AMD's shader ISA for Linux workloads. It generates faster-compiling, better-optimized machine code for the same GPU instructions that AMDVLK's LLVM backend handled more conservatively. This is a case where the open-source community's narrower focus produced better results for the target platform than the vendor's broader implementation.
AMD driver install -- Ubuntu / Debian
# Mesa ships by default -- verify it is current
$ glxinfo | grep "OpenGL renderer"
OpenGL renderer string: AMD Radeon RX 7800 XT (radeonsi, navi32, LLVM 18.1.8, DRM 3.59)

# For Vulkan, confirm RADV is the active driver
$ vulkaninfo | grep "driverName"
driverName = radv

# GPU monitoring (install via package manager)
$ sudo apt install radeontop
$ radeontop

ROCm for compute workloads

If you are running AI workloads or machine learning inference on Linux, AMD's ROCm platform installs on top of AMDGPU and provides a CUDA-compatible compute layer. AMD publishes a package repository and the amdgpu-install script for supported distributions. ROCm 7.2.0, released January 21, 2026, is the current production build and is supported on Ubuntu 22.04.3, Ubuntu 24.04, and RHEL 10.0 (for Radeon products). It extends RDNA4 GPU support to the Radeon AI PRO R9600D and Radeon RX 9060 XT LP. The install path below uses Ubuntu, which has broader AMDGPU support than RHEL for desktop compute:

AMD ROCm 7.2.0 install -- Ubuntu 22.04 / 24.04
# Download and install the amdgpu-install script
$ sudo apt update && sudo apt install -y wget
$ wget https://repo.radeon.com/amdgpu-install/7.2/ubuntu/noble/amdgpu-install_7.2.70200-1_all.deb
$ sudo apt install ./amdgpu-install_7.2.70200-1_all.deb
$ sudo amdgpu-install -y --usecase=graphics,rocm
$ sudo usermod -a -G render,video $LOGNAME
# Reboot after install, then verify ROCm
$ rocminfo | grep "Agent Type"
Pro Tip

The usermod -a -G render,video step is easy to forget and will leave you with permission errors on /dev/dri/renderD128 when trying to run ROCm applications as a non-root user. Always run it before rebooting. If you already rebooted and hit the error, add the user to those groups and log out and back in.

Legacy AMD hardware

The older radeon kernel driver (used for pre-GCN Terascale hardware) is still present in the kernel for cards that AMDGPU does not support. Linux kernel 6.19, arriving in early 2026, delivers significant performance improvements for GCN 1.0 and GCN 1.1 cards by migrating them onto updated internal paths. If you are running an older Radeon card and see unexpectedly poor performance, check your kernel version first -- a simple upgrade may resolve it without any driver configuration changes.

Intel: The Xe Driver Transition Intel

Intel has been the overlooked third option for Linux GPU drivers, but that is changing with the Xe kernel driver. Intel is migrating from the aging i915 driver to xe, a ground-up rewrite built for modern Linux DRM interfaces. The Xe driver is the default for Lunar Lake integrated graphics and Battlemage (Arc B-series) discrete GPUs. On older Arc Alchemist (A-series) cards, you can force the switch, though some users have reported inconsistencies during the transition period.

verify Intel Xe driver is active
# Check which driver is bound to the Intel GPU
$ lspci -k | grep -A 3 "VGA\|Display"
Kernel driver in use: xe

# GPU utilization monitoring
$ sudo apt install intel-gpu-tools
$ sudo intel_gpu_top

# Hardware video decode acceleration (install separately)
$ sudo apt install intel-media-va-driver-non-free

For SR-IOV virtualization on Intel Battlemage, Linux 6.17 adds support in the Xe driver -- but with an important caveat: SR-IOV is only enabled for Arc Pro products (such as the Arc Pro B50), not the consumer B-series cards like the B580 or B570. Phoronix confirmed this limitation explicitly, reporting that SR-IOV virtualization support in the Intel Xe kernel driver is restricted to Arc Pro products only. If you run GPU-passthrough or shared GPU environments, the Arc Pro line is the hardware to target. The i915 driver remains in the kernel for older Intel graphics and is not going anywhere soon, but new development is concentrated on Xe.

Wayland Compatibility in 2026

Wayland is no longer optional on major distributions. Fedora and Ubuntu use it by default, and KDE announced in November 2025 that the upcoming Plasma 6.8 release -- expected around October 2026 -- will drop the X11 session entirely, making Wayland-exclusive the future default. The KDE team stated that "the vast majority of our users are already using the Wayland session." Until then, X11 session support continues through the Plasma 6.7 series, which will receive extra bug-fix releases into early 2027 for users who need the transition time. Whether your GPU driver works cleanly under Wayland is now a primary evaluation criterion, not an afterthought.

The key protocol for GPU Wayland compatibility is explicit synchronization via linux-drm-syncobj-v1. Without it, compositors have to fall back to implicit synchronization, which is what caused the widespread flickering on NVIDIA hardware for years. All three major GPU stacks now support this protocol -- AMD and Intel through Mesa, NVIDIA through the 555+ driver series. If you are experiencing rendering artifacts or screen tearing under Wayland, verifying explicit sync support is the first diagnostic step:

Implicit sync means the GPU driver automatically handles the timing of when a rendered frame is handed off to the display compositor. The problem: under Wayland, the compositor and the GPU driver are separate processes. With implicit sync, the compositor has no reliable way to know when the GPU has actually finished rendering a frame -- it has to guess, or use expensive polling. The result is the compositor sometimes displaying a frame that the GPU is still writing to, producing tearing or flickering artifacts. Explicit sync moves this coordination into a defined protocol: the GPU driver signals a fence object when rendering is complete, and the compositor waits on that fence before presenting the frame. No guessing, no polling, no tearing.
check Wayland explicit sync support
# Check available Wayland protocols (requires wayland-utils)
$ wayland-info | grep syncobj

# Check Vulkan extensions for present timing
$ vulkaninfo 2>/dev/null | grep -i "present\|sync"

# NVIDIA specific: confirm explicit sync is active
$ nvidia-settings -q CurrentMetaMode | grep sync

If you are building or choosing a desktop environment on Linux and GPU driver stability under Wayland is a priority, AMD remains the lowest-friction choice. The driver is in the kernel, Mesa ships with every distribution, and no additional configuration is needed for Wayland support.

Forcing an X11 session when Wayland does not work

Despite the direction of travel, there are still hardware and driver combinations where Wayland is not reliable -- particularly older NVIDIA cards on the legacy driver stack, certain PRIME configurations, and some virtual machine setups. Knowing how to fall back to X11 is useful while you troubleshoot.

On GNOME, the X11 session option appears on the login screen when you click the gear icon next to the sign-in button. Select GNOME on Xorg to start an X11 session. On KDE Plasma 6.7 and earlier, the session selector at the bottom left of the login screen offers both Wayland and X11 options. Note that KDE Plasma 6.8 (expected October 2026) will remove the X11 session option -- if you are dependent on X11 for hardware or workflow reasons, plan your upgrade timeline accordingly. On other display managers, look for a session type selector on the login screen or set the default session in /etc/sddm.conf or /etc/gdm3/daemon.conf.

force X11 session via display manager config
# GDM (GNOME): force X11 globally by uncommenting WaylandEnable=false
$ sudo nano /etc/gdm3/daemon.conf
# Under [daemon], set:
WaylandEnable=false

# SDDM (KDE): set default session to x11
$ sudo nano /etc/sddm.conf
# Under [Autologin] or create [General], set:
DisplayServer=x11

# Confirm which display server is active after login
$ echo $XDG_SESSION_TYPE
x11

Hybrid Graphics and Laptops

Laptops with both an integrated GPU (iGPU) and a discrete GPU (dGPU) add another layer of complexity. Linux handles this through PRIME, which allows applications to select which GPU renders a frame while the display output goes through a different device.

AMD iGPU plus AMD dGPU configurations work cleanly on Linux. Power management, switching, and PRIME offloading all function without manual configuration on modern kernels. Intel plus NVIDIA (Optimus) setups work but require more hands-on setup -- PRIME switching functions, but battery life can suffer if the discrete NVIDIA GPU does not power down properly when idle. The 570 and 580 NVIDIA driver series improved PRIME power management, but it still requires validation on each laptop model. AMD iGPU plus NVIDIA dGPU combinations fall in a similar category.

# PRIME power states: what to expect
D0 — active
dGPU is powered and rendering. Expected when running a game or GPU workload with PRIME offload. Normal power draw, high performance.
cat power_state → D0
D3hot — suspended
dGPU is in a low-power suspended state but still powered on the PCIe bus. Acceptable on some configurations but not ideal for battery life.
cat power_state → D3hot
D3cold — powered off
dGPU is completely powered off. This is the target idle state for battery-powered PRIME setups. NVIDIA 570+ driver improved D3cold reliability.
cat power_state → D3cold
Check: cat /sys/bus/pci/devices/0000:01:00.0/power_state — replace the PCI address with your dGPU slot from lspci
PRIME GPU offloading -- run app on dGPU
# Run an application on the NVIDIA discrete GPU (PRIME offload)
$ __NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia glxgears

# AMD PRIME offload -- target the discrete GPU by PCI slot
$ DRI_PRIME=1 glxinfo | grep "OpenGL renderer"

# Check power state of NVIDIA dGPU (should be D3cold when idle)
$ cat /sys/bus/pci/devices/0000:01:00.0/power_state

Diagnosing Driver Problems

GPU driver failures on Linux tend to fall into a few categories: the module not loading, the module loading but the userspace driver not finding it, or the driver loading correctly but producing rendering errors. The diagnostic path is the same regardless of vendor -- start at the kernel and work upward.

$ diagnostic guide
What symptom are you seeing?
What best describes the problem?
Does lsmod | grep nvidia show the nvidia module?
Is Secure Boot enabled on this system?
Which GPU vendor?
Which driver type broke?
likely cause: secure boot MOK not enrolled
Run mokutil --sb-state. If Secure Boot is enabled, the NVIDIA module was never trusted by firmware. Run sudo update-secureboot-policy --enroll-key to re-trigger enrollment, then reboot and select Enroll MOK on the blue MokManager screen. Do not select Continue Boot. After enrollment, lsmod | grep nvidia should show the module.
Secure Boot guide
likely cause: compositor or display manager conflict
The module is loaded but display is not initializing. Check dmesg | grep -i "drm\|nvidia\|error" for DRM initialization failures. A common cause: the display manager is starting before KMS is ready. Try adding nvidia-drm.modeset=1 to your kernel parameters (/etc/default/grub, then run sudo update-grub). On Wayland, also verify the compositor supports the linux-drm-syncobj-v1 protocol.
Wayland section
likely cause: unsigned module
With Secure Boot on, the NVIDIA module must be signed with an enrolled MOK. If the module built successfully but is not loading, the key was never enrolled. Run sudo mokutil --import /var/lib/shim-signed/mok/MOK.der, reboot, and complete enrollment on the MokManager screen. Verify afterwards with nvidia-smi.
Secure Boot guide
likely cause: DKMS build failure
Run dkms status to check whether the NVIDIA module built successfully. If status shows an error, run sudo dkms autoinstall and check the output. The build commonly fails when the installed kernel headers do not match the running kernel version. Verify with uname -r vs dpkg -l | grep linux-headers. Install the correct headers with sudo apt install linux-headers-$(uname -r), then retry dkms autoinstall.
likely cause: explicit sync missing or compositor conflict
Verify you are on driver 555 or newer (ideally 580.x). Run wayland-info | grep syncobj -- if the protocol is absent, your compositor does not support explicit sync yet. Flickering on GNOME or KDE is usually resolved by updating to GNOME 46+ or KDE Plasma 6.1+. If flickering persists after updating, check whether nvidia-drm.modeset=1 is set in your kernel parameters and that the compositor's VBlank mode is not conflicting with NVIDIA settings.
Wayland section
AMD Wayland artifacts
AMD Wayland issues are rare since AMDGPU has native explicit sync. If you see tearing, run glxinfo | grep "OpenGL renderer" to confirm RADV is active (not llvmpipe or softpipe, which indicate a Mesa configuration problem). Also check your Mesa version: glxinfo | grep Mesa. Mesa 24.x or newer is strongly recommended. If using a very recent RDNA4 card, verify it is in the ROCm 7.2.0 compatibility matrix.
AMD section
Intel Wayland artifacts
For Battlemage and Lunar Lake on the Xe driver, verify firmware is up to date: sudo apt install linux-firmware. Xe firmware updates ship in the linux-firmware package and are the most common fix for rendering anomalies on Arc hardware. Also confirm the driver binding with lspci -k | grep -A 3 VGA -- you should see Kernel driver in use: xe. If you see i915 on Battlemage hardware, your kernel may be older than 6.11.
Intel section
DKMS module needs rebuild
After a kernel update, DKMS must rebuild the NVIDIA module for the new kernel. Run dkms status -- if the module shows "added" but not "installed" for the new kernel, run sudo dkms autoinstall. If the build fails, the new kernel version may not yet be supported by your driver branch. Check NVIDIA's Unix Drivers page for a driver version that supports your kernel, then update: sudo apt install nvidia-driver-<version>. Kernel header mismatches are the most common non-bug cause.
Mesa or firmware version issue
For AMD and Intel, the kernel driver and Mesa are separate packages. A kernel update rarely breaks them, but a partial upgrade can leave Mesa behind. Run sudo apt upgrade to ensure Mesa is current. For Intel Xe, firmware updates are the more common culprit: sudo apt install --reinstall linux-firmware and reboot. If the problem appeared after a distribution upgrade, check whether the Mesa version in the new release is compatible with your GPU generation.
GPU driver diagnostics
# Check kernel messages for GPU driver errors at boot
$ dmesg | grep -i "drm\|nvidia\|amdgpu\|xe\|error"

# Check if the kernel module loaded
$ lsmod | grep -E "nvidia|amdgpu|xe"

# For NVIDIA -- full driver and hardware status
$ nvidia-smi -q

# Check DKMS build status (NVIDIA, out-of-tree modules)
$ dkms status

# Confirm Mesa version (AMD / Intel userspace)
$ glxinfo | grep "Mesa"

# Watch GPU utilization in real time
$ watch -n 1 cat /sys/class/drm/card0/device/gpu_busy_percent

DKMS build failures on NVIDIA are a common source of pain after kernel updates. If dkms status shows an error for the nvidia module, run sudo dkms autoinstall to attempt a rebuild. If the build fails, you likely need a newer driver that supports the updated kernel. Check NVIDIA's Unix Drivers page for the current recommended version and whether a patch release is available for your kernel version. Kernel version mismatches between the running kernel and the installed headers are the most common cause of DKMS failures that are not actual driver bugs.

# what each diagnostic command tells you
dmesg | grep -i "drm|nvidia|error"
Shows kernel-level driver events at boot. If the module failed to load or DRM initialization failed, the reason appears here before any userspace tools can see it.
lsmod | grep -E "nvidia|amdgpu|xe"
Confirms whether the kernel module is actually loaded into memory. If nothing appears, the module is not running regardless of what the package manager says is installed.
dkms status
Shows the build status of every DKMS-managed module against every installed kernel. An "added" but not "installed" state means the module was not compiled for the running kernel.
glxinfo | grep "OpenGL renderer"
Shows which driver is handling OpenGL at the userspace level. If you see "llvmpipe" or "softpipe" here, GPU acceleration is completely absent and you are running on software rendering.
nvidia-smi -q
NVIDIA-only: shows driver version, GPU health, VRAM usage, temperature, and process list. If this command fails entirely, the kernel module is not loaded. If it runs but shows errors, the module loaded but hardware communication failed.
Caution

Never install NVIDIA drivers by running the .run installer from NVIDIA's website on a distribution-managed system. It bypasses the package manager, overwrites system libraries, and will break on the next kernel update. Always use the distribution's package management method -- apt, dnf, or the distribution's hardware manager. The .run installer is only appropriate for custom builds or embedded environments where no package management exists.

GPU Drivers and Linux Gaming

Linux gaming has moved well beyond novelty territory, and GPU driver quality is central to the experience. If you are optimizing Linux for gaming with Steam and Lutris, the GPU driver stack you choose shapes which Proton features work, how well shader compilation performs, and whether you hit per-game workarounds.

AMD with RADV gives you the ACO shader compiler, which compiles shaders on demand faster than any other stack on Linux. NVIDIA with the 580.x driver series gives you DLSS, RTX ray tracing, and the best performance ceiling on supported titles. The tradeoff is setup complexity -- AMD installs and works, while NVIDIA requires more attention to driver version, Wayland configuration, and PRIME setup on laptops. For users running a SteamOS or HoloISO gaming environment, AMD is the native hardware target and the path of least resistance.

Choosing a GPU vendor for Linux in 2026 is less about raw performance than it used to be. Both AMD and NVIDIA are competitive. The real question is how much configuration you want to manage.

# gaming driver comparison: Linux 2026
NVIDIA 580.x
AMD RADV
Shader compile
Slower (proprietary backend)
ACO — fastest on Linux
DLSS
Yes (Turing+, via Proton)
FSR 4 (open standard)
Ray tracing
RTX hardware RT via Proton
RDNA3+ via RADV
Proton compatibility
Excellent
Excellent (SteamOS native)
Wayland gaming
Good (555+ explicit sync)
Excellent (native)
Setup friction
Medium (DKMS, Secure Boot, PRIME)
Low (ships with kernel)

Step 1: Identify your GPU and choose the right driver

Run lspci -k | grep -A 2 -i vga to identify your GPU and confirm which kernel module, if any, is already bound to it. For NVIDIA hardware, note the GPU generation -- Turing (RTX 20-series) and newer support the open kernel module; Maxwell, Pascal, and Volta are now in legacy territory and require community packages on the 590.x branch. For AMD, verify whether your card is GCN 5 (Vega) or newer, which gets full AMDGPU support. Intel Battlemage (Arc B-series) and Lunar Lake use the Xe driver automatically on kernel 6.11 and later.

Step 2: Install the correct driver package for your distribution

For NVIDIA on Ubuntu, run sudo ubuntu-drivers install to let the system choose the recommended driver, or install nvidia-open-kernel-dkms and nvidia-driver directly with apt for Turing and newer cards. The open kernel module has been the default since the 560 driver series. Maxwell, Pascal, and Volta cards require legacy community packages and are no longer actively maintained by NVIDIA. For AMD, install the mesa package (typically already present on all major distros) and optionally the amdgpu-install script from AMD's repository if you need ROCm 7.2.0 for compute. For Intel Battlemage (Arc B580, B570) or Lunar Lake, the Xe kernel driver loads automatically on kernel 6.11 and later; install intel-media-va-driver-non-free separately for hardware video decode.

Step 2b: Enroll the MOK key on reboot if Secure Boot is active (NVIDIA only)

After the NVIDIA driver installs, DKMS builds and signs the kernel module against a generated Machine Owner Key. Before that key takes effect, it must be enrolled in firmware. On the next reboot, a blue MokManager screen appears. Select Enroll MOK then follow the prompts and enter the password you set during install. If you do not see this screen, or if you accidentally selected Continue Boot, see the Secure Boot section above for how to re-trigger enrollment. AMD and Intel users on Secure Boot systems need no extra steps -- their drivers are in-kernel and pre-trusted.

Step 3: Verify the driver loaded and check Wayland compatibility

After rebooting, run glxinfo | grep "OpenGL renderer" to confirm the active driver. For NVIDIA, run nvidia-smi to check driver version and hardware status. For Wayland, install wayland-utils (sudo apt install wayland-utils) and run wayland-info | grep syncobj to confirm explicit sync is available. If you see rendering artifacts, check dmesg | grep -i drm for kernel-level errors before assuming the issue is in userspace.

Frequently Asked Questions

For Turing (RTX 20-series) and newer GPUs, NVIDIA's open kernel module is the default and recommended choice as of driver series 560 and later. It ships alongside the proprietary userspace and matches the closed driver in performance while improving kernel integration. Maxwell, Pascal, and Volta cards are no longer supported by the active 590.x branch at all -- owners of those architectures must fall back to legacy community-maintained packages. The 580.x series is the last production branch to have shipped with any support for those older architectures, and even that support was minimal.

AMD discontinued the AMDVLK open-source Vulkan driver on September 15, 2025, formally announcing on GitHub that all development would shift to Mesa RADV. The transition began in May 2025 when AMD dropped proprietary OpenGL and Vulkan drivers from its Radeon Software for Linux package. AMD now focuses entirely on the open-source AMDGPU kernel driver and the Mesa RADV Vulkan driver. For compute workloads you can install the ROCm stack on top of AMDGPU using the amdgpu-install tool from AMD's package repository. ROCm 7.2.0, released January 21, 2026, is the current production version.

AMD with AMDGPU and Mesa RADV offers the smoothest Wayland experience because the driver stack is built into the kernel and Mesa. NVIDIA's 555+ driver series added explicit sync support via the linux-drm-syncobj-v1 protocol, which resolved the widespread flickering issues on GNOME and KDE Plasma. The 580.x production branch is recommended for NVIDIA Wayland users in 2026. Intel's Xe driver on Battlemage and Lunar Lake hardware also works well under Wayland.

Yes. NVK is a conformant Vulkan 1.4 open-source driver for NVIDIA hardware in Mesa. It reached stable status with Mesa 24.1 and starting with Mesa 25.1 it is the default OpenGL implementation for Turing and newer GPUs via the NVK and Zink combination. The kernel side uses the nouveau module. The tradeoff is that CUDA, DLSS, and hardware ray tracing are not available on this stack -- those require the proprietary driver. For general desktop and media use, the open stack is production-ready on Turing through Ada hardware.

On systems with Secure Boot enabled, this is almost always a missing MOK enrollment. The NVIDIA kernel module is third-party and must be cryptographically signed before the firmware will load it. Run mokutil --sb-state to confirm Secure Boot is active, then run sudo update-secureboot-policy --enroll-key or sudo mokutil --import /var/lib/shim-signed/mok/MOK.der to re-trigger the enrollment prompt. On the MokManager screen at reboot, select Enroll MOK -- not Continue Boot. After enrollment, nvidia-smi should report the driver correctly.

Sources and Verification

The claims in this article are drawn from primary sources. Key references used and recommended for further reading:

Note

GPU driver versions and distribution support change frequently. Always verify the current recommended driver branch against your distribution's official documentation before installing. For NVIDIA, check nvidia.com/drivers/unix. For AMD ROCm compatibility, see rocm.docs.amd.com. For Intel Xe firmware status, monitor the linux-firmware Xe log.