If the goal is to reduce input latency, then there is a mechanism in DXGI 1.3 (from Windows 8.1 and up) for this. It tells you when GPU is ready accept new frame for display (Present won't block). It gives you event HANDLE that you can call WaitForSingleObject function on.
More info:
https://docs.microsoft.com/en-us/...latency-with-dxgi-1-3-swap-chains
https://docs.microsoft.com/en-us/...in2-getframelatencywaitableobject
https://software.intel.com/en-us/...irect3d-12-flip-model-swap-chains
If I remember correctly, it is also mentioned in this D3D12 video:
https://www.youtube.com/watch?v=E3wTajGZOsA
My understanding on this API is that you should be waiting on this handle at beginning of frame, and only then process all input events + rendering, so you can reduce input latency. Instead of classical "process input, render frame, wait vblank + present (blocking)" which gives you perceived input latency depending on how long "wait vblank" step is happening, you do "wait on frame waitable object, process input, render frame, present (won't block)" which will give less latency between "input" and "present" steps.