Triple Buffering
-
From Nvidia about fast sync:
…
3 times isn’t so practical. Even if now you can run BMS at 200 FPS, that’s because your GPU is currently hardly doing anything… so fast sync isn’t something to get used to as a problem solver WRT buffering the frames.Yeah I think I get where they are coming from, with that statement… all games are different tho. For a twitchy, jerky, first-person shooter experience, input-to-render latency is paramount, and smoothness can be sacrificed.
It’s definitely true, on paper, if you model the frame-ages (time from sampling input, to display on-screen) that G-sync + v-sync and LLM=Ultra is numerically best (edit: without tearing). If you’re playing Counterstrike or Call of Duty etc, that’s probably the way to go.
But for a flight sim, a sense of smoothness is equally valuable as raw input-latency… maybe more so? (Opinions may differ.)
As a metaphor, imagine driving along a perfectly smooth asphalt road… but there’s a 1-inch gap between sections of the road, every 87 yards. Mostly fast and smooth, but it’s a juttery and annoying experience overall. Vs driving along a gravel road, that is well maintained and reasonably level, but the road surface is a mix of 1/4in and 1/2in gravel… and a few 1-inch rocks strewn in.
Objectively, the asphalt road would be “smoother” on average than the gravel road. But subjectively, it would be super annoying to hit that little bump every 3 seconds… unavoidably… forever… while the gravel road would be rougher and noisier at high-frequency, but feel less bumpy and annoying overall.
That’s BMS for me. On both of my systems (old and new) there is a stutter every 87th frame… visible in PresentMon logs as a ~7ms spike in time between Present() calls, every 87th frame like clockwork. (If your avg/p90 fps is ~100 but your p99 is ~60, that’s the reason.)
The practical effect, for a flight sim, is the “snapshot” of scenery out your window is slightly delayed, every 87th frame… relative to the 86th and 88th frames. While the other 86 frames are snapshots taken at near-perfectly uniformity, within 2ms. It’s like a perfect smooth road with a bump every 87 yards.
That microstutter is still there, when running triple-buffering, but with fps cap set to around 1.4x the refresh rate, my adjacent frame-ages are sufficiently randomized, plus/minus a few milliseconds, that I never notice the occasional +7ms gap. Everything appears smoother, on average – it’s the gravel road.
In a future update, if that 87th-frame stutter were somehow taken away … then I would probably no longer recommend triple-buffering, and instead just recommend G-sync w/ fps-cap, the way blurbusters and most other forums do, for most games.
-
For me, that was an excellent analogy. Graphics has always been a bit of “Black Magic” to me but I understood that. Thanks
-
Yeah I think I get where they are coming from, with that statement… all games are different tho. For a twitchy, jerky, first-person shooter experience, input-to-render latency is paramount, and smoothness can be sacrificed.
It’s definitely true, on paper, if you model the frame-ages (time from sampling input, to display on-screen) that G-sync + v-sync and LLM=Ultra is numerically best (edit: without tearing). If you’re playing Counterstrike or Call of Duty etc, that’s probably the way to go.
But for a flight sim, a sense of smoothness is equally valuable as raw input-latency… maybe more so? (Opinions may differ.)
As a metaphor, imagine driving along a perfectly smooth asphalt road… but there’s a 1-inch gap between sections of the road, every 87 yards. Mostly fast and smooth, but it’s a juttery and annoying experience overall. Vs driving along a gravel road, that is well maintained and reasonably level, but the road surface is a mix of 1/4in and 1/2in gravel… and a few 1-inch rocks strewn in.
Objectively, the asphalt road would be “smoother” on average than the gravel road. But subjectively, it would be super annoying to hit that little bump every 3 seconds… unavoidably… forever… while the gravel road would be rougher and noisier at high-frequency, but feel less bumpy and annoying overall.
That’s BMS for me. On both of my systems (old and new) there is a stutter every 87th frame… visible in PresentMon logs as a ~7ms spike in time between Present() calls, every 87th frame like clockwork. (If your avg/p90 fps is ~100 but your p99 is ~60, that’s the reason.)
The practical effect, for a flight sim, is the “snapshot” of scenery out your window is slightly delayed, every 87th frame… relative to the 86th and 88th frames. While the other 86 frames are snapshots taken at near-perfectly uniformity, within 2ms. It’s like a perfect smooth road with a bump every 87 yards.
That microstutter is still there, when running triple-buffering, but with fps cap set to around 1.4x the refresh rate, my adjacent frame-ages are sufficiently randomized, plus/minus a few milliseconds, that I never notice the occasional +7ms gap. Everything appears smoother, on average – it’s the gravel road.
In a future update, if that 87th-frame stutter were somehow taken away … then I would probably no longer recommend triple-buffering, and instead just recommend G-sync w/ fps-cap, the way blurbusters and most other forums do, for most games.
I tried Presentmon here and ran BMS TE for a minute or so, I can’t spot any kind of stutters in present time. Log showed ~5ms for most frames, sometimes ~6ms and some rare ones gone to 7-8ms but I couldn’t make any pattern, so I’ll assume this is more or less normal behavior. Did you tried to play with Nvidia settings and see if that stutter is gone or the periodic behavior of it is changed? With my 1080 I can spot stutters every ~3-4 seconds or so if the GPU VRAM is fully utilized (even for an internal dev version that is an extreme case to fill 8GB of VRAM) and I can understand swapping may cause that, but I don’t think you can get even near that with 4.35 to fill even 2GB of VRAM.
-
The internet is flooded with upcoming ms updates that fix many game and rendering issues…
-
I tried Presentmon here and ran BMS TE for a minute or so, I can’t spot any kind of stutters in present time. Log showed ~5ms for most frames, sometimes ~6ms and some rare ones gone to 7-8ms but I couldn’t make any pattern, so I’ll assume this is more or less normal behavior. Did you tried to play with Nvidia settings and see if that stutter is gone or the periodic behavior of it is changed? With my 1080 I can spot stutters every ~3-4 seconds or so if the GPU VRAM is fully utilized (even for an internal dev version that is an extreme case to fill 8GB of VRAM) and I can understand swapping may cause that, but I don’t think you can get even near that with 4.35 to fill even 2GB of VRAM.
I’ll DM you a csv file from my PresentMon if that’s ok, so you can see what I’m talking about… just captured 5 seconds on 4.35.U1, TR #4 night ILS landing.
https://imgur.com/a/YKc6GRu
https://dmwzyqd0jibt2.cloudfront.net/FrameView_Falcon%20BMS.exe_2021_03_02T035829_Log.csvOn my upgraded rig it’s about +5ms every 87th frame. In this 5 second capture you’ll see Column N (MsBetweenPresents) is a very consistent 10-12ms, except rows 70, 157, 244, 331, 418 which spike to about 15.5ms.
This repros for me on 2 totally different desktops… different generation cpu/mobo/gpu (both Intel and Nvidia tho… and both same Windows 10).
Repros for every Nvidia and OS setting I’ve tried … both g-sync and fixed-refresh. Can’t shake it.
One weird thing I did just now notice, is that it seems somehow driven by the game’s concept of time – if I hit [capslock] to go 4x, the stutters happen every 8 frames (nb: not 22, but 8?)… enough to drop my p90 down to match my p99 which is how I noticed that effect.
But at the normal sim time rate, it seems disconnected from wall-clock time … it is always 87 frames, regardless if I’m running v-sync with monitor at 60hz (~1.4 sec) or 85hz (~1 sec) or 100hz (~0.87 sec)… or if I’m running triple-buffer with a cap of 120 (~0.725 sec)
[Edit: added links to graph and csv log file]
-
-
I’m curious, what monitor model do you have?
Aoc Agon AG352UCG
https://www.tomshardware.com/reviews/aoc-ag352ucg-curved-g-sync-gaming-monitor,5280.htmlIt’s nice but not great … a few years old now.
-
You can also play in monitor settings with overdrive set to medium. I got the CU34G2X/BK few weeks ago and I discovered a good compromise in medium to have a good ms result.
Cheers
-
-