EXCLUSIVE: We measure G-SYNC Input Lag in GSYNC Preview #2!

Talk about NVIDIA G-SYNC, a variable refresh rate (VRR) technology. G-SYNC eliminates stutters, tearing, and reduces input lag. List of G-SYNC Monitors.
User avatar
nimbulan
Posts: 323
Joined: 29 Dec 2013, 23:32
Location: Oregon

Re: EXCLUSIVE: We measure G-SYNC Input Lag in GSYNC Preview

Post by nimbulan » 15 Jan 2014, 03:49

Dustmuffins wrote:As it should. What I mean is something like this:

RAL = Render ahead limit.
144 fps 1RAL = 40ms
143 fps 1RAL = 40ms
142 fps 1RAL = 25ms

144 fps 3RAL = 55ms
143 fps 3RAL = 55ms
142 fps 3RAL = 40ms

I'm just making these numbers up off of the top of my head... I'd imagine they're close to this.

As you can see, decreasing the render ahead limit does have a major impact, but it still doesn't affect the difference between 142 fps and 144. So I hypothosize that even with a render ahead limit of 0, the difference will still exist.
If you're seeing 15ms of additional lag with 1RAL when hitting the frame limit, there must be something wrong since that corresponds to an additional 3 frame delay when there should be a maximum of one.
Chief Blur Buster wrote:I think the fact that lag is still there at 143 is a deficiency somewhare along the chain, either in the game, the drivers, the G-SYNC poll algorithm, etc. It may be a poll collision (e.g. drivers polled the monitor, monitor still appeared busy refreshing, drivers suddenly waited much longer). I know NVIDIA said they are working on eliminating the poll (1ms), it's also possibly a manifestation of this that we're seeing. I might ask NVIDIA directly about this...
You're probably right about that, especially since in my experience, the Source engine's frame limiter actually limits the framerate 2-3% lower than the setting (at least with vsync on.) In the past I have found that some Source engine games stuttered after turning vsync on and the framerate shown in the net_graph was highly variable so I got into the habit of setting fps_max 60 in addition to vsync. After doing this the net_graph showed a near constant 59 fps with momentary drops to 58 but ran very smoothly. I always assumed it was a rounding error since more accurate frame counters like MSI Afterburner often show 59.9 fps when using vsync. When I first tried Counter Strike: Global Offensive at 120 Hz, I naturally set fps_max 120, then discovered that the game was running at 117 fps with momentary drops to 116, with very noticable frequent stutters from the dropped frames. Setting fps_max 300 let the engine actually run at 120 fps, nice and smoothly.

In any case, what was the maximum pre-rendered frames setting in the nVidia control panel set to when these tests were run? Are there any other game engines capable of similar framerate limiting as the Source engine that could also be tested? It may also be worthwhile to test the frame limiter available in the nVidia drivers which is hidden, but can be accessed through nVidia Inspector, for comparison.

User avatar
sharknice
Posts: 295
Joined: 23 Dec 2013, 17:16
Location: Minnesota
Contact:

Re: EXCLUSIVE: We measure G-SYNC Input Lag in GSYNC Preview

Post by sharknice » 15 Jan 2014, 04:16

nimbulan wrote:Are there any other game engines capable of similar framerate limiting as the Source engine that could also be tested?
A lot of games have the ability to set a frame rate limit.

I was messing around with Planetside 2 today and you can set MaximumFPS in the UserOptions.ini file. I set it to 120 but for some reason in the game seemed to limit it to 110 fps. So I set it back to the default of 1000.

Unreal Engine 3 games have frame rate limiters that work well. Usually you edit GameDirectory\Engine\Config\BaseEngine.ini, set bSmoothFrameRate to TRUE and set MaxSmoothedFrameRate=120 (UE3 ueses a 90 fps limit in network multiplayer unless you set bSmoothFrameRate to TRUE)
If you type "stat fps" in the console it will display the fps and it usually ranges between 120.01 and 119.98. It also tells you the ms between frames, which is typically 8.33 ms for 120 fps.
I think older versions of Unreal Engine have similar settings too.

