3 ms·
It amounts to waiting until just before vsync to start rendering a frame CPU side, in the hope that the frame is fresher than what you would get from a scatterg
by kiririn 3y ago
It amounts to waiting until just before vsync to start rendering a frame CPU side, in the hope that the frame is fresher than what you would get from a scattergun ‘mailbox’ approach aka vsync disabled
It should theoretically be possible to get the tear-free smoothness of vsync combined with even lower latency than vsync disabled, but in reality is it is difficult to predict how long a frame will take to render
It’s not clear how they solved this, or why it required hooking into games more than graphics drivers already do
- dist-epoch 3y agoHow is this different to FreeSync/GSync or running high Hz?
- kosievdmerwe 3y agoPresumably it doesn't require an expensive monitor. If you don't underestimate the render time (and miss the refresh) then the frame will be fresher.
- ack_complete 3y agoIn the event that the CPU is faster than the GPU, the CPU run ahead of the GPU and queue multiple frames to render, regardless of adaptive sync or not. This adds lag. Adaptive sync or high Hz only gets rid of up to one frame of delay from vsync timing, not delay from excess frame queuing. What Anti-Lag does is throttle the CPU work to reduce this delay to as low as sub-frame, so it doesn't process input and begin frame processing until closer to display time -- so the game starts frame updates with fresher input and gets those frames out with less delay. Graphics APIs often only allow setting the frame queue length in an integer number of frames and it can be difficult to reliably tell when frames present and control frame queuing, especially with a compositor involved. This has the graphics driver involved, so it knows the absolute truth of when frames hit the output.
- dist-epoch 3y ago> the CPU run ahead of the GPU and queue multiple frames to render Wouldn't the game limit that to 2-3 frames at most? > Graphics APIs often only allow setting the frame queue length in an integer number of frames and it can be difficult to reliably tell when frames present and control frame queuing, especially with a compositor involved. I'm pretty sure you can control the swap chain using DXGI: > Use DXGI 1.3 to reduce the effective frame latency by waiting for the swap chain to signal the appropriate time to begin rendering a new frame. https://learn.microsoft.com/en-us/windows/uwp/gaming/reduce-latency-with-dxgi-1-3-swap-chains https://learn.microsoft.com/en-us/windows/uwp/gaming/reduce-...