Would it be worthwhile to have a renderer option for a lower latency mode? With DXGI 1.3 the swapchain can be created with a waitable object, which lets you block until the GPU is actually finished and proceed to the next frame with less latency by forcing the queue to empty.
The technique is described here:
It’s a throughput vs. latency tradeoff, but I think a lot of games could benefit from lower latency in this way.
I believe RetroArch has a similar concept implemented in OpenGL, there called “Hard GPU Sync”, where it uses a render fence to starve the queue and keep it fresh.
As an addition to the SDL API, it probably only needs two changes, which could be used by any renderer with a suitable way to implement the technique:
- bitflag for the renderer creation that we want to use this low latency operation
- a function to call when when we want to perform the wait (i.e. immediately before beginning to issue render commands)
Does anyone have any thoughts on this? Has anyone tried these methods with SDL2 already?