User avatar
Dustmuffins
Posts: 26
Joined: 21 Dec 2013, 09:10
Location: Ohio

Re: EXCLUSIVE: We measure G-SYNC Input Lag in GSYNC Preview

Post by Dustmuffins » 15 Jan 2014, 08:40

nimbulan wrote:If you're seeing 15ms of additional lag with 1RAL when hitting the frame limit, there must be something wrong since that corresponds to an additional 3 frame delay when there should be a maximum of one.
Yeah, I just made those numbers up :P You're probably right, but either way my point is the difference between 144/143 and 142 is substantial and changing the render ahead limit has little to no effect on the difference between 144/143 and 142. Same goes for 118fps@120hz, and 58 fps @ 60hz.

User avatar
Chief Blur Buster
Site Admin
Posts: 11648
Joined: 05 Dec 2013, 15:44
Location: Toronto / Hamilton, Ontario, Canada
Contact:

Re: EXCLUSIVE: We measure G-SYNC Input Lag in GSYNC Preview

Post by Chief Blur Buster » 15 Jan 2014, 09:24

The way G-SYNC can be designed, is that it should have no sudden input lag when crossing 143->144 or even 144->145. The lag can 'fade in' gradually, if the game is designed accordingly. However, this isn't currently the case from the behavior being seen, and it might either be a game limitation or a driver limitation.

Game limitations arises when an fps_max tries aggressively to catch up if it senses it can't refresh faster, and then gets forced to wait for the monitor. Good fps_max logic should avoid going into an uncontrolled cascading input lag cycle at the mere whiff of being a microsecond behind (because the monitor's not ready yet, etc).

The trigger level for sudden latency might even be, say, 135, due to some margin between the refresh finish cycle and the G-SYNC poll. There appears to be some G-SYNC-specific behaviors at play, so I should try rerunning the tests quick to see what fps_max values the added latency disappears at.
Head of Blur Busters - BlurBusters.com | TestUFO.com | Follow @BlurBusters on Twitter

Image
Forum Rules wrote:  1. Rule #1: Be Nice. This is published forum rule #1. Even To Newbies & People You Disagree With!
  2. Please report rule violations If you see a post that violates forum rules, then report the post.
  3. ALWAYS respect indie testers here. See how indies are bootstrapping Blur Busters research!

User avatar
Dustmuffins
Posts: 26
Joined: 21 Dec 2013, 09:10
Location: Ohio

Re: EXCLUSIVE: We measure G-SYNC Input Lag in GSYNC Preview

Post by Dustmuffins » 15 Jan 2014, 11:30

Interesting. That would be great to know where the input lag drops off 8-)

User avatar
nimbulan
Posts: 323
Joined: 29 Dec 2013, 23:32
Location: Oregon

Re: EXCLUSIVE: We measure G-SYNC Input Lag in GSYNC Preview

Post by nimbulan » 15 Jan 2014, 13:57

sharknice wrote:Unreal Engine 3 games have frame rate limiters that work well. Usually you edit GameDirectory\Engine\Config\BaseEngine.ini, set bSmoothFrameRate to TRUE and set MaxSmoothedFrameRate=120 (UE3 ueses a 90 fps limit in network multiplayer unless you set bSmoothFrameRate to TRUE)
If you type "stat fps" in the console it will display the fps and it usually ranges between 120.01 and 119.98. It also tells you the ms between frames, which is typically 8.33 ms for 120 fps.
I think older versions of Unreal Engine have similar settings too.
I don't know why I didn't think of this, I've been adjusting this setting in a bunch of games recently to get 120 Hz support though I actually did find one where this was set high enough to not need changing (Marvel Heroes) and one where you could disable it in the options menu (Deadfall Adventures.) My experience with stat fps though generally has the number varying wildly even when the framerate is stable and does not accurately reflect the game's performance. I haven't tried it for a while though, maybe it's changed since Borderlands.

