HP Omen – Stutter/FPS issues on external monitor under Wayland (CachyOS/KDE Plasma 6)

Hardware

  • HP Omen Notebook

  • Intel Raptor Lake UHD Graphics (iGPU) + NVIDIA RTX 4070 Max-Q (dGPU)

  • External monitor via HDMI, 2560x1440

Symptoms

  • Desktop animations stutter on external monitor (visible drag when moving windows)

  • FPS issues in games on external monitor

  • Integrated laptop display was perfectly smooth

  • Problem persisted across different refresh rate combinations (60/120/144/240Hz)

  • Toggling compositor on/off (Alt+Shift+F12) made no difference

Root cause

  • BIOS setting “Graphics switch” was set to “NVIDIA Advanced Optimus”

  • This mode is poorly supported under Linux

  • Result: The HDMI port was driven by the Intel GPU, while the laptop display was driven by the NVIDIA GPU (unusual, typically the other way around)

  • KWin/compositor was rendering via the Intel GPU (OpenGL renderer: Mesa Intel(R) Graphics)

  • The Intel driver caused the stuttering on the external monitor

Diagnosis

# Showed: HDMI connected to Intel (card1), laptop display connected to NVIDIA (card2)
bash -c 'for card in /sys/class/drm/card*-*; do echo "$(basename $card): $(cat $card/status 2>/dev/null)"; done'

# Showed: KWin rendering via Intel instead of NVIDIA
qdbus6 org.kde.KWin /KWin supportInformation | grep "renderer"

Solution

  1. Enter BIOS

  2. Configuration → Graphics switch → change from “NVIDIA Advanced Optimus” to “Discrete Graphics”

  3. Save and reboot

Result

  • Only NVIDIA GPU active (lspci -k | grep -A 3 -i vga shows only NVIDIA)

  • KWin rendering via NVIDIA (OpenGL renderer: NVIDIA GeForce RTX 4070 Laptop GPU)

  • No more stutter, testufo shows correct frame rates

  • All monitors running on a single GPU

Tradeoff

  • Higher power consumption on battery (NVIDIA GPU always active)

What did NOT help

  • KWIN_DRM_DEVICES environment variable (did not change actual rendering GPU)

  • Matching refresh rates (60Hz/120Hz combination)

  • Disabling Adaptive Sync (marginally better, but not a fix)