Monitor reported refresh rate vs system [Technical LFC Debugging for VRR]

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.
Mrshultz
Posts: 2
Joined: 11 Oct 2021, 10:46

Monitor reported refresh rate vs system [Technical LFC Debugging for VRR]

Post by Mrshultz » 11 Oct 2021, 10:54

Hi there,

I have a 165Hz free sync premium display that I am using with an RTX 3090, g-sync is on and working

I am capping my FPS within the nVidia control panel to 162 fps, this is reflected in any in-game FPS readouts or other tools such as RTSS

When playing Halo 4 within MCC, the game felt like it had moments of stutter. If I lowered the FPS cap to 120, this stutter disappeared.

While the fps cap was at 162, if I bought up the monitors status page (where it shows the Hz the monitor is currently running at which dynamically changes every half second or so), I observed frequent reporting of 165Hz; when the FPS cap was set to 120, the monitor did at points report higher than 120 Hz but never hit 165hz

My question: is the monitor output accurate, and if so, would that mean when it reports 165Hz v-sync is enabling which would cause stutter if it’s flicking between v-sync on, and then a dip below as adaptive refresh kicks in?

Thanks in advance
A

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

Re: Monitor reported refresh rate vs system

Post by RealNC » 11 Oct 2021, 11:36

Whether the monitor's FPS indicator is accurate or not is actually completely unknown. I'm not aware of anyone having tested it on any monitor.

But regardless, you can try a 162FPS cap, use gsync ON but force vsync OFF. Just as a test. If the stutter is still there, then this has nothing to do with hitting the 165Hz limit (because with vsync forced off there is no 165Hz limit.) It's probably just due to high FPS resulting in higher CPU/GPU load, and thus making the system more prone to stutter.
SteamGitHubStack OverflowTwitter
The views and opinions expressed in my posts are my own and do not necessarily reflect the official policy or position of Blur Busters.

Mrshultz
Posts: 2
Joined: 11 Oct 2021, 10:46

Re: Monitor reported refresh rate vs system

Post by Mrshultz » 11 Oct 2021, 12:20

Thanks for the response, I’ll give that a go and report back!

wtfisgoingon
Posts: 6
Joined: 08 Nov 2021, 11:11

Re: Monitor reported refresh rate vs system

Post by wtfisgoingon » 08 Nov 2021, 11:59

I just spent countless hours with this exact same issue, in fact it took countless hours just to figure out what was going on because it appeared that G-Sync was working correctly and my FPS was fine. But I could "feel" that something was very wrong.

Eventually I stumbled onto adding the line "SyncInfo=2" as well as "SyncTimeout=1" in my RTSS profile and immediately noticed that my SyncTimeout would not only change wildly each time RTSS started up but also that it was almost always extremely high such as 22-25ms. This would only happen when I used G-Sync. If I didn't use G-Sync it would always show normal numbers that matched my current refresh rate.

After trying everything from fresh Windows 10 installs, to fresh Windows 11 installs, various drivers and changing practically every single setting obsessively even keeping a list and systematically trying one by one in combo with others trying to figure out what was going on with no luck and always the exact same results, I decided to try something I hadn't thought of which was I turned on the setting to show my current refresh rate on screen via monitor settings and I saw it was changing so quickly it was essentially unreadable because it was fluctuating so quickly. I used my phone to take pictures and videos and was then able to see it was jumping from 40Hz to 144Hz depending on my current FPS and even if I limited my FPS it would still wildly fluctuate even when my FPS and frametimes were rock-steady. This happened in every game I tried.

Then it took even longer to figure out how to solve it because I then again went through trying everything all over again (fresh win10 and win11 installs, half a dozen drivers, going through every single setting over and over again etc) and I spent so much time on it that I decided I'd better make an account here and post my findings.

I would spend days in a row on this and then give up frustrated, then go back to it because it kept bugging me that I couldn't use G-Sync and I had used it for years in the game that I play hours each day. Then suddenly after what was probably the millionth time of firing up my game suddenly my OSD refresh rate sat @ 144Hz and did not move at all. RTSS reported the correct SyncTimeout and I played a few matches of my game and everything felt amazing again. I was literally scared to shut down the game so I played it for a few hours with no problems, then finally I took the plunge and closed the game and immediately fired it up again. Refresh rate back to going all over the place so quickly I couldn't read it and RTSS reported 25ms Sync timeout.

I almost lost it at that point I just about raged out but this was literally the very first time that I got it to work so I knew I had stumbled onto a fix I just had to figure out what just happened so I just sat there replaying in my head trying to remember what the very last thing I did was.. and all I could come up with was I had tried using "Fast" as Vsync option for my game (which I had tried countless times before and didn't work) but when I tried that again no luck.

Then I remembered that right after I had changed it to "Fast" that I had to check the box under "Set up G-Sync" to "Enable Settings For Selected Display" because I had left it unchecked in the last couple of tests I had done that day and because of that the G-Sync indicator didn't appear.

So I unchecked the box, clicked apply and then rechecked the box and clicked apply. Then i fired up my game and my refresh rate stayed at 144Hz and everything worked. When I do this it doesn't matter about any other settings such as Vsync set to off/on/fast and this happens in every one of the 5-6 games I tested it on.

I tested this over and over again for the last 24hrs.

I have to uncheck this box, then click apply, then check the box and click apply for things to work correctly. I have to do this every single time before I play any game but it works 100% of the time and on the flip side if I do not do this then 100% it fails and I mean that very literally! It works 100% of the time if I do this, and it fails 100% of the time if I do not.

This is specifically that one setting, meaning I can't just disable and then enable Gsync because it will still fail. I have to have G-Sync enabled and then uncheck that box and recheck it for it to work.

I have more details I can provide if anyone wants them but right now after not being able to use G-Sync I really just want to spend all day playing with it :)

I forced myself to make an account and post here in hopes it will help someone else.

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

Re: Monitor reported refresh rate vs system

Post by Chief Blur Buster » 08 Nov 2021, 12:04

wtfisgoingon wrote:
08 Nov 2021, 11:59
I just spent countless hours with this exact same issue, in fact it took countless hours just to figure out what was going on because it appeared that G-Sync was working correctly and my FPS was fine. But I could "feel" that something was very wrong.

Eventually I stumbled onto adding the line "SyncInfo=2" as well as "SyncTimeout=1" in my RTSS profile and immediately noticed that my SyncTimeout would not only change wildly each time RTSS started up but also that it was almost always extremely high such as 22-25ms. This would only happen when I used G-Sync. If I didn't use G-Sync it would always show normal numbers that matched my current refresh rate.

After trying everything from fresh Windows 10 installs, to fresh Windows 11 installs, various drivers and changing practically every single setting obsessively even keeping a list and systematically trying one by one in combo with others trying to figure out what was going on with no luck and always the exact same results, I decided to try something I hadn't thought of which was I turned on the setting to show my current refresh rate on screen via monitor settings and I saw it was changing so quickly it was essentially unreadable because it was fluctuating so quickly. I used my phone to take pictures and videos and was then able to see it was jumping from 40Hz to 144Hz depending on my current FPS and even if I limited my FPS it would still wildly fluctuate even when my FPS and frametimes were rock-steady. This happened in every game I tried.

Then it took even longer to figure out how to solve it because I then again went through trying everything all over again (fresh win10 and win11 installs, half a dozen drivers, going through every single setting over and over again etc) and I spent so much time on it that I decided I'd better make an account here and post my findings.

I would spend days in a row on this and then give up frustrated, then go back to it because it kept bugging me that I couldn't use G-Sync and I had used it for years in the game that I play hours each day. Then suddenly after what was probably the millionth time of firing up my game suddenly my OSD refresh rate sat @ 144Hz and did not move at all. RTSS reported the correct SyncTimeout and I played a few matches of my game and everything felt amazing again. I was literally scared to shut down the game so I played it for a few hours with no problems, then finally I took the plunge and closed the game and immediately fired it up again. Refresh rate back to going all over the place so quickly I couldn't read it and RTSS reported 25ms Sync timeout.

