[SOLVED] FPS doesn't drop below 100 without Vsync, but with Vsync FPS drops below 60

DudE132

Distinguished
May 28, 2011
178
0
18,680
GTX 970, I5 4690K @ 4ghz, 16GB DDR3 RAM, SSD, 60hz monitor Windows 10.

Let's say I'm playing a game with uncapped framerate and I do not drop below 100FPS. I then enable Vsync and a 60FPS lock. My issue is that I won't have a rock solid 60FPS. Despite uncapped never dropping below 100FPS, with Vsync and a 60FPS lock my framerate will periodically drop down to 55-59 then back up to 60 causing stutters.

I've tried RTSS, Nvidia Control Panel tweaks and a multitude of other things yet this is often the case from game to game. If I don't drop below 100 without Vsync, why am I dropping below 60 with Vsync?
 
Solution
I'm using Rivatuner Statistics Server which is generally known as the best way to lock framerate with steady frametimes.
When I lock the FPS to 60 I'll sometimes have solid 16.6 frametime during the drops to 58 or 59.
I can think of some theories, like because the GPU can perform beyond the refresh rate, VSync is likely causing the GPU to stall at points and those stalls can cause hiccups when the GPU needs to ramp up again.

If you're playing with VSync to avoid tearing, a workaround that I suggest if you're running on Windows 10 is to run games in either windowed or borderless window. Windows forces triple buffering + Vsync on all windows, which allows the GPU to render as fast as possible but only present the last rendered frame.
FPS doesn't necessarily mean frame times are consistent. You can still measure 100FPS if 99 of those frames happened in the first 99ms of the sampling period with the last frame taking up the remaining 901ms. Your system may simply get times when the frame time is 17-18ms for a single frame but it just happens to be the one that lands on a Vsync hold.
 

DudE132

Distinguished
May 28, 2011
178
0
18,680
FPS doesn't necessarily mean frame times are consistent. You can still measure 100FPS if 99 of those frames happened in the first 99ms of the sampling period with the last frame taking up the remaining 901ms. Your system may simply get times when the frame time is 17-18ms for a single frame but it just happens to be the one that lands on a Vsync hold.
I'm using Rivatuner Statistics Server which is generally known as the best way to lock framerate with steady frametimes.
When I lock the FPS to 60 I'll sometimes have solid 16.6 frametime during the drops to 58 or 59.
 
Last edited:
I'm using Rivatuner Statistics Server which is generally known as the best way to lock framerate with steady frametimes.
When I lock the FPS to 60 I'll sometimes have solid 16.6 frametime during the drops to 58 or 59.
I can think of some theories, like because the GPU can perform beyond the refresh rate, VSync is likely causing the GPU to stall at points and those stalls can cause hiccups when the GPU needs to ramp up again.

If you're playing with VSync to avoid tearing, a workaround that I suggest if you're running on Windows 10 is to run games in either windowed or borderless window. Windows forces triple buffering + Vsync on all windows, which allows the GPU to render as fast as possible but only present the last rendered frame.
 
Solution