protonscr

Optimizing for latency with core dxvk

dxvkclosed question
doitsujin/dxvk#5226 · opened 2025-09-25 by matru · updated 2026-03-29 · 11 comments · github
Mmatru 2025-09-25 github

I am asking about Windows, however let me know if the same applies to a broader extent.

I do not care for the highest FPS, but rather lowest latency. Now the higher FPS, the lower latency also applies, but still if I can optimize towards benefiting more towards latency, rather a higher FPS outcome, I would opt for the former.

If the in-game frame limiter is unavailable, which in certain situations can be superior, can I just use the Nvidia frame limiter to achieve proper frame limiting which at max will add 1 additional frame of latency? Does this statement also apply for dxvk/Vulkan games?

Should I be using borderless or full screen mode, or that depends if the this option in NVCP is applied.

Some of the options I've checked:

dxgi.syncInterval = 0
d3d9.presentInterval = 0
dxgi.maxFrameLatency = 1
d3d9.maxFrameLatency = 1 
dxgi.maxFrameRate = -1
d3d9.maxFrameRate = -1
dxvk.latencySleep = True

Of course if I don't use the dxvk frame limiter, then latencySleep won't even work as per the documentation, but using the Nvidia Frame limiter might still be better then that option anways.

maxFrameLatency won't matter (similarly to how Nvidia Reflex won't do much if you are never utilizing much GPU, and why unlimited frame rates in that case won't be lagging at all behind Reflex).

Lastly, there are the graphic optimization part that can be configured within DXVK, like various types of texture filtering, negative LOD bias, backbuffers. Although not sure if I can let the game itself manage these, I am interested if any are known to be beneficial to reducing the latency? E.g. Texture Filtering - Quality high performance is beneficial in the NVCP, or the Thread optimizations on OFF is recommended on CPU heavy games, since it offloads GPU to the CPU if the option is ON.

Qqinlili23333 2025-09-25 github

For latency on Windows, actually the best solution based on my test is: use gsync/freesync monitor, and limit framerate to 1fps lower than maximum refreshrate.
e.g. my monitor is 60hz, freesync range 48-60hz, so I enable gsync compatible and cap framerate to 59.0fps, so I can get lowest latency without redundent power consumption (approx. 17ms, only one frame late)

Ensure your game is composed in Independent Flip, no GDI Copy. (This is a bit hard to achieve with DXVK, see https://www.pcgamingwiki.com/wiki/Nvidia_Profile_Inspector#Layer_Vulkan.2FOpenGL_on_DXGI_swapchain , avoid enable for global as this may come with unexpected behavior)

To decrease latency further, cap GPU at maximum freq (at cost of power) and keep GPU utilization rate as low as possible.

And always ensure your display is directly connected to rendering GPU, no Optimus, no DisplayLink or InstantView.

Set response time on your display to fastest or enable overshoot, at cost of graphics quality (color become inaccurate).

PresentMon helps you check your latency on Windows, but cannot check your monitor latency.

Mmatru 2025-09-25 github

The 1 fps lower than max refresh rate, is actually outdated, nvidia themselves use this calculation. There are benchmarks where the difference between the 1-3 FPS lower than max refresh rate, and the calculation above is drastic. Of on lower FPS even 1 fps might achieve most of the benefits, but 2-3 would be better.

Ensure your game is composed in Independent Flip, no GDI

This is basically the option I've shown in the image above. But why do they go further with NVPI and apply these steps afterwards (steps 5-8):

In the section called 2 - Sync and Refresh, locate the Vulkan/OpenGL Present Method - Flags' setting.
Change it to 0x000802A5 by double-clicking on the value field and copy/pasting the value.
This value will enable the DXGI swapchain layer in most scenarios, including DXVK.

Isn't the NVCP selection from the image is enough (or steps 1-4)?

EDIT: I guess it doesn't work within dxvk, or they just aren't sure if it would work in all scenarios only through NVCP. I am not sure if there is anything in NVCPI that exposes this 0x000802A5 setting.

Qqinlili23333 2025-09-25 github

The 1 fps lower than max refresh rate, is actually outdated, nvidia themselves use this calculation. There are benchmarks where the difference between the 1-3 FPS lower than max refresh rate, and the calculation above is drastic. Of on lower FPS even 1 fps might achieve most of the benefits, but 2-3 would be better.

Thanks for the information. My freesync monitors are all 60hz so 1 fps lower applies for me.

Isn't the NVCP selection from the image is enough (or steps 1-4)?

No, Nvidia has a built-in blacklist for DXVK that once it detects DXVK, it ignores your config in NVCP. This hidden option is to override this blacklist behavior to tell driver ignore DXVK and just treat like a native Vulkan game. Nvidia has this hidden option because they use DXVK in some RTX game mod like Portal RTX, so they whitelisted some games.

KK0bin maintainer 2025-09-25 github

Should I be using borderless or full screen mode

Borderless fullscreen and fullscreen mode makes no difference on Linux.

Mmatru 2025-09-25 github

@K0bin I am primarily asking about Windows

WWinterSnowfall 2025-09-25 github

@K0bin I am primarily asking about Windows

Here is probably not the best place for that, to be honest, however as far as d3d9 goes at least, there have been numerous reports from users on Windows stating that exclusive full screen (which is not the default any more in dxvk, for various reasons) is needed for good performance. It's hardly universal, but Windows does appear to favor it. Note that this is all hearsay as most people in these parts are (only) on Linux.

KK0bin maintainer 2025-09-25 github

I have no idea how the Vulkan exclusive fullscreen extension interacts with layering Vulkan presentation on DXGI.

Like WinterSnowfall said, DXVK is a Linux project, so you're not gonna find the best Windows advice here.

Mmatru 2025-09-25 github

@K0bin @WinterSnowfall

Well, that's the thing, should it be https://www.pcgamingwiki.com/wiki/Nvidia_Profile_Inspector#Layer_Vulkan.2FOpenGL_on_DXGI_swapchain or dxvk.allowFse = True as of 2025.

I agree that most of the DXVK community is centered around Linux, and it makes sense in number terms, it's a very niche market since in my case for example, I am looking at an older game that not many players are playing and that benefits from it, not the whole library of games on Linux. However if you search Windows in the issues, you'll find tons of them here, and it's probably the most concentrated place for information on DXVK for Windows on the internet, hence it was my best bet opening the discussion here.

Mmatru 2025-09-25 github

Mistakenly closed the issue. :(

If someone could re-open it, it would be great. Just in case I am tagging @doitsujin

WWinterSnowfall 2025-09-25 github

Well, that's the thing, should it be https://www.pcgamingwiki.com/wiki/Nvidia_Profile_Inspector#Layer_Vulkan.2FOpenGL_on_DXGI_swapchain or dxvk.allowFse = True as of 2025.

Feel free to experiment and find out what works best for you, there's no official recommendation to be honest.

GGrabbenD 2026-03-29 github

Patchset for reducing latency and improving performance can be found in these 2 forks. I wish they could get merged upstream (here) and gated behind config settings to avoid fragmentation

Nothing extracted yet.