Poor performance on external HDMI monitor
NVIDIA Open GPU Kernel Modules Version
580.95.05
Please confirm this issue does not happen with the proprietary driver (of the same version). This issue tracker is only for bugs specific to the open kernel driver.
- [ ] I confirm that this does not happen with the proprietary driver package.
Operating System and Version
Fedora Linux 42 (Adams)
Kernel Release
Linux fedora 6.16.8-200.fc42.x86_64 #1 SMP PREEMPT_DYNAMIC Fri Sep 19 17:47:18 UTC 2025 x86_64 GNU/Linux
Please confirm you are running a stable release kernel (e.g. not a -rc). We do not accept bug reports for unreleased kernels.
- [x] I am running on a stable kernel release.
Hardware: GPU
GPU 0: NVIDIA GeForce RTX 4050 Laptop GPU (UUID: GPU-2ca17e95-0022-2199-f652-c9492f7926fc)
Describe the bug
When using an external monitor connected via HDMI, performance is much lower than expected. The monitor is a 2K 144 Hz display on HDMI, but framerates are capped well below the refresh rate (typically 40–80 FPS). The internal laptop panel runs fine at its native refresh rate, so the issue only appears on the external HDMI display.
https://github.com/NVIDIA/open-gpu-kernel-modules/issues/650
To Reproduce
Laptop: Acer Nitro V15 (ANV15-51) with Intel + NVIDIA GPU External monitor: LG Ultragear™ 32GS60QC, 32", 2560 x 1440 1000R Curved, 144 Hz on HDMI input) Connection: HDMI cable from laptop HDMI port to monitor OS: Fedora 42 (Wayland, KDE Plasma 6.4.5) NVIDIA driver 580.95.05
Steps to reproduce:
- Boot laptop with the external monitor connected via HDMI.
- Display configuration set to external screen only.
- Launch glxgears, or testufo.com from browser.
Bug Incidence
Always
nvidia-bug-report.log.gz
nvidia-bug-report.log.gz nvidia-smi-q.log
More Info
Expected result: Framerate should reach close to the monitor’s refresh rate (≈144 FPS).
Actual result: Framerate is significantly lower (≈40–80 FPS), fluctuating but never reaching 144 FPS.
Same. here's my detailed comment. https://github.com/NVIDIA/open-gpu-kernel-modules/issues/650#issuecomment-3359572838
I am experiencing the same issue. The laptop screen is set to 240Hz and an external monitor plugged in via miniDP that is according to the manufacturer hardwired to the dGPU can do 144Hz. Running a simple game in a window runs smootly at the maximum Hz of the respective display as long as about 30% of the window is still in the laptop screen. As soon as the whole window is moved over to the external screen, the FPS drops from 144 to around 90.
Disabling the GpuFirmware does not change the situation.
Same as I described here: https://github.com/NVIDIA/open-gpu-kernel-modules/issues/650#issuecomment-3358185878
Same here. On KDE Wayland I can see that kwin_wayland process starts to hit up to 100% CPU usage when running anything on external monitor. This also happens when using proprietary driver (with and without options nvidia NVreg_EnableGpuFirmware=0). External monitor's refresh rate is set to 144Hz.
KDE Wayland:
KDE X11 for comparison:
On Hyprland situation is better, but that's probably because I have to run Hyprland on discrete GPU just for external monitor to work. Even then - FPS fluctuates, and Hyprland process eats way more CPU than on internal monitor.
Hyprland on external monitor:
Hyprland on internal monitor:
Could not get Gnome and Sway to work with external monitor at all (they crash on login).
- NVIDIA Open GPU Kernel Modules Version: 580.82.09-7 (from Arch repo)
- OS: Arch Linux
- Kernel: 6.16.10-arch1-1
- GPU: NVIDIA GeForce RTX 4070 Laptop GPU (UUID: GPU-4d95f9f6-979d-3587-904f-e3de86ae0b61)
On Hyprland situation is better, but that's probably because I have to run Hyprland on discrete GPU just for external monitor to work. Even then - FPS fluctuates, and
Hyprlandprocess eats way more CPU than on internal monitor.
Your external mmonitor is wired to the discrete GPU and the kwin is running on the integrated GPU, so the content of the screen is copied from iGPU to dGPU each frame, this is why you have poor performances and high CPU usage.
If you run kwin on the discrete GPU instead of iGPU, do you still have bad performance?
If you run kwin on the discrete GPU instead of iGPU
I actually cannot do it, not sure why, but when I disable iGPU in BIOS - everything becomes laggy, and given how much CPU is used - my bet is that it falls back to some sort of software rendering. I've also tried setting KWIN_DRM_DEVICES in /etc/environment, but got same result.
I'd also like to note that on X11 this issue doesn't exist and nvidia GPU generally stays in P8 state (with some random spikes to P5 though).
Copying my comment here, because at this point I'm not sure which issue to attach it to:
I'm trying out KDE Plasma on Arch, nvidia-open-dkms, all packages are up-to-date. HP Victus 16 (AMD Ryzen 7 8845HS + RTX 4070)
Using perf on kwin_wayland shows that most of the CPU usage comes from KWin::EglGbmLayerSurface::importWithCpu method and __memmove_avx512_unaligned_erms inside of it. This method is called because framebuffer's import mode is MultiGpuImportMode::DumbBuffer, which relies on CPU for copying data. KWin tries to create other types of buffers, but it fails:
Dec 01 22:38:48 okolo kwin_wayland[8288]: importMode = Egl ; bufferTarget = Normal ; m_gpu.isNVidia() = true ; m_gpu.isAmdgpu() = false
Dec 01 22:38:48 okolo kwin_wayland[8288]: eglInitialize failed
Dec 01 22:38:48 okolo kwin_wayland[8288]: Error during eglInitialize "EGL_NOT_INITIALIZED"
Dec 01 22:33:48 okolo kwin_wayland[8288]: importMode = Dmabuf ; bufferTarget = Normal ; m_gpu.isNVidia() = true ; m_gpu.isAmdgpu() = false
Dec 01 22:33:48 okolo kwin_wayland[8288]: Failed to create framebuffer: Invalid argument
Dec 01 22:33:48 okolo kwin_wayland[8288]: importMode = LinearDmabuf ; bufferTarget = Normal ; m_gpu.isNVidia() = true ; m_gpu.isAmdgpu() = false
Dec 01 22:33:48 okolo kwin_wayland[8288]: Failed to create framebuffer: Invalid argument
I haven't looked into why EGL fails, because from what I can understand - that's a legacy mode, and Dmabuf is preferred with LinearDmabuf as a backup. KWin's DrmGpu::importBuffer can try three options - drmModeAddFB2WithModifiers, drmModeAddFB2, and drmModeAddFB. First two fail with Invalid argument, third one isn't reached.
And this is where I'm stuck. I've tried enabling all DRM debug messages (echo 0x1FF > /sys/module/drm/parameters/debug) and restarting KWin (kwin_wayland --replace, it creates framebuffer errors from logs above), but I can't find anything useful in dmesg output (nothing with framebuffer, bad, non-zero and other things from framebuffer_check https://github.com/torvalds/linux/blob/7d0a66e4bb9081d75c82ec4957c50034cb0ea449/drivers/gpu/drm/drm_framebuffer.c#L155 )
Any ideas?