User avatar
Dustmuffins
Posts: 26
Joined: 21 Dec 2013, 09:10
Location: Ohio

Re: EXCLUSIVE: We measure G-SYNC Input Lag in GSYNC Preview

Post by Dustmuffins » 03 Feb 2014, 12:38

Anyone had the chance to find the sweet spot for Gsync input lag yet? 140 fps? 142 fps like vsync?

User avatar
Chief Blur Buster
Site Admin
Posts: 11648
Joined: 05 Dec 2013, 15:44
Location: Toronto / Hamilton, Ontario, Canada
Contact:

Re: EXCLUSIVE: We measure G-SYNC Input Lag in GSYNC Preview

Post by Chief Blur Buster » 09 Feb 2014, 00:08

Dustmuffins wrote:Anyone had the chance to find the sweet spot for Gsync input lag yet? 140 fps? 142 fps like vsync?
For Counterstrike: GO, it appears to work great at fps_max 135 and 138. I think 140 works well, but 1 person reported it started lagging unexpectedly.

NVIDIA is aware and they are researching into this, as I feel that fps_max 143 can ideally work perfectly. No guarantee if it's the game's fault, but technically if it's not the game's fault, it should be fixable in drivers (in theory). Time will tell!
Head of Blur Busters - BlurBusters.com | TestUFO.com | Follow @BlurBusters on Twitter

Image
Forum Rules wrote:  1. Rule #1: Be Nice. This is published forum rule #1. Even To Newbies & People You Disagree With!
  2. Please report rule violations If you see a post that violates forum rules, then report the post.
  3. ALWAYS respect indie testers here. See how indies are bootstrapping Blur Busters research!

User avatar
RealNC
Site Admin
Posts: 3743
Joined: 24 Dec 2013, 18:32
Contact:

Re: EXCLUSIVE: We measure G-SYNC Input Lag in GSYNC Preview

Post by RealNC » 09 Feb 2014, 00:48

It might be worth checking whether "multicore rendering" (in the "advanced" video settings) has an effect on CSGO input lag. Also, the "-threads" command line option could also have an effect. ("-threads 1" vs 2 vs 3; AFAIK the Source engine does not support more than 3 rendering threads.) I believe the "-threads" option controls how many frames to render in parallel when "multicore rendering" in enabled in the game's video settings.

I'm mentioning this because rendering multiple frames in parallel could have an effect on input lag.
SteamGitHubStack 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.

Berserker
Posts: 10
Joined: 06 Feb 2014, 06:50

Re: EXCLUSIVE: We measure G-SYNC Input Lag in GSYNC Preview

Post by Berserker » 10 Feb 2014, 09:06

RealNC wrote:It might be worth checking whether "multicore rendering" (in the "advanced" video settings) has an effect on CSGO input lag. Also, the "-threads" command line option could also have an effect. ("-threads 1" vs 2 vs 3; AFAIK the Source engine does not support more than 3 rendering threads.) I believe the "-threads" option controls how many frames to render in parallel when "multicore rendering" in enabled in the game's video settings.

I'm mentioning this because rendering multiple frames in parallel could have an effect on input lag.
Multicore rendering has noticeable input lag in all source engine games. Very easy to notice difference by toggling it on and off with high graphical settings. On absolute lowest settings with fps config it gets more tolerable.
For me personally its even more annoying than oneframethread lag in UE3.

And also this:
http://renderingpipeline.com/2013/09/me ... t-latency/
HL2 with vsync: 112 msec
HL2 without vsync: 76 msec
HL2 without vsync and drastically reduced image quality: 58 msec
HL2 without vsync, reduced quality and no multicore renderer: 50 msec

Post Reply