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
-
Enter BIOS
-
Configuration → Graphics switch → change from “NVIDIA Advanced Optimus” to “Discrete Graphics”
-
Save and reboot
Result
-
Only NVIDIA GPU active (
lspci -k | grep -A 3 -i vgashows 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_DEVICESenvironment variable (did not change actual rendering GPU) -
Matching refresh rates (60Hz/120Hz combination)
-
Disabling Adaptive Sync (marginally better, but not a fix)