Skip to content

Low-latency frame pacing for dxvk 2.5.3

Latest
Compare
Choose a tag to compare

This low-latency mode aims to reduce latency with minimal impact in fps. Effective when operating in the GPU-limit. Efficient to be used in the CPU-limit as well.

Greatly reduces input lag variations when switching between CPU- and GPU-limit, and compared to the max-frame-latency approach, it has a much more stable input lag when GPU running times change dramatically, which can happen for example when rotating within a scene.

The current implementation rather generates fluctuations alternating frame-by-frame depending on the game's and dxvk's CPU-time variations. This might be visible as a loss in smoothness, which is an area this implementation can be further improved.

An interesting observation while playtesting was that not only the input lag was affected, but the video generated did progress more cleanly in time as well with regards to the wow and flutter effect.

This version renders with up to 67% latency reduction in the GPU limit compared to max-frame-latency-3 and with up to 35% latency reduction compared to max-frame-latency-1.

Optimized for VRR and VK_PRESENT_MODE_IMMEDIATE_KHR, proper optimization for v-sync may follow later. It also comes with its own fps-limiter which is typically used to prevent the game's fps exceeding the monitor's refresh rate.

Usage

Add renderlatency to the DXVK_HUD variable to watch the render latency in real-time.

DXVK_FRAME_PACE has the options max-frame-latency, low-latency and min-latency. This release defaults to low-latency for demonstration purposes.

DXVK_LOW_LATENCY_OFFSET allows for fine-tuning the low-latency mode. Values are in microseconds. Positive values might improve responsiveness even further, although only very slightly, this may be relevant for edge cases. Negative values might improve fps. Defaults to 0.

These environment variables are also represented in the dxvk.conf: dxvk.framePace and dxvk.lowLatencyOffset.

Benchmark

Below are latency measurements of what is to be expected when running games in the GPU-limit:

dirt_rally_2 0_latencies

Pacing Fps Avg latency
max-frame-latency-3 151.78 26.32 ms
max-frame-latency-1 152.26 13.11 ms
low-latency 146.12 8.46 ms
min-latency 119.79 8.35 ms
-------- ------- ------
offset -1000 150.50 9.29 ms
offset +500 138.55 8.33 ms
offset +3000 103.05 8.17 ms