Input Lag Checklist
Tips for Improving Input Lag
- Input lag is the delay between pressing a button and seeing the game react. The potential causes for "input lag" are described below (steps which have negligible contributions to the input lag have been omitted). Each step in the process increases "input lag", however the net result may be unnoticeable if the overall "input lag" is low enough.
- Turn on the Game Mode for your tv as this bypasses any post-processing the tv does to make the picture look better. This is only good for movies and TV, not games!
- Least input lag: Fullscreen < Windowed/Borderless < Vsync :Most input lag
- Turn VSync off. VSync can add lag. Check your GPU Driver settings as it may be on there too! VSync can also hinder your game, so try both ways.
- Emulators may implement VSync differently. So try different emulators to see if one causes more lag than another.
- Turn off any options in your emulator that deal with audio limiting or synchronizing sound.
- Double buffering adds 1 frame of lag, Triple Buffering adds 2 frames. Some have reported it helps with lag. Try both.
- Using keymappers like xpadder or joytokey can add a little lag because the controls have to be translated and resent out.
- Distance of wireless controllers or obstruction of signal can cause lag and/or dropped button presses. If wireless, move the receiver closer or away from other devices so signal does not degregate.
- Check your TV/Monitor's refresh rate and make sure the emulator, windows, and GPU drivers all match it. If your TV is 60hz, don't set your emulator to 59hz!
- Nvidia G-Sync can reduce lag
- Another good source of info here.
- Windows 8 Mouse Input Lag fix
This is the lag caused by the digital televisions and monitors. Image processing (such as upscaling, 100 Hz, motion smoothing, edge smoothing) takes time and therefore adds some degree of input lag. It is generally considered that input lag of a television below 30ms is not noticeable. Discussions on gaming forums tend to agree with this value. Once the frame has been processed, the final step is the pixel response time for the pixel to display the correct colour for the new frame.
CRT TVs and monitors have no display lag.
If you're using Windows Vista/7, having Aero enabled will add a noticable amount of input lag because it forces vertical synchronization at the OS-level.
GPU driver latency
There is video latency caused by the GL drivers in Windows/Linux. It is a total black box and they do all sorts of crazy buffering schemes under the hood for all sorts of purposes - better scores with benchmarking tests, better "game" results - but it is actually counterproductive when your aim is low-latency audio/video synchronization for emulators - you don't want all this stuff going on in the background. This applies to both GLX X11 drivers and Windows GL/D3D drivers - both are full of bad hacks and codepaths that cater to benchmarking apps and games.
Hard syncing option in some emulators can reduce or remove this.
This can be avoided by using KMS and DRM/EGL, specifically on Linux; using these, the user is in control of front and back buffers and don't have to rely on APIs, so that they can find where and when a frame was dropped and how to act accordingly with that in mind. It is advisable to get the latest driver to improve performance, as notable graphics chip manufacturers (e.g. AMD, Nvidia) do not find KMS a priority. Intel graphics chips, however, should be fine regardless, but it is still advisable to update drivers.
For wired controllers, this lag is negligible. For wireless controllers, opinions vary as to the effect of this lag. Some people claim to notice extra lag when using a wireless controller, while other people claim that the 4-8 milliseconds of lag is negligible.
Typical overall response times
Testing has found that overall "input lag" (from controller input to display response) times of approximately 200ms are distracting to the user. It also appears that (excluding the monitor/television display lag) 133ms is an average response time and the most sensitive games achieve response times of 67ms (again, excluding display lag).
Ways to reduce input lag
- Wired controller
- Exclusive Fullscreen modes - By having much more direct control over output, users will get visual feedback faster than before. In fighting and racing games, the difference is immediately noticeable.
- CRT TV or Monitor
- Linux OS in KMS mode
- Possibly Hyperspin itself may cause lag if the emu is sharing the same thread. See here for the report. This is most likely limited to older CPUs and/or Operating Systems.
To disable Windows Aero under Windows Vista/7, select the Basic or Classic theme under Control Center > Personalization, or disable desktop composition under .exe properties > Compatibility. Desktop composition will also be disabled by playing under non-windowed fullscreen. In Windows 8, desktop composition cannot be disabled manually.
Disable Desktop Composition in Windows 8 and 8.1
You get input lag because DWM has its own vsync and I like it a lot since it doesn't make the mouse lag so much compared to fullscreen + vsync. This does not apply to: Fullscreen users (not windowed borderless) Other operating systems (Desktop composition is a lot easier to disable in other operating systems)
Use Process Explorer and run it as Administrator
Do the following steps in order:
- KILL explorer.exe
- SUSPEND winlogon.exe [This is so you can do the next step without it re-opening automatically]
- KILL dwm.exe [This is what you don't want to be running, it's the desktop windows manager and has desktop composition. this gets in the way]
- RUN explorer.exe [File > Run... in Process Explorer, allows opengl to be used and basic OS navigations excluding metro start menu]
- RESUME winlogon.exe when you want dwm.exe back (or restart) [You may have to kill explorer again and suspend winlogon.exe again to get it to be resumeable]
The benefit to doing this is a dramatic reduction in cursor latency. The downfall is the start menu goes to black and can't be used at all.
This has actually become very safe and easier to do. Now I really do recommend it to anyone on Windows 8 / 8.1
Another method via batch scripts and sys tools can be found here: https://www.youtube.com/watch?v=HUkGDcNgm2Y