-
Notifications
You must be signed in to change notification settings - Fork 22
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
LFX_MAX_FPS does not work #10
Comments
Also, my GPU cannot maintain 140 FPS most of the time in Apex Legends. That might be a contributing factor for the overshoot issue where FPS exceeds the limiter setting in areas where my GPU is able to do 140 FPS, although I am not 100% certain at this point. |
I just set it to 120 and entered the firing range. I am seeing FPS up to 144 FPS according to the Steam overlay. The limiter seems to be completely broken. :/ |
The game is requesting a target frame time of 0, which LatencyFlex will honor despite the environment variable being set. A small patch seems to fix this:
However, setting |
This issue appears to also be present in Overwatch. |
The frame limiter is intentionally undocumented due to the caveats (Reflex API also allows a frame limit to be communicated, and I don’t want to track both). Please just use +fps_max. |
If I have spent a few hours testing that patch and with the exception of the effective frame rate limit being slightly inaccurate (the limit seems to be 137 when I set 140), I have been rather happy with it. The inaccuracy seems like a bug that would also be present when a game sets a frame rate limit via the reflex API.
There are complaints online that "Apex's frame rate limit tool can produce inconsistent/unstable frametimes", so people seem to be looking into alternatives. For example: Would not doing frame rate limiting in LatencyFleX be ideal because:
If it is not ideal, do you mean that using a different frame rate limiter would not hurt input latency? |
Yes, you're right. I'll import that patch some time later.
IIRC, Source engine's fps_max limiter is generally considered to be accurate. I believe It's rather some other issues with frame time consistency on Linux that is causing "unstable frametimes" for them. Driver-level limiters adds more latency and buffering, and therefore conceals this issue. (I also suffer from this too, but I also play with fps_max on Windows and it works very fine there).
This is not a bug, this is an intended behavior/limitation that is required to determine the "bottleneck" parameter. Hope that with FreeSync the difference should be unnoticable.
The general opinion is that it's neither worse or better than an in-game frame limiter.
I thought about this but in the experiments it didn't seem that the in-game frame limiter affects LFX's operation much.
The game also sleeps before input processing. Driver-level limiters like the ones in DXVK, MangoHud will cause additional latency, though.
Doesn't really matter, but there's another thing that accurate timers doesn't exist on Windows so the games go through great length emulating that through spinning... |
I don't think that's the case. For example, to target 145 FPS consistently, I've found that I need to use |
DO NOT use DXVK_FRAME_RATE=X (with superglide script) |
I have the following setup:
I am starting Apex Legends with
LFX_MAX_FPS=140 PROTON_ENABLE_NVAPI=1 LFX=1 DXVK_HUD=compiler,scale=2 gamemoderun %command% -dev +fps_max=0
. My dxvk.conf contains:I want to limit my FPS to 140 as per various recommendations for 144Hz gsync monitors, but when I do it via
LFX_MAX_FPS
in Apex Legends, my FPS often hits 144 or even rarely 145, which is outside of the gsync range and is said to disable gsync. Steam's FPS meter, Apex Legend's built-in FPS meter and DXVK's FPS meter all show FPS exceeding the value that I have set.If I switch to
DXVK_FRAME_RATE=140
, then the frame rate is consistently limited to 140 FPS, but then I suspect that the DXVK limiter is causing latencyflex to misjudge how long it takes to render a frame.I suspect that the frame rate limiter introduced in 7fed286 needs to be changed to do a better job of clamping the frame rate.
The text was updated successfully, but these errors were encountered: