Inconsistent frame delivery?

MythicalSnake

Prominent
Apr 9, 2017
61
0
640
I've been having some stutters in some games. Games that I lock the framerate to 30 in (while having a 60hz monitor) using RivaTuner. Even though it says in RivaTuner and MSI Afterburner that it's a perfect 30 fps and perfect 33,3 ms frametimes, I still experience inconsistent stutters.
Does anyone know the cause of this?

 
Solution
You need special hardware to show the ACTUAL frame times. Software just guesses.

For example, FRAPS hooks into when software REQUESTS a new frame but that frame may never end up being drawn on the screen for various reasons. So it could record 60FPS but you might only create 44 of them.

*If a game is juddery, stuttery, or has sudden FPS drops then you do NOT have consistent frame times despite what software may say.

Now what to do?

Not sure what hardware you have but you can:
a) VSYNC ON (must maintain 60FPS or drops cause stutter)
b) Adaptive VSYNC (VSYNC turns OFF below 60FPS so screen tear but not added stutter)
c) "Half Refresh" for Adaptive VSYNC (locks to 30FPS on 60Hz monitor and drops below 30FPS turn VSYNC OFF)

d) FPS cap...
You need special hardware to show the ACTUAL frame times. Software just guesses.

For example, FRAPS hooks into when software REQUESTS a new frame but that frame may never end up being drawn on the screen for various reasons. So it could record 60FPS but you might only create 44 of them.

*If a game is juddery, stuttery, or has sudden FPS drops then you do NOT have consistent frame times despite what software may say.

Now what to do?

Not sure what hardware you have but you can:
a) VSYNC ON (must maintain 60FPS or drops cause stutter)
b) Adaptive VSYNC (VSYNC turns OFF below 60FPS so screen tear but not added stutter)
c) "Half Refresh" for Adaptive VSYNC (locks to 30FPS on 60Hz monitor and drops below 30FPS turn VSYNC OFF)

d) FPS cap (cause screen tear, but have lower lag so game feels less sluggish than the above option for when it's 30FPS VSYNC ON)
e) GSYNC, Freesync (need NVidia GPU and GSync monitor, or AMD GPU and freesync monitor)

Then you tweak the game settings to meet one of the above goals.

If stuttering is occurring too often there may be some other issue, usually hogging the CPU.

OTHER:
If NVidia then use NVidia Control Panel-> manage 3d settings->..add game-> (change to Adaptive VSYNC or the half refresh version)-> save

For AMD there is RadeonPro (Dynamic VSYNC works same as Adaptive VSYNC). AMD has a new "Enhanced Sync" functionality but not sure if it can do what Dynamic VSYNC does.
https://gaming.radeon.com/en/radeon-software-17-7-2-introducing-enhanced-sync/

Okay, it does though not sure how to turn it on:
"Enhanced Sync will stay synchronized to the display in order to avoid tearing. If the frame rate drops far enough below the display’s refresh rate, though, it will dynamically choose to allow tearing in order to get new information on screen as soon as possible and to avoid that stair-step effect. Enabling tearing is a compromise, but it’s arguably the best way of dealing with this difficult circumstance3."

That is EXACTLY the way NVidia Adaptive VSYNC works. If you turn on "Enhanced VSYNC" and don't have a Freesync monitor then this is the only benefit (there's a "FAST SYNC" function too you can Google but it just drops frames to stay synced but you have to output at least 120FPS from the GPU to work so just ignore that).

SUMMARY:
Set your GOAL (VSYNC, Adaptive... ) then tweak the game towards that. (example, force "Dynamic VSync Half Refresh" then adjust game settings to maintain 30FPS about 90% of the time).

If stutters too often try dropping game settings lower. If all games stutter way too much maybe some other issue.
 
Solution

MythicalSnake

Prominent
Apr 9, 2017
61
0
640
Photonboy, I just want to say one thing: THANK YOU SO MUCH!!! You don't know how bothered I was about this, but of course: software can't perfectly say what frametimes you get.
So, I've already tried the sync methods in the Nvidia Control Penal before: Vsync when locked at 30fps using RTSS causes stutters in some games. Adaptive Vsync allows tearing, due to the framerate always being under my refresh rate (60). I can't stand that wildly inconsistent frame delivery though. Lastly, the 1/2 refresh rate one I couldn't get to work; it didn't lock anything and left vsync off when the framerate was under 60.
What I can do, of course, is to lock framerate to 30 using RTSS (will set maximum pre-rendered frames on 1 for the lesser input lag) and to have Vsync off (and Adaptive Vsync on so I won't get tearing in the game menu). To be honest, the screentearing isn't that noticable when locked at such a framerate.
If you think that setting pre-rendered frames to 1 might have been the problem (AKA CPU can't keep up with the GPU), I've also experienced the same irregular stutter when put to the maximum amount (4).
My equipment: i5 3570 and GTX 650 Ti 1GB.
Games where it manifests: Witcher 3 at 1080p 30fps and Shadow of Mordor 1080p at 30fps. I think that the lag of VRAM might be the problem here.