Games Stuck at 60FPS on 144hz Monitor

I'm relatively new to Linux (the desktop side of it anyway), and I've been able to solve most of the problems I had with it initially--except this one. I've seen other similar threads on this forum, but they were all locked to replies with no useful answer, hence, I've created my own.

Some games are stuck at 60fps on my 144hz monitor, and here's what I've found so far:

This can happen with both native Linux games and games running in Proton it seems. (I had originally thought it was a Proton issue.) Also, this happened while I was on Linux Mint as well, with both Cinnamon and XFCE. What's interesting, though, is that, on Linux Mint, it was always stuck at 75fps instead of 60. The issue goes away if I disable my other 3 non-primary monitors in my KDE Display Configuartion settings GUI. (In other words, the frame rate locks to 144fps instead of 60 with the other monitors disabled.) I've also tried disabling/enabling vsync and compositing in several different ways, all to no avail.

I don't usually like to ask others for help, but I'm completely stuck here. I have no idea anymore what could be causing this. If anybody else has any ideas/suggestions, I'd love to hear them.

Here's all my possibly-relevant system information.

System:    Kernel: 5.6.19-2-MANJARO x86_64 bits: 64 compiler: gcc v: 10.1.0 Desktop: KDE Plasma 5.19.3 tk: Qt 5.15.0 
           wm: kwin_x11 dm: SDDM Distro: Manjaro Linux 
Machine:   Type: Desktop Mobo: ASRock model: X370 Taichi serial: <filter> UEFI: American Megatrends v: P5.60 date: 06/27/2019 
Memory:    RAM: total: 31.36 GiB used: 3.23 GiB (10.3%) 
           RAM Report: permissions: Unable to run dmidecode. Root privileges required. 
CPU:       Topology: 12-Core model: AMD Ryzen 9 3900X bits: 64 type: MT MCP arch: Zen L2 cache: 6144 KiB bogomips: 182487 
           Speed: 2996 MHz min/max: 2200/3800 MHz boost: enabled Core speeds (MHz): 1: 2144 2: 2197 3: 2195 4: 2200 5: 4526 
           6: 2199 7: 2195 8: 2198 9: 2200 10: 2198 11: 2203 12: 2199 13: 2200 14: 2200 15: 2198 16: 2199 17: 2196 18: 2196 
           19: 2199 20: 2198 21: 2200 22: 2200 23: 2200 24: 2200 
           Flags: 3dnowprefetch abm adx aes aperfmperf apic arat avic avx avx2 bmi1 bmi2 bpext cat_l3 cdp_l3 clflush 
           clflushopt clwb clzero cmov cmp_legacy constant_tsc cpb cpuid cqm cqm_llc cqm_mbm_local cqm_mbm_total cqm_occup_llc 
           cr8_legacy cx16 cx8 de decodeassists extapic extd_apicid f16c flushbyasid fma fpu fsgsbase fxsr fxsr_opt ht 
           hw_pstate ibpb ibrs ibs irperf lahf_lm lbrv lm mba mca mce misalignsse mmx mmxext monitor movbe msr mtrr mwaitx 
           nonstop_tsc nopl npt nrip_save nx osvw overflow_recov pae pat pausefilter pclmulqdq pdpe1gb perfctr_core 
           perfctr_llc perfctr_nb pfthreshold pge pni popcnt pse pse36 rdpid rdpru rdrand rdseed rdt_a rdtscp rep_good sep sev 
           sha_ni skinit smap smca sme smep ssbd sse sse2 sse4_1 sse4_2 sse4a ssse3 stibp succor svm svm_lock syscall tce 
           topoext tsc tsc_scale umip v_vmsave_vmload vgif vmcb_clean vme vmmcall wbnoinvd wdt xgetbv1 xsave xsavec xsaveerptr 
           xsaveopt xsaves 
Graphics:  Device-1: NVIDIA GP102 [GeForce GTX 1080 Ti] vendor: Gigabyte driver: nvidia v: 440.100 bus ID: 0d:00.0 
           chip ID: 10de:1b06 
           Display: x11 server: X.Org 1.20.8 driver: nvidia compositor: kwin_x11 resolution: 1920x1080~75Hz, 2560x1440~144Hz 
           OpenGL: renderer: GeForce GTX 1080 Ti/PCIe/SSE2 v: 4.6.0 NVIDIA 440.100 direct render: Yes 
Audio:     Device-1: NVIDIA GP102 HDMI Audio vendor: Gigabyte driver: snd_hda_intel v: kernel bus ID: 0d:00.1 
           chip ID: 10de:10ef 
           Device-2: Advanced Micro Devices [AMD] Starship/Matisse HD Audio vendor: ASRock driver: snd_hda_intel v: kernel 
           bus ID: 0f:00.4 chip ID: 1022:1487 
           Sound Server: ALSA v: k5.6.19-2-MANJARO 
Network:   Device-1: Intel Dual Band Wireless-AC 3168NGW [Stone Peak] driver: iwlwifi v: kernel port: e000 bus ID: 08:00.0 
           chip ID: 8086:24fb 
           IF: wlp8s0 state: down mac: <filter> 
           Device-2: Intel I211 Gigabit Network vendor: ASRock driver: igb v: 5.6.0-k port: d000 bus ID: 0a:00.0 
           chip ID: 8086:1539 
           IF: enp10s0 state: up speed: 1000 Mbps duplex: full mac: <filter> 
           IP v4: <filter> type: noprefixroute scope: global broadcast: <filter> 
           IP v6: <filter> type: dynamic noprefixroute scope: global 
           IP v6: <filter> type: dynamic noprefixroute scope: global 
           IP v6: <filter> type: dynamic noprefixroute scope: global 
           IP v6: <filter> type: noprefixroute scope: link 
           WAN IP: <filter> 
Drives:    Local Storage: total: 6.82 TiB used: 35.94 GiB (0.5%) 
           ID-1: /dev/nvme0n1 vendor: Western Digital model: WDS500G3X0C-00SJG0 size: 465.76 GiB speed: 31.6 Gb/s lanes: 4 
           serial: <filter> rev: 111110WD scheme: GPT 
           ID-2: /dev/sda vendor: SanDisk model: SDSSDH32000G size: 1.82 TiB speed: 6.0 Gb/s serial: <filter> rev: 70RL 
           scheme: GPT 
           ID-3: /dev/sdb vendor: Seagate model: ST3000DM001-1ER166 size: 2.73 TiB speed: 6.0 Gb/s rotation: 7200 rpm 
           serial: <filter> rev: CC25 scheme: GPT 
           ID-4: /dev/sdc vendor: Seagate model: ST2000DX001-1NS164 size: 1.82 TiB speed: 6.0 Gb/s rotation: 7200 rpm 
           serial: <filter> rev: CC41 scheme: MBR 
           Message: No Optical or Floppy data was found. 
RAID:      Message: No RAID data was found. 
Partition: ID-1: / size: 449.08 GiB used: 35.94 GiB (8.0%) fs: ext4 dev: /dev/nvme0n1p3 label: N/A 
           uuid: 1b6ed8f9-028c-4d53-9063-eba719402614 
           ID-2: /boot/efi size: 511.0 MiB used: 280 KiB (0.1%) fs: vfat dev: /dev/nvme0n1p1 label: N/A uuid: 3FC9-47A2 
           ID-3: swap-1 size: 8.00 GiB used: 0 KiB (0.0%) fs: swap dev: /dev/nvme0n1p2 label: N/A 
           uuid: ea1bcbd2-d92a-4411-9378-2a7d5f3bca17 
Unmounted: ID-1: /dev/sda1 size: 1.82 TiB fs: ntfs label: N/A uuid: DCDEC465DEC43A12 
           ID-2: /dev/sdb1 size: 128.0 MiB fs: <root required> label: N/A uuid: N/A 
           ID-3: /dev/sdb2 size: 2.73 TiB fs: ntfs label: Archive uuid: 4242B47042B469F5 
           ID-4: /dev/sdc1 size: 1.82 TiB fs: ntfs label: Storage uuid: 6AAA7107AA70D155 
USB:       Hub: 1-0:1 info: Full speed (or root) Hub ports: 14 rev: 2.0 speed: 480 Mb/s chip ID: 1d6b:0002 
           Device-1: 1-4:2 info: Samsung Galaxy series misc. (MTP mode) type: Still Imaging,Abstract (modem),CDC-Data 
           driver: cdc_acm interfaces: 4 rev: 2.0 speed: 480 Mb/s chip ID: 04e8:6860 serial: <filter> 
           Device-2: 1-9:3 info: Intel type: Bluetooth driver: btusb interfaces: 2 rev: 2.0 speed: 12 Mb/s chip ID: 8087:0aa7 
           Device-3: 1-13:4 info: Logitech Cordless Mouse Receiver type: Mouse,HID driver: hid-generic,usbhid interfaces: 2 
           rev: 2.0 speed: 12 Mb/s chip ID: 046d:c537 
           Hub: 2-0:1 info: Full speed (or root) Hub ports: 8 rev: 3.1 speed: 10 Gb/s chip ID: 1d6b:0003 
           Hub: 3-0:1 info: Full speed (or root) Hub ports: 4 rev: 2.0 speed: 480 Mb/s chip ID: 1d6b:0002 
           Device-4: 3-2:2 info: Logic3 Afterglow Gamepad for Xbox 360 type: <vendor specific> driver: xpad interfaces: 4 
           rev: 2.0 speed: 12 Mb/s chip ID: 0e6f:0213 serial: <filter> 
           Device-5: 3-4:3 info: Logitech G413 Gaming Keyboard type: Keyboard,HID driver: hid-generic,usbhid interfaces: 2 
           rev: 2.0 speed: 12 Mb/s chip ID: 046d:c33a serial: <filter> 
           Hub: 4-0:1 info: Full speed (or root) Hub ports: 4 rev: 3.1 speed: 10 Gb/s chip ID: 1d6b:0003 
Sensors:   System Temperatures: cpu: 51.1 C mobo: N/A gpu: nvidia temp: 58 C 
           Fan Speeds (RPM): N/A gpu: nvidia fan: 9% 
Info:      Processes: 409 Uptime: 1h 25m Init: systemd v: 245 Compilers: gcc: 10.1.0 Shell: bash v: 5.0.18 running in: konsole 
           inxi: 3.0.37 

Also, I'd like to apologize if any of this is poorly worded/organized. I've been up all night working on this and am very tired.

Show output of:

xrandr

Ah, I should have figured that'd be useful.

Here it is:

Screen 0: minimum 8 x 8, current 5240 x 2677, maximum 32767 x 32767
DVI-D-0 disconnected (normal left inverted right x axis y axis)
HDMI-0 connected 1600x900+0+1170 (normal left inverted right x axis y axis) 430mm x 240mm
   1600x900      59.98 +  74.89    60.00* 
   1440x900      59.89  
   1366x768      59.79  
   1280x1024     75.02    60.02  
   1280x960      60.00  
   1280x720      60.00    59.94    50.00  
   1024x768      75.03    70.07    60.00  
   800x600       75.00    72.19    60.32    56.25  
   720x576       50.00  
   720x480       59.94  
   640x480       75.00    72.81    59.94    59.93  
DP-0 connected 1920x1080+1753+0 (normal left inverted right x axis y axis) 1150mm x 650mm
   1920x1080     60.00 +  59.94    50.00    29.97    25.00    23.98* 
   4096x2160     24.00  
   3840x2160     29.97    25.00    23.98  
   1360x768      59.80  
   1280x1024     60.02  
   1280x960      60.00  
   1280x720      60.00    60.00    59.94    50.00  
   1024x768      60.00  
   800x600       60.32  
   720x576       50.00  
   720x480       59.94  
   640x480       59.94    59.93  
DP-1 disconnected (normal left inverted right x axis y axis)
DP-2 connected 1080x1920+4160+757 right (normal left inverted right x axis y axis) 598mm x 336mm
   1920x1080     74.97*+  60.00    59.94    50.00  
   1680x1050     59.95  
   1440x900      59.89  
   1280x1024     60.02  
   1280x800      59.81  
   1280x720      60.00    59.94    50.00  
   1152x864      75.00  
   1024x768      70.07    60.00  
   800x600       60.32    56.25  
   720x576       50.00  
   720x480       59.94  
   640x480       59.94    59.93  
DP-3 disconnected (normal left inverted right x axis y axis)
DP-4 connected primary 2560x1440+1600+1080 (normal left inverted right x axis y axis) 697mm x 392mm
   2560x1440    144.00*+ 120.00    99.95    59.95  
   1920x1080     60.00    59.94    50.00  
   1680x1050     59.95  
   1600x900      60.00  
   1440x900      59.89  
   1280x1024     75.02    60.02  
   1280x800      59.81  
   1280x720      60.00    59.94    50.00  
   1152x864      75.00  
   1024x768      75.03    70.07    60.00  
   800x600       75.00    72.19    60.32    56.25  
   720x576       50.00  
   720x480       59.94  
   640x480       75.00    72.81    59.94  
DP-5 disconnected (normal left inverted right x axis y axis)

Whoa... So many monitors :stuck_out_tongue_winking_eye: .

It looks like your DP-4 is set correctly for 144 Hz, no issue here. Maybe it's just game's property or setting? Some game deliberately have Hz caps and you did mention "some games" have that problem. Or maybe proton settings are causing them to use lower Hz then it is possible?
Did you try those games on Windows?

I hoped your monitor will be set incorrectly but all looks all right, so it means more digging in areas I don't know too well. Did you check Nvidia settings?

You may also install protontricks and try out find some relevant settings for those games, but personally, I never noticed anything related to monitor refresh rate. After install in terminal type:

protontricks --gui

Chose a game, then default prefix, then run winecfg. Maybe those games need to have some additional dll's or components to run without FPS cap? For that you have to search protondb site or similar ones.

It happens with Proton and native-Linux games. This isn't a Proton issue. Also, (as I think I mentioned), with the exact same setup I currently have, it works fine if I disable my other 3 non-primary monitors. It's not just on launch either, as, if I re-enable my other monitors after I start the game, it refreshes X or something and locks the game back to 60fps instead of 144.

I'll try to look into the protontricks and winecfg settings, but, as I said, it happens with native games as well. I'm also going to install some more games to test it with, so I can have a larger sample set.

I think I found something! I've turned on "Enable Graphics API Visual Indicator" in the Nvidia X Server settings, and I've found that, for all the games that this is an issue, Vsync is listed as "On". In games where I can disable Vsync, it doesn't lock the framerate at all (when disabled).

Why Vsync's locking games to 60fps instead of 144? I have no idea.

Also, as a work-around, if there were some way to disable Vsync in particular titles, (or globally for fullscreen/borderless applications) that'd be useful.

Edit: This is by no means a solution to the issue, but maybe a step forward?

1 Like

I know its been said but... that's a lot of screens!

I'm looking at MangoHud to cap FPS at 140 and switch vsync off for all games:

Hmm.. I might try it out if I can't figure out any other way to disable Vsync, though, I really shouldn't have to disable Vsync at all. There's gotta be a way to make Vsync, well, sync with my 144hz monitor as it does when I've disabled my other monitors.

Some file somewhere is reading 60hz from my monitors and locking Vsync to 60 because of it. (It's gotta be, because on Linux Mint it was locked at 75fps, which is the refresh rate of another of my monitors.) It seems I just need to find this file and tell it to lock at 144hz. Where are the graphics-driver developers when you need them?

Again, not a solution really, but I found a useful (and simple) tool for disabling Vsync in OpenGL and Vulkan games: https://gitlab.com/torkel104/libstrangle

As I suspected, with Vsync disabled the framerate is uncapped. Now, how do I get Vsync to work at 144fps? (With multiple monitors, that is. It does work with just the one enabled.)

1 Like

Is the 144Hz monitor the main monitor?

Yes it is. Good question, though.

Forum kindly sponsored by