I want my monitor to refresh at a fixed 240hz (not variable), my game to run capped at 60fps, and for frames to be presented never more frequently than every 4 screen refreshes, but if a frame takes longer than 4 refreshes to render then it should present at the next immediate refresh, not wait another 4 refreshes. I made a diagram to try and explain my desired behavior.
Is this kind of VSYNC behavior is possible? The reason I want this is because I can't stand VRR flicker, and even capping my fps to 60 in games that would run well above 60 uncapped can still have the occasional frametime spike above 16.67ms which results in a VRR flicker. What I'd prefer instead is to get a 4.16ms judder when frametime spikes, as that is less noticeable to me than a VRR flicker.
Simply enabling VSYNC with my monitor refresh at 240hz and the game capped to 60fps doesn't seem to do this. This results in very noticeable, persistent judder. I don't believe this is due to my PC running games at consistently variable frametimes, because if I set my monitor to 60hz with VSYNC enabled, I get very smooth frametimes most of the time. However, when there then is an occasional frametime spike, it results in 16.7ms of judder, which is very noticeable.
The closest I've gotten is using Lossless Scaling to enable VSYNC 1/4 (every 4 vblanks) and using RTSS or the in-game limiter to cap FPS to 60. This does result in perfect frametimes when the game runs at 60 and much less noticeable judder if it drops below, but it introduces more input lag than VSYNC@240hz/60fps and Lossless Scaling itself seems to lower my performance by 10-20%, meaning I'm more likely to drop below 60fps in heavy areas of a game.
Is this kind of VSYNC behavior possible?
Re: Is this kind of VSYNC behavior possible?
I do exactly this with SpecialK's "normal" limiter. You use normal vsync for that, and let the limiter handle the presentation pacing. It caps to exactly the framerate that's needed. You can select different fractions too, like 1/2, 1/3, 1/4, 1/5, whatever you want:
It works flawlessly, perfectly smooth. "Presentation interval" should be set to 1 for this (which is normal vsync.) Don't force vsync in the GPU driver, set it to application controlled so you can control it with SK instead.
Another option is use the "latent sync" limiter in SK. This works similar to RTSS scanline sync. It disables vsync completely and syncs the frames manually to avoid tearing.
It works flawlessly, perfectly smooth. "Presentation interval" should be set to 1 for this (which is normal vsync.) Don't force vsync in the GPU driver, set it to application controlled so you can control it with SK instead.
Another option is use the "latent sync" limiter in SK. This works similar to RTSS scanline sync. It disables vsync completely and syncs the frames manually to avoid tearing.
Steam • GitHub • Stack Overflow
The views and opinions expressed in my posts are my own and do not necessarily reflect the official policy or position of Blur Busters.
The views and opinions expressed in my posts are my own and do not necessarily reflect the official policy or position of Blur Busters.
-
Burchmore500
- Posts: 2
- Joined: 12 Jan 2025, 13:49
Re: Is this kind of VSYNC behavior possible?
Thank you very much for this explanation.
I'm not very familiar with SpecialK. I tried using it today, but unfortunately it seems to crash the particular game I'm trying to play at the moment (Far Cry 4). I also couldn't find out whether this can be fixed. Does SpecialK always need to "inject" into a particular game to work?
Also, since I made this thread, I think I found another way to get this behavior, which is using NVIDIA Profile Inspector to set Vertical Sync to "1/4 Refresh Rate". As far as I can tell, this resulted in what I was looking for. Perfect frame pacing to my eye when running at 60fps, and when running below it, not as severe judder as I get when my monitor refresh is at 60hz. I still had to cap my fps to 60 via RTSS or else I'd get very bad input lag, which if I'm understanding correctly is because the game would run ahead and fill up the "queue" until it was full, and by the time those frames are eventually presented they are based on very old input.
However based on what you describe and your screenshot, my method isn't very configurable compared to what SpecialK appears to allow. Can I ask if you can think of a reason it would be better to use SpecialK instead of the method I describe above?
I'm not very familiar with SpecialK. I tried using it today, but unfortunately it seems to crash the particular game I'm trying to play at the moment (Far Cry 4). I also couldn't find out whether this can be fixed. Does SpecialK always need to "inject" into a particular game to work?
Also, since I made this thread, I think I found another way to get this behavior, which is using NVIDIA Profile Inspector to set Vertical Sync to "1/4 Refresh Rate". As far as I can tell, this resulted in what I was looking for. Perfect frame pacing to my eye when running at 60fps, and when running below it, not as severe judder as I get when my monitor refresh is at 60hz. I still had to cap my fps to 60 via RTSS or else I'd get very bad input lag, which if I'm understanding correctly is because the game would run ahead and fill up the "queue" until it was full, and by the time those frames are eventually presented they are based on very old input.
However based on what you describe and your screenshot, my method isn't very configurable compared to what SpecialK appears to allow. Can I ask if you can think of a reason it would be better to use SpecialK instead of the method I describe above?
Re: Is this kind of VSYNC behavior possible?
Yes. Just like RTSS. You can read the SpecialK wiki on how to use it. Easiest way is to use SKIF (the global injector of SK) to start the games with.Burchmore500 wrote: ↑12 Jan 2025, 20:40Thank you very much for this explanation.
I'm not very familiar with SpecialK. I tried using it today, but unfortunately it seems to crash the particular game I'm trying to play at the moment (Far Cry 4). I also couldn't find out whether this can be fixed. Does SpecialK always need to "inject" into a particular game to work?
The difference is that using normal vsync (1:1) and capping to 60 with SK will have less input lag. But if your current approach works fine for you, then you can keep using that.However based on what you describe and your screenshot, my method isn't very configurable compared to what SpecialK appears to allow. Can I ask if you can think of a reason it would be better to use SpecialK instead of the method I describe above?
Steam • GitHub • Stack Overflow
The views and opinions expressed in my posts are my own and do not necessarily reflect the official policy or position of Blur Busters.
The views and opinions expressed in my posts are my own and do not necessarily reflect the official policy or position of Blur Busters.
Re: Is this kind of VSYNC behavior possible?
apparently it's because of what this particular game is doing with dxdiagn... far cry 4 appears to be causing too many swapchains to be created on the same window... and then it basically dies if special k is forcing its dxgi flip model override.Burchmore500 wrote: ↑12 Jan 2025, 20:40I'm not very familiar with SpecialK. I tried using it today, but unfortunately it seems to crash the particular game I'm trying to play at the moment (Far Cry 4). I also couldn't find out whether this can be fixed.
sk normally forces dxgi flip model by default because generally sk's flip model override works pretty well and it allows for higher performance and lower latency in windowed/borderless mode for applicable dxgi games. it's extremely rare for sk's dxgi flip model override to cause an issue... but yeah far cry 4 really doesn't like it when sk forces this.
the latest special k 25.1.13 nightly-build (found in the special k discord server) has sk's dxgi flip model override disabled by default for far cry 4, so you could update to that version and reset your specialk.ini for the game
or you could open your specialk.ini config for far cry 4, then change UseFlipDiscard=true to UseFlipDiscard=false
and then relaunch the game with sk

also, windows 11's flip model override (windows 11's optimizations for windowed games option in windows 11's graphics settings) can force this game to use flip model and manages to work around the problem...
so, while you can't use sk's flip model override in this particular game, you can at least still use windows 11's flip model override to improve far cry 4's performance and latency in borderless mode (or play this game with its fullscreen mode).

ideally, for higher performance and lower latency... you'd want a game's presentation model to be "hardware: independent flip" or "hardware composed: independent flip" or "hardware: legacy flip"
special k also tells you a game's current presentation model (you'd normally find this above sk's frametime graph). you could also check with intel's presentmon or with an rtss presentmon overlay.
also, if you've got rtss running in the background, you may need to close rtss before launching the game with sk
or, if you want to use sk and rtss together for some reason... you could try setting rtss to "use microsoft detours api hooking" in rtss's settings under setup --> general

