Update 6/27/16: WIP. Added brief info, need citations.
What’s this thread about?
I’d like to hear about your experiences with input lag and VSync, what you know and don’t know, and ultimately make conclusions about various setups and their input latencies.
Traditionally, there has always been a tradeoff between image fluidity and input latency. You either have zero input latency with image tearing & frame judder, or a perfectly fluid 60FPS image with noticeable input latency. I’m a guy that prioritizes low input latency in games, but I don’t want to experience screen tearing if I don’t have to.
There are a lot of tricks floating around the internet to try to get both a perfect 60FPS with low input latency, from playing the game windowed to limiting the framerate. I like to think that I can perceive input lag, but sometimes it’s hard to tell if these tricks work or do anything – hence, “Magic or Placebo.”
Brief summary of VSync and input latency:
Thanks Arulan, Durante, and HTupolev for the additional input and clarifications.
A lot of input latency is based on hardware factors outside of your control, such as the quality of your keyboard and your monitor. Everything else is affected by software, and one major source of input latency is VSync.
Here's a brief overview of the various VSync options, assuming an ordinary 60Hz monitor.
Here's a post by HTupolev which also elaborates on the above: http://www.neogaf.com/forum/showthread.php?p=150371456#post150371456
The following are some tricks I've found around the internet which attempt to combine both low input lag and a VSynced image, or at least a close-enough compromise.
Forcing triple-buffering (common) using external programs
Triple-buffering can reduce variation in input latency from framerate fluctuations compared to double-buffered VSync. It may or may not reduce input latency. Your mileage may vary.
For Nvidia and AMD cards, Triple-Buffering for OpenGL games can be forced using the GPU’s respective control panel.
For Direct3D games, forcing triple-buffering generally requires an external application. The only application I know that can do this is RadeonPro, which is pretty easy to use and works with both D3D9 and D3D11 games, 32-bit and 64-bit. Despite the name, RadeonPro will work with Nvidia and Intel GPUs in addition to AMD GPUs; my laptop has both an Nvidia and Intel GPU.
RadeonPro has the side-effect of causing some games to hang upon exit or stay running in the background, requiring them to be killed with the Task Manager. Also it doesn’t work for all games; I hear Watch Dogs doesn’t work well with it.
There's also D3DOverrider, which used to be awesome but is no longer supported and generally a hassle to set up on modern computers.
Windowed gaming/borderless fullscreen
One of the benefits of borderless windowed fullscreen, in addition to instantaneous alt-tabbing, is that it enforces Triple Buffering (proper) on Windows Vista/7/8 at least. However, it also causes reduced performance for some games, and is incompatible with some configurations like SLI. Also, it still experiences the same jitter/uneven frame timing issues as No-VSync, unless you have a good external frame limiter e.g. Dxtory, RivaTuner, etc.
Something I’d like to know but have been unable to conclusively test is the input latency difference between windowed and fullscreen for various VSync configurations. The only conclusion I have is that fullscreen No-VSync has less input lag than windowed No-VSync. Can someone more experienced with borderless fullscreen chime in on this?
Adaptive VSync
This will enable VSync when the FPS is at 60, and will disable it during FPS dips, as an alternative to experiencing a larger FPS drop with VSync still enabled.
Implementation of adaptive VSync varies. RadeonPro, MSI Afterburner, etc. implement it, and I think Nvidia implements it for OpenGL games? Not sure about AMD.
Reducing maximum number of pre-rendered frames
This is something that can be adjusted in the Nvidia Control Panel, and maybe AMD's equivalent. Fewer pre-rendered frames will result in less input-lag, but may cause more severe framerate drops if you can't keep 60FPS. If you can maintain 60FPS and you want less input lag, you should make the number of pre-rendered frames as low as possible.
Nvidia FAST Sync
TODO
Nvidia decided to finally create an implementation of "proper" Triple Buffering in exclusive fullscreen mode, and they called it FAST Sync. Coming out soon. Guaranteed low latency, no screentearing, but if it behaves anything like borderless windowed fullscreen then there will be imperfect framepacing and judder even with a framelimiter.
More info in the FAST Sync thread.
Limiting the framerate to equal the refresh rate (e.g. 60FPS @ 60Hz)
TODO
basically it's magic. Enable VSync, use RivaTuner to limit the refresh rate to equal your refresh rate.
Very low latency.
No tearing.
Perfect frametiming.
Possible framerate hitches if the game engine doesn't play nice with the framelimiter.
Limiting the framerate to the refresh rate minus 1 (e.g. 59FPS @ 60Hz)
TODO. Similar to the above.
Guaranteed low latency.
No tearing.
Judder due to framerate not equaling the refresh rate.
Unsuitable for certain games (fighting games, shmups, etc.)
Nvidia GSync and AMD FreeSync
TODO
I don't have GSync, but I hear it's awesome. Set a framelimit to a couple frames below your framerate (e.g. 140FPS @ 144Hz) and never worry about latency again. FreeSync should be similar.
Other resources
TODO
Here's a decent article from AnandTech where they test various input lag situations with a high-speed camera (ty riflen).
What’s this thread about?
I’d like to hear about your experiences with input lag and VSync, what you know and don’t know, and ultimately make conclusions about various setups and their input latencies.
Traditionally, there has always been a tradeoff between image fluidity and input latency. You either have zero input latency with image tearing & frame judder, or a perfectly fluid 60FPS image with noticeable input latency. I’m a guy that prioritizes low input latency in games, but I don’t want to experience screen tearing if I don’t have to.
There are a lot of tricks floating around the internet to try to get both a perfect 60FPS with low input latency, from playing the game windowed to limiting the framerate. I like to think that I can perceive input lag, but sometimes it’s hard to tell if these tricks work or do anything – hence, “Magic or Placebo.”
Brief summary of VSync and input latency:
Thanks Arulan, Durante, and HTupolev for the additional input and clarifications.
A lot of input latency is based on hardware factors outside of your control, such as the quality of your keyboard and your monitor. Everything else is affected by software, and one major source of input latency is VSync.
Here's a brief overview of the various VSync options, assuming an ordinary 60Hz monitor.
- No VSync: Rendered image is sent directly to the monitor at whatever framerate the GPU can muster. Typically has the least amount of input latency and is suitable for competitive gaming. The higher the framerate the lower the latency. Usually results in screen tearing and minor juddering due to the framerate not syncing with the 60Hz refresh rate.
- VSync: More specifically known as double-buffered VSync. Rendered image goes through a buffer before going to the monitor. When implemented properly, eliminates screen tearing and syncs the framerate with the monitor refresh rate for perfect 60Hz smoothness. Usually causes input lag (1-3 frames, depending on the game). May not respond well to framerate dips (e.g. jittering/uneven frame timing, drop to 30FPS instead of to 40-55FPS).
- Triple-buffered VSync (common): Implemented by games and external programs. Similar to VSync except with another buffer (more VRAM). Can result in a higher average framerate compared to double-buffered VSync. Input latency may increase or decrease compared to double-buffered VSync, depending on your game's performance. Many games do not have this option. Read the rest of the first page for more info.
- Triple-buffered VSync (proper): Implemented by Windows' Desktop Window Manager (e.g. Vista/7/8), and is used when playing games in a window (borderless fullscreen). Low latency, but not as low as No VSync. Usually fixes tearing but doesn't fix jitter/uneven frame timing.
Here's a post by HTupolev which also elaborates on the above: http://www.neogaf.com/forum/showthread.php?p=150371456#post150371456
The following are some tricks I've found around the internet which attempt to combine both low input lag and a VSynced image, or at least a close-enough compromise.
Forcing triple-buffering (common) using external programs
Triple-buffering can reduce variation in input latency from framerate fluctuations compared to double-buffered VSync. It may or may not reduce input latency. Your mileage may vary.
For Nvidia and AMD cards, Triple-Buffering for OpenGL games can be forced using the GPU’s respective control panel.
For Direct3D games, forcing triple-buffering generally requires an external application. The only application I know that can do this is RadeonPro, which is pretty easy to use and works with both D3D9 and D3D11 games, 32-bit and 64-bit. Despite the name, RadeonPro will work with Nvidia and Intel GPUs in addition to AMD GPUs; my laptop has both an Nvidia and Intel GPU.
RadeonPro has the side-effect of causing some games to hang upon exit or stay running in the background, requiring them to be killed with the Task Manager. Also it doesn’t work for all games; I hear Watch Dogs doesn’t work well with it.
There's also D3DOverrider, which used to be awesome but is no longer supported and generally a hassle to set up on modern computers.
Windowed gaming/borderless fullscreen
One of the benefits of borderless windowed fullscreen, in addition to instantaneous alt-tabbing, is that it enforces Triple Buffering (proper) on Windows Vista/7/8 at least. However, it also causes reduced performance for some games, and is incompatible with some configurations like SLI. Also, it still experiences the same jitter/uneven frame timing issues as No-VSync, unless you have a good external frame limiter e.g. Dxtory, RivaTuner, etc.
Something I’d like to know but have been unable to conclusively test is the input latency difference between windowed and fullscreen for various VSync configurations. The only conclusion I have is that fullscreen No-VSync has less input lag than windowed No-VSync. Can someone more experienced with borderless fullscreen chime in on this?
Adaptive VSync
This will enable VSync when the FPS is at 60, and will disable it during FPS dips, as an alternative to experiencing a larger FPS drop with VSync still enabled.
Implementation of adaptive VSync varies. RadeonPro, MSI Afterburner, etc. implement it, and I think Nvidia implements it for OpenGL games? Not sure about AMD.
Reducing maximum number of pre-rendered frames
This is something that can be adjusted in the Nvidia Control Panel, and maybe AMD's equivalent. Fewer pre-rendered frames will result in less input-lag, but may cause more severe framerate drops if you can't keep 60FPS. If you can maintain 60FPS and you want less input lag, you should make the number of pre-rendered frames as low as possible.
Nvidia FAST Sync
TODO
Nvidia decided to finally create an implementation of "proper" Triple Buffering in exclusive fullscreen mode, and they called it FAST Sync. Coming out soon. Guaranteed low latency, no screentearing, but if it behaves anything like borderless windowed fullscreen then there will be imperfect framepacing and judder even with a framelimiter.
More info in the FAST Sync thread.
Limiting the framerate to equal the refresh rate (e.g. 60FPS @ 60Hz)
TODO
basically it's magic. Enable VSync, use RivaTuner to limit the refresh rate to equal your refresh rate.
Very low latency.
No tearing.
Perfect frametiming.
Possible framerate hitches if the game engine doesn't play nice with the framelimiter.
Limiting the framerate to the refresh rate minus 1 (e.g. 59FPS @ 60Hz)
TODO. Similar to the above.
Guaranteed low latency.
No tearing.
Judder due to framerate not equaling the refresh rate.
Unsuitable for certain games (fighting games, shmups, etc.)
Nvidia GSync and AMD FreeSync
TODO
I don't have GSync, but I hear it's awesome. Set a framelimit to a couple frames below your framerate (e.g. 140FPS @ 144Hz) and never worry about latency again. FreeSync should be similar.
Other resources
TODO
Here's a decent article from AnandTech where they test various input lag situations with a high-speed camera (ty riflen).