I almost lost it at that point I just about raged out but this was literally the very first time that I got it to work so I knew I had stumbled onto a fix I just had to figure out what just happened so I just sat there replaying in my head trying to remember what the very last thing I did was.. and all I could come up with was I had tried using "Fast" as Vsync option for my game (which I had tried countless times before and didn't work) but when I tried that again no luck.

Then I remembered that right after I had changed it to "Fast" that I had to check the box under "Set up G-Sync" to "Enable Settings For Selected Display" because I had left it unchecked in the last couple of tests I had done that day and because of that the G-Sync indicator didn't appear.

So I unchecked the box, clicked apply and then rechecked the box and clicked apply. Then i fired up my game and my refresh rate stayed at 144Hz and everything worked. When I do this it doesn't matter about any other settings such as Vsync set to off/on/fast and this happens in every one of the 5-6 games I tested it on.

I tested this over and over again for the last 24hrs.

I have to uncheck this box, then click apply, then check the box and click apply for things to work correctly. I have to do this every single time before I play any game but it works 100% of the time and on the flip side if I do not do this then 100% it fails and I mean that very literally! It works 100% of the time if I do this, and it fails 100% of the time if I do not.

This is specifically that one setting, meaning I can't just disable and then enable Gsync because it will still fail. I have to have G-Sync enabled and then uncheck that box and recheck it for it to work.

I have more details I can provide if anyone wants them but right now after not being able to use G-Sync I really just want to spend all day playing with it :)

I forced myself to make an account and post here in hopes it will help someone else.
Great feedback!

It would be neat if there was a way to automate this, or figure out why this was happening, so that the bug is fixed (e.g. driver bug, RTSS bug, etc).

Are you using single monitor or multiple monitor?
What version/build of Windows (in Start -> Run -> winver)?
Head of Blur Busters - BlurBusters.com | TestUFO.com | Follow @BlurBusters on Twitter

       To support Blur Busters:
       • Official List of Best Gaming Monitors
       • List of G-SYNC Monitors
       • List of FreeSync Monitors
       • List of Ultrawide Monitors

wtfisgoingon
Posts: 6
Joined: 08 Nov 2021, 11:11

Re: Monitor reported refresh rate vs system

Post by wtfisgoingon » 08 Nov 2021, 12:28

Chief Blur Buster wrote:
08 Nov 2021, 12:04
Great feedback!

It would be neat if there was a way to automate this, or figure out why this was happening, so that the bug is fixed (e.g. driver bug, RTSS bug, etc).

Are you using single monitor or multiple monitor?
What version/build of Windows (in Start -> Run -> winver)?
Single monitor.

Windows 10 21H1 (OS build 19043.1320) and using 496.61 drivers currently. Although I have tested this solution with a few older drivers as well as on Win11 with same exact results.

My monitor (Acer VG27OU P) is not G-Sync certified which I'm sure is the underlining issue since this does not happen on the other monitors I have here which are G-Sync certified but neither of them have the option to display current refresh rate on screen other than manually pressing the "info" button however when using the certified monitors and G-Sync and pressing the info button it always reports a refresh rate of 144Hz every single time.

Might be worth noting that on the Acer when I don't use this "fix" my OSD refresh rate is going nuts and I press its "info" button it reports a different current refresh rate each time and the number is often very low such as 56Hz / 62Hz even though it is set to 144Hz and when I apply this fix and press the "info" button it always reports 144Hz every single time so I used that to verify to myself that the OSD refresh rate fluctuating wildly was actually happening since the OSD was reporting it as well as the info button.

Also even if I took RTSS out of the equation the OSD and info button would still report wildly fluctuating refresh rates, as well as every other setting under the sun. The only thing that would make it work correctly was/is to uncheck that box click apply, recheck box click apply and then start game<s>.

By the way huge respect for all that you guys do here, scouring your posts is what helped me solve this issue that was driving me insane!

<3

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

Re: Monitor reported refresh rate vs system

Post by Chief Blur Buster » 08 Nov 2021, 12:45

Low Framerate Compensation (LFC) and it's "sticky" behavior in NVIDIA graphics drivers when frame rates go below VRR minimum Hz.

NVIDIA drivers is known to have very sticky/wonky LFC logic that affects very certain use cases (e.g. emulators). It was mostly a coding workaround for FreeSync monitors going temporarily black.

LFC is when the monitor uses two (or more) refresh cycles to execute one refresh cycle. For example, 24Hz may be achieved via 48Hz, 72Hz or 96Hz, depending on what is going on with the LFC logic. Sometimes it's crap shoot.

This will cause the weirdnesses in the frame rate counter in VRR monitors. LFC is usually when monitors go below min Hz, but LFC necessary has a minor amount of stickness -- framerate needs to go up a lot more in order for LFC to disengage. Cycling monitor settings resets the LFC logic.

AMD drivers have superior LFC logic to NVIDIA drivers in my experience, for non-native-GSYNC-chipped monitors, so things like these are.... alas.... a bit more common. If there's no glitches, don't worry about it. But sometimes LFC glitches such as flicker or stutter can be pronounced, but it's a lesser of evil versus monitors temporarily going black when refresh rate falls below VRR minimum Hz.

When VRR is enabled, sometimes the LFC stays enabled when framerates go up, and it goes wonky with RTSS behaviors, since it's doing two VSYNC's per Hz, and RTSS was not designed for this.

It's an annoying quirk of NVIDIA graphics drivers, partially as a workaround for other problems (e.g. monitors going black), but there's better programming mitigations that I hope the NVIDIA driver programmers can do, like a realtime-priority refresh cycle thread. Or some customizable registry tweak that we haven't discovered yet, that can influence LFC logic a little bit.

LFC is done in software on non-native-GSYNC-chipped monitors (aka FreeSync or "G-SYNC Compatible") so if frametime is a microsecond longer than the refreshtime of minimum Hz, LFC logic needs to activate instantly. That requires REALTIME thread priority, process priority, in the kernel space. Somehow, certain things in NVIDIA drivers are lower priority than some other drivers and whatever Windows does, and are more LFC-glitch-sensitive than AMD drivers. One workaround NVIDIA did was to make LFC more sticky (activate LFC a little earlier above minimum Hz, and keep it sticky longer until very far above minimum Hz). This creates some problematic issues even for certain games at 60fps.

Even though LFC operation can be superior in quality (less flicker, fewer inversion artifacts, more accurate gamma), and higher LFC thresholds are strongly recommended on wide-VRR ranges (e.g. 65Hz-240Hz VRR range on 240Hz VRR monitors), and I recommend raising FreeSync ranges in ToastyX EDID overrides, to solve a few LFC-related problems, the LFC penalty is much smaller when it comes to 240Hz+. You just ignore the weird framerate counter if there's no glitches.

But other times, raster-based systems (e.g. RTSS Scanline Sync) may sometimes go wonky since it's seeing two VSYNC's pass by for a single virtual (LFC'd) refresh cycle, and it's trying to beam-race the VSYNC. And visible glitches may happen as a result of that, too. One solution to that is to simultaneously do a framerate cap (slightly higher than RTSS Scan Line Sync Hz), so that one of the VSYNCs is ignored during these LFC events.

The technical explanation for scanline-based synchronization (raster based) is rather complex for displays doing multiple real refresh cycles per virtual refresh cycle in an LFC event, but certain windows APIs will show multiple refresh cycle passes, which will confuse some frame rate counters and/or synchronization methods relying on refresh cycle counts instead of frame presentation counts, violating framerate=Hz sync of VRR and creating glitches such as nasty stutters (worse than LFC alone) or tearing during raster-based scanline sync based capping methods (Special-K's new K-Sync feature, as well as RTSS Scanline Sync)
Head of Blur Busters - BlurBusters.com | TestUFO.com | Follow @BlurBusters on Twitter

       To support Blur Busters:
       • Official List of Best Gaming Monitors
       • List of G-SYNC Monitors
       • List of FreeSync Monitors
       • List of Ultrawide Monitors

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

Re: Monitor reported refresh rate vs system

Post by RealNC » 09 Nov 2021, 12:20

wtfisgoingon wrote:
08 Nov 2021, 11:59
I have more details I can provide if anyone wants them but right now after not being able to use G-Sync I really just want to spend all day playing with it :)
Thanks for taking the time to post this. You might want to report this to nvidia:

https://nvidia.custhelp.com/app/answers ... -to-nvidia
SteamGitHubStack OverflowTwitter
The views and opinions expressed in my posts are my own and do not necessarily reflect the official policy or position of Blur Busters.

User avatar
Crazyness
Posts: 35
Joined: 18 Mar 2021, 12:14

Re: Monitor reported refresh rate vs system

Post by Crazyness » 10 Nov 2021, 08:42

1. LFC sticky behavior on 390hz is lets say strange in the lack of d more appropriate term.

LFC kicks in at 195!! its sticky till 220 225 230..
so lets say i am playing poorly optimized game,depending on my position on the map
it can dip 2 220 and Lfc kicks in,or it can go high as 390..
so half of the time i am at 195 locked
in those moments,picture is kinda bad, i can feel input delay

and MOST important thing is..there is no frame locking when v-sync is enabled with ullm is set 2 on or ultra!
so fps is locked 2 390 instead of 380..

2. after clean install if i tick "Enable Settings For Selected Display" it will redirect 2 some other pannel
bcs after i tick that setting frame lock will occur at 351 suggesting that 360 hz monitor is in play and not 390!


and LFC acts completely different,there might be 2 reasons 4 that..

1.LFC will kick at 180 instead 195

2. sticky behavior is more narrow sort of speak = alowing much more freedom in frame drops

as a result my average fps is higher and i am almost always 250fps+ without those LFC moments..

I am almost certain its bcs n-vidia didnt implement higher refresh rates than 360,in theirs NVCP algorythm.



also fun fact talking about NVCP..

i am not sure if this behavior is intendent or not,

when you "dont" tick Enable Settings For Selected Display box,
and you clicked aply and than go into other setings in NVCP or closing d NVCP..
when you come back 2 g-sync region,that seting is gone,
so you can aply it only once after clean install..

same thing happens with desktop size and position...
after clean install,integral scaling is available 4 choosing,
and if you selected any other option ,no scaling, aspect or full screen
and clicked apply..and you close the NVCP,
from that moment every time you open NVCP

integral scaler in longer available as an option!

EDIT:
I was high as a mofo when i wrote this,so instead of typical v-sync behavior i was assuming its LFC..
its that "sticky icky icky" thingy confused me :)
rest is pretty much valid.

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

Re: Monitor reported refresh rate vs system Monitor reported refresh rate vs system [Technical LFC Debugging for VRR]

Post by Chief Blur Buster » 10 Nov 2021, 12:21

LFC kicking in at 195fps!

Are you sure each frametime are exactly 1/195sec each minimum?

Sometimes LFC kicks in because you have a 1/30sec frametime in the middle of 1/200sec frametimes. Use a microsecond-precise framerate cap like RTSS for testing this, not in-game framerate cap. In-game framerate caps are often inaccurate. 300fps may mean some frames are 10/300sec and other frames are 0.1/300sec in the act of trying to average 300fps. 10/300sec = 1/30sec = LFC. So use a microsecond-accurate framerate capper that is frametime-based rather than average-framerate based.

Graph the frametimes. Ignore the average frame rate, look at the frametime graphs. LFC kicks in at those frametime valleys. That's the most common LFC trigger. The cliffs and the valleys. Pay attention to valleys. Pay attention to 0.1% frametimes.

It takes only one long frametime to enable LFC. That's the magic frame. LFC is enabled by a single frame whose frametime that accidentally lasted too long. Look for those magic frames. The average framerate is the haystack, while the single long-frametime frame is the needle we need to look for during technical LFC analysis, debugging & diagnostics.

I am not surprised that there can be a long delay for LFC to disable itself after LFC enables. So in that case, I would not be surprised if it is still temporarily sticky for a little while even at 190fps.

But, if LFC is still kicking in at perfect glassfloor graph 190fps 1/190sec (+/- 0 microsecond) frametimes, I will be shocked and wonder why the bleep they're doing that... And will wonder if it was an ugly bugfix band-aid for other worse LFC bugs (of which there are nummerable -- including the dreaded "monitor blacks out" problem). But that's one hell of a brute-force bandaid that should in theory be unnecessary.

Complex LFC debugging is fun, isn't it...
Head of Blur Busters - BlurBusters.com | TestUFO.com | Follow @BlurBusters on Twitter

       To support Blur Busters:
       • Official List of Best Gaming Monitors
       • List of G-SYNC Monitors
       • List of FreeSync Monitors
       • List of Ultrawide Monitors

Post Reply