Disabling frame rate limit doesn't work in SteamOS 3.6
Your system information
- Steam client version: 1716072097
- SteamOS version: 3.6.3
- Opted into Steam client beta?: Yes
- Opted into SteamOS beta?: Yes
- Have you checked for updates in Settings > System?: Yes
Please describe your issue in as much detail as possible:
When enabling "Disable Frame Limit" from the Steam Deck's game mode performance options, I expect that the frame rate is allowed to run without an external software-imposed ceiling.
However, since SteamOS 3.6, what happens instead is that the frame rate limit set prior to enabling "Disable Frame Limit" will still dictate the maximum frame rate in a game under certain conditions. The issue seems to trigger if you have a frame limit of 45 fps or lower selected (on the Steam Deck OLED at least).
For example, with "Disable Frame Limit" disabled, if you have set the frame rate limit to 30 fps/hz and then enable "Disable Frame Limit", you'll find that the maximum frame rate that the application running can achieve is still 30 fps instead of limitless if your chosen refresh rate is 90hz.
But this all behaves slightly inconsistently, or at least I can't seem to find a definite pattern in it aside from the Disable Frame Limit function not working as intended and there being some relation to the prior chosen frame limit. For example, when I have the frame limit at 30, then disable it and set refresh rate to 85 hz, I get a maximum frame rate of 42 fps. Setting the refresh rate to 60 again sets the frame limit to 30 fps.
This also means that the maximum frame rate a game can achieve is dictated by the maximum refresh rate of the display, in my case 90 fps on the OLED Steam Deck. And it means that the extra input latency that the built-in frame limiter adds cannot be escaped, which is a notable detriment in and outside of competitive contexts.
Steps for reproducing this issue:
- In an application that can achieve 90+ fps, set a low frame rate limit such as 30 fps using the (quick access menu's) performance settings.
- Enable "Disable Frame Limit" and note that the frame rate doesn't bounce back up from 30 fps.
It would be great, if we could have the "disable unified framerate limit" option back under developer options. It's been gone since at least Steam OS 3.6.1 was introduced.
This might solve the issues people are experiencing with the current implementation of the limiter, while also allowing those who have overclocked their display for higher refresh rates to do as before.
And it means that the extra input latency that the built-in frame limiter adds cannot be escaped in any way, which is perhaps the bigger issue as it is a notable detriment in and outside of competitive contexts.
I don't know why this is the case, but you can actually get around it by using both the Steam Deck's limiter AND in-game v-sync together (the unified slider).
I have tested this on several games including Hitman 3 and Like a Dragon and if you turn off in-game v-sync, the limiter adds a hell of a lot of input lag, turn on in-game v-sync and the input lag is greatly diminished but you still get the benefits of the stable FPS cap.
I tested a little more, and it looks like the refresh rate you set now inversely chooses what frame rate limit is enabled. So if you pick 80 hz, you get a frame rate cap of 40, 90 hz gets 30 fps, 88 hz gets 44 fps, etc.
edit: the above seems to differ from game to game. It's odd. But what's consistent is that the Disable Frame Limit setting doesn't actually disable any frame limit.
I don't know why this is the case, but you can actually get around it by using both the Steam Deck's limiter AND in-game v-sync together (the unified slider).
Thanks for the suggestion @lukemcook, but this hasn't been my experience. Have you tested it in games that have a built-in frame limiter as a reference point? I tested it in Assassin's Creed Odyssey, and the latency difference between the game's frame limiter and the Steam Deck's (with out without the game's vsync enabled) is massive.
Thanks for the suggestion @lukemcook, but this hasn't been my experience. Have you tested it in games that have a built-in frame limiter as a reference point? I tested it in Assassin's Creed Odyssey, and the latency difference between the game's frame limiter and the Steam Deck's (with out without the game's vsync enabled) is massive.
Oh yeah, generally for peace of mind I'll use in-game fps cap however some of those provide unstable frametimes and in the worst examples can even mess with CPU/GPU utilization (the in-game cap in Like a Dragon for some reason makes CPU clocks rocket up to 3400Mhz and waste battery for no actual gain).
If you don't have v-sync enabled in-game combined with the Deck's limiter then the latency is terrible. I really have no idea why the latency is worse when v-sync is off in-game, you'd think you'd be getting some sort of double v-sync effect but the latency is actually far lower doing this in every game I've tested so far.
In Far Cry 5 (which I think runs quite poor on Deck really), Like a Dragon and Hitman 3 I was able to confirm that in-game v-sync + Deck's unified limiter (e.g. 30 fps/90hz) provided substantially less input lag than using just the Deck's limiter with v-sync off. Combining in-game v-sync with the unified limiter has become my go to for now but I still need to try it in more games.
@lukemcook I tried it again, this time really focusing on the game's feedback, and I think you're right. Testing over and over, sometimes I'm unsure if it's my imagination. It's certainly not as marked an improvement as in-game frame limiting.
@lukemcook I tried it again, this time really focusing on the game's feedback, and I think you're right. Testing over and over, sometimes I'm unsure if it's my imagination. It's certainly not as marked an improvement as in-game frame limiting.
The amount of latency the Steam Deck's limiter adds also seems to vary game by game. The workaround I found by using in-game v-sync definitely works though and isn't placebo but it will certainly vary based on the game. The input lag added by the Deck limiter in Hitman 3 for example is atrocious (before I found the v-sync trick)!
Really no idea why the limiter's input lag varies game by game or why enabling in-game v-sync with the limiter on improves latency. It's very weird and would be nice to have more knowledge of what's going on under the hood with all this.
I am also facing the issue of frame limiter on 3.6.3.
As for the limiter latency - it was always awful for me, I limit FPS using DXVK_FRAME_RATE environment variable or via in-game options. The SteamOS limiter produces usable latency only on high framerates, like 60.
As for the limiter latency - it was always awful for me, I limit FPS using DXVK_FRAME_RATE environment variable or via in-game options. The SteamOS limiter produces usable latency only on high framerates, like 60.
In some games I agree it can be borderline unplayable (especially at 30 fps) but enabling in-game v-sync with the limiter on really does help cut the latency down. No idea why this works because it defies common knowledge (nobody wants double v-sync implementations) but it definitely does cut latency down in the games I've tested so far, I'm also using it in Watch_Dogs now and observing the same behaviour!
And it means that the extra input latency that the built-in frame limiter adds cannot be escaped in any way, which is perhaps the bigger issue as it is a notable detriment in and outside of competitive contexts.
I don't know why this is the case, but you can actually get around it by using both the Steam Deck's limiter AND in-game v-sync together (the unified slider).
I have tested this on several games including Hitman 3 and Like a Dragon and if you turn off in-game v-sync, the limiter adds a hell of a lot of input lag, turn on in-game v-sync and the input lag is greatly diminished but you still get the benefits of the stable FPS cap.
Just want to confirm this, as weird as it sound, it is true, I'm very sensitive to Input lag and using both the deck limiter AND in game vsync result in less input lag than just using the Deck limiter while disabling any kind of limiter in a game, it sound counter intuitive on paper but hey, it's the truth, Like a Dragon ( Infinite Wealth on my case ) is a perfect exemple of this indeed, and I managed to replicate this issue with a lot of game, the less framerate you have the more noticeable it is, when I tried it with a locked 60 fps game I couldn't tell the difference, but if a lock a game at 30 or 40 fps it's a night and day difference.
It seems you get pretty much the same amount of input lag if you just use a game vsync / fps lock and disable all the Steam OS stuff (which don't work for now anyway), but half of the time this result in a very bad framepacing and make the CPU use way more power than needed, so for now, my way of using my deck is as follow :
- If a game has a build in FPS limiter ( like Infinite Wealth as an exemple ) I set it on unlimited / something higher than my Deck refresh rate.
- I enable the game vsync.
- I lock the FPS with the Steam built in limiter to whatever I want to achieve and don't bother with the Allow tearing option (which don't work if you set a FPS limit anyway, it needs to be completly unlocked for it to get effective, I don't know why valve don't add the info on the Deck actually, I saw a lot of people claiming that it reduced their input lag while playing in 30 / 40 fps lock but that's a placebo.)
- That's it.
The only other scenario is if a game has some good half rate vsync implementation (like Ghost of Tsushima) and I'm fine playing at 30 FPS (I have a LCD model), in this case, I select the half rate vsync in game, disable the in game FPS limiter if it exist, and leave my deck at it's maximum refresh rate / framelimit + toggle on the allow refresh rate / disable frame limit since the half rate vsync is already locking the fps at the value I want. But not a lot of game have half rate vsync.
I talked about it on the Steam Deck reddit but no one really cared about it haha.
Also I can't tell if this is also the case with emulated stuff, I actually wanted the test today but I have to wait until Valve fix the forced frame limit issue.
@lukemcook have you considered opening an issue about that input lag phenomenon you discovered? I suppose it isn’t exactly an issue so much as an unexpected improvement, but perhaps it can help to zone in on a better middle ground between frame pacing and input latency for the frame limiter.
Fixed now, will be in next build
SteamOS 3.6.9 fixes the toggle not working as expected.
SteamOS 3.6.9 fixes the toggle not working as expected.
Yes I can confirm it is now fixed.
@lukemcook I don't know if you're using the Beta branch but it seems that our trick does not work anymore, I now see zero difference between in game vsync on or off, I went back to stable, and in stable branch the trick does work, but in Beta there's no difference, also it seems that in Beta the input lag is the equivalent of our trick, with or withing in game vsync, guess Valve changed the way it works.
Closing per "Fixed the frame limiter not properly applying in certain situations" in the SteamOS 3.6.9 update.