Originally posted by: orborborb
Thanks for the explanation. So I assume the limiting framerate trick allows vsync to work without adding much lag because it prevents the buffers from filling up,
Not quite, there's less input lag simply because capping FPS normalizes your frame delay to closer match your actual refresh rate, thereby normalizing any input delay. The problem with input lag when you enable Vsync is due to the delay from faster frame rates being held to sync to a slower refresh rate. Capping FPS to match refresh more closely simulates uncapped FPS and no Vsync where frames are allowed to display as fast as they are rendered. When you cap FPS you'll always get ~17ms of delay for both frames and input polling (not lag).
For example, if you have 60FPS refresh, your ideal frame delay is 16.67ms (1000/60). If your GPU is rendering at say 90FPS, you may be getting 1 frame at 16.67ms, then 2 frames within the next 16.67ms (when the next frame is displayed), say one at 2ms and another at 10ms. If the first of those two frames is being held in the buffer as the next rendered frame, you may be getting up to 14ms of delay before that frame is displayed. That entire 14ms is going to be input lag. If your GPU is capped to 59-60FPS it should be rendering just ahead of your monitor's refresh with perhaps only a 1-2ms delay between render and display, meaning very little input lag. If Triple Buffering is enabled and your GPU driver can decide which frame to render, the first or second, you may actually see less input lag than without Triple Buffering. If the driver always takes frames in-order, then you may see more input lag.
but there is no way in either ATI or Nvidia's drivers to solve the issue for games which don't have a built in way to cap their framerates?
Actually I do believe Nvidia's driver does sync/cap frame rates to 60 vs. just taking frames in-order to a 60Hz cap. Enabling Vsync in Nvidia's driver simply results in much less input lag than enabling Vsync in-game for many titles. Some of the most noticeable I've seen first-hand or read about would be Fallout 3 and Dead Space, but there's a pretty noticeable difference in any game I use Vsync. In the example of Dead Space, keep in mind this game gets in the high 100/200s for FPS so you can imagine the kind of input lag going by the above example.
In general, I always force On Vsync in the NV CP game profile if I want to use Vsync. If the game is generally over 60FPS and I want Vsync, I don't use Triple Buffering as that tends to reduce input lag further, and also uses less VRAM. If the game dips between 30 and 60FPS often, then I'll force Triple Buffering on as frames don't drop from 60 to 30 constantly.