Games Visually Stuck at Low Refresh Rate on 240Hz External Monitor (Wayland + NVIDIA Hybrid GPU)

Games Visually Stuck at Low Refresh Rate on 240Hz External Monitor (Wayland + NVIDIA Hybrid GPU)

System Information

  • OS: CachyOS (latest)
  • Desktop Environment: KDE Plasma (Wayland)
  • Session Type: Wayland
  • CPU: Intel i7-13650HX
  • GPU (Integrated): Intel UHD Graphics (RPL-S)
  • GPU (Discrete): NVIDIA GeForce RTX 4060 Mobile
  • NVIDIA Driver: 590.48.01
  • CUDA: 13.1
  • RAM: 32GB
  • Storage: SSD
  • Proton: GE-Proton (latest)
  • Monitors:
    • Internal laptop display: 1080p @ 144Hz (eDP-1)
    • External monitor: AOC Q27G42ZE 1440p @ 240Hz (DP-3, connected via USB-C to DisplayPort)

Problem Description

Games visually appear to run at ~60-80Hz despite reporting 200+ FPS. With VSync enabled, games cap at 80fps (240÷3) instead of 240fps. The internal 144Hz monitor works perfectly — games run smooth at 144Hz. Issue is isolated to the external 240Hz monitor.

What works correctly:

  • Desktop mouse cursor is smooth at 240Hz
  • kscreen-doctor --outputs shows DP-3 at 2560x1440@240.00* (asterisk = active)
  • DISPLAY=:0 xrandr shows 239.88Hz for DP-3
  • glxgears with NVIDIA + VSync caps at ~233fps (correct!)
  • Games on internal 144Hz display work perfectly
  • Same cable/monitor works correctly in Windows

What doesn’t work:

  • Games on external monitor appear choppy regardless of reported FPS
  • VSync caps games at 80fps instead of 240fps
  • Multiple games affected (Arc Raiders, Marvel Rivals, others)

Diagnostic Output

nvidia-smi shows games running on NVIDIA GPU:

NVIDIA GeForce RTX 4060 Laptop GPU
Driver: 590.48.01 | CUDA: 13.1
GPU Util: 49% | VRAM: 2862MiB / 8188MiB
Processes: kwin_wayland, Steam, PioneerGame.exe (2693MiB)

glxgears on NVIDIA (works correctly!):

__NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia vblank_mode=0 glxgears -info
GL_RENDERER = NVIDIA GeForce RTX 4060 Laptop GPU/PCIe/SSE2
1168 frames in 5.0 seconds = 233.297 FPS (synced to 240Hz correctly)

glxgears without NVIDIA flag (shows Intel):

GL_RENDERER = Mesa Intel(R) Graphics (RPL-S)

kscreen-doctor output:

DP-3: 2560x1440@240.00* (asterisk = active mode)
eDP-1: 1920x1080@144.00*

XWayland sees correct refresh:

DISPLAY=:0 xrandr
DP-3 connected primary 2560x1440+0+0 ... 239.88*+

EDID decode confirms monitor capabilities:

AOC Q27G42ZE
2560x1440 @ 240Hz supported (992.260 MHz pixel clock)
FreeSync range: 48-240Hz

DXVK log shows NVIDIA GPU detected:

Found device: NVIDIA GeForce RTX 4060 Laptop GPU (NVIDIA 590.48.1)

What I’ve Tried

  • Confirmed 240Hz selected in KDE Display Settings
  • Disabled internal monitor (still stuck at 80fps VSync)
  • Various Steam launch options (PRIME offload flags made it worse — 60fps)
  • Created ~/.config/dxvk.conf with syncInterval=0
  • Tried Proton Experimental and Proton-GE
  • Reinstalled game on main drive
  • Game settings adjusted

Conclusion

The system correctly reports 240Hz at every level (KDE, kscreen-doctor, XWayland, xrandr). glxgears proves VSync works correctly at 240Hz when using NVIDIA directly. But games through Proton/Wine don’t receive the correct refresh rate for frame timing.

This appears to be a Wayland + NVIDIA + Proton frame delivery issue specific to hybrid GPU laptops with external high-refresh displays.

Questions

  1. Has anyone with a similar setup (NVIDIA hybrid + Wayland + 240Hz external) gotten games to sync correctly?
  2. Are there KWin Wayland compositor settings that affect frame delivery to games?
  3. Is there a way to force Wine/Proton to use the correct refresh rate?
  4. Should I try specific NVIDIA driver versions?

Happy to provide any additional diagnostic output.


Thanks for any help!

Hey! did u find a solution to this? I am having the SAME exact problem. I have gotten Lethal Company to work but thats all.

I found a solution the other day. However, it is not ideal.

The only solution I found was to go into the BIOS on start, then change the graphics to DISCRETE ONLY. It cannot be dynamic or any other option just discrete graphics.

An annoying solution as it means if you want to use your laptop on the go you probably want to switch back to dynamic every time which requires a restart.

As loathe as I am to contribute to a necro-thread, your return to this topic could undo that concern.

Does @LOROURKE‘s workaround fix your issue or have you found another fix? This information could be helpful to others and future fixes.

There is a workaround but its not good. When you disable your monitors except your main one then it will work on the frame rate that one monitor is at.

Only this worked for me, thanks.

I found a solution that is supported on all laptops but it’s pretty messy. First you have to do the command. What we will be doing is setting an environment variable so that the NVIDIA GPU is used over the iGPU. First, you have to put the command ls -l /dev/dri/by-path/ That will tell you which GPU is which for me it was 00:02.0=card1=iGPU and 01:00.0=card0=NVIDIA dGPU. For my system the environment variable would be. KWIN_DRM_DEVICES=/dev/dri/card0:/dev/dri/card1. Now you have to make a directory mkdir -p ~/.config/environment.d. Then you do nano ~/.config/environment.d/90-kwin-gpu.conf. and The only thing u put into it is the environment variable that we have done earlier. After that u reboot the laptop and you should be good to go. If incase this somehow goes wrong u can always reverse it by rm ~/.config/environment.d/90-kwin-gpu.conf. Hope this helps someone!