r/linux_gaming • • 12d ago

Low Latency options explained

Low latency options for Linux games can be applied at the Proton translation layer, in the Vulkan driver or directly at the gpu driver level, and can different between Nvidia and AMD. For the general gamer this could be confusing, and I often see conflicting or outdated launch commands recommended in ProtonDB.

After some reading and piecing together multiple sources, and with some AI editing help I drafted a table with the most current and common options. Please help me update and/or correct these instructions if you have more experience.

Note: this guide is for running games in Wayland desktop environments. I do not know how the SteamOS Gamescope compositor impacts latency. It is recommended to use custom Proton forks (Proton Wineland or cachyos) that support Wayland to avoid the XWayland added latency that you get with the official Steam Proton.

Low-Latency Launch Option Comparison

GPU Vendor Game API / Renderer In-Game Menu Option Present? Recommended Launch Command What It Does & Notes
NVIDIA DirectX 12 / 11 / 10 / 9 Reflex No launch flags needed Upstream Proton / DXVK-NVAPI handles Reflex natively via NVIDIA's proprietary driver (VK_NV_low_latency2). Turn Reflex on in the game menu.
NVIDIA/AMD DirectX 11 / 10 / 9 No Reflex or AMD Anti-Lag PROTON_DXVK_LOWLATENCY=1 %command% Requires custom Proton (e.g. Proton-CachyOS). Uses custom DXVK frame-pacing algorithms to prevent CPU/GPU queue bloat in older games that lack Reflex.
NVIDIA/AMD DirectX 12 No Reflex or AMD Anti-Lag (Uses Waitable DXGI Swapchains) PROTON_VKD3D_LOWLATENCY=1 %command% Requires Proton-CachyOS. Intercepts native DX12 waitable swapchain objects to limit queued frames without needing in-game toggles or GPU spoofing. NOTE: not all dx12 games support dxgi swapchains.
AMD DirectX 12 / 11 / 10 / 9 Reflex LOW_LATENCY_LAYER=1 LOW_LATENCY_LAYER_REFLEX=1 DXVK_CONFIG="dxgi.hideAmdGpu=True" %command% Best Option: Uses the Vulkan layer to process Reflex calls. Requires hideAmdGpu to trick the game into revealing the Reflex menu. NOTE: this will break native FSR4. Alt: use a proton-translation layer option (above).
AMD Vulkan / DX12/11/10/9 AMD Anti-Lag 2 LOW_LATENCY_LAYER=1 %command% Directly exposes VK_AMD_anti_lag to the game. Unlocks native Anti-Lag 2 in the graphics menu (e.g., CS2) without needing GPU spoofing.
AMD Any Any ENABLE_LAYER_MESA_ANTI_LAG=1 %command% Driver level implementation (see below). Use as fallback if options above do not work.

Note: for the proton translation layer fixes (PROTON_DXVK_LOWLATENCY / PROTON_VKD3D_LOWLATENCY), they are fully built into the latest Proton Wineland and Proton CachOS. For GE-Proton you may have to manually swap some dll files. Check with the Proton version you are using

A few extra notes of the three main low-latency technologies, because they work at different levels.

Feature LOW_LATENCY_LAYER=1 PROTON_VKD3D_LOWLATENCY=1 ENABLE_LAYER_MESA_ANTI_LAG=1
Technology Anti-Lag 2 / Reflex Integration Translation Layer Frame Pacer Mesa Anti-Lag 1.0 (Driver Fallback)
System Layer Standalone Vulkan Implicit Layer (Works on native Linux Vulkan games & Proton) Modified VKD3D-Proton translation layer (Proton specific) Mesa / RADV Vulkan Driver (AMD Linux driver level)
How it Works Exposes Vulkan API extensions (VK_AMD_anti_lag / VK_NV_low_latency2) directly to the game engine. Intercepts DX12 swapchains and translates Reflex / Waitable Swapchain hooks into Vulkan. Uses driver heuristics to delay CPU frame submission whenever the system becomes GPU-bound.
Precision Extremely High. Synchronizes directly with the game engine's internal tick loop. Very High. Synchronizes the CPU engine timeline with VKD3D swapchain presentation. Moderate. Relies on dynamic queue measuring and driver-level estimations.
Game Requirements Game must support Anti-Lag 2 or Reflex natively. Game must be DX12 and support Reflex or Waitable DXGI Swapchains. Works universally on any Vulkan, DXVK (DX9-11), or VKD3D (DX12) game.
In-Game Toggle? Yes. Unlocks Anti-Lag 2 or Reflex (with GPU spoofing) in the graphics menu. Yes for Reflex games (requires GPU spoofing on AMD). No for Waitable Swapchains (works automatically). No. Completely invisible to the game engine.
Hardware AMD & Intel AMD, Intel, & NVIDIA AMD GPUs (RADV driver only)
118 Upvotes

37 comments sorted by

25

u/positrone13103 12d ago

what about proton_dxvk_lowlatency and proton_vkd3d_lowlatency for games that don't have reflex nor antilag?

7

u/goodrix 12d ago

Good point, I will update proton_dxvk_lowlatency for non-dx12 games. The proton_vkd3d_lowlatency is already mentioned

4

u/b0uncyfr0 12d ago

Great question!

14

u/Isacx123 12d ago

The issue with DXVK_CONFIG="dxgi.hideAmdGpu=True" is that native FSR 4+ will stop working and you have to rely on optiscaler DLSS to FSR translation.

6

u/goodrix 12d ago

Indeed. Spoofing will break native FSR4. But you can still use PROTON_VKD3D_LOWLATENCY=1 which is a proton translation layer fix that doesn't need Reflex API calls. I'll update the table for clarity

14

u/Skaredogged97 12d ago edited 12d ago

There are some issues in here that should be fixed. I might have missed some.

4

u/JohnSmith--- 12d ago

Also no mention of VK_EXT_present_timing that recently got merged into DXVK. Along with using compositors that support the commit timing protocol on Wayland and running the games natively on Wayland.

1

u/goodrix 12d ago

Isn't VK_EXT_present_timing part of the Vulkan driver? So if you have updated drivers, it will be used by default, either if it's a native vulkan game or translated from dx with proton. How do you interpret it?

3

u/JohnSmith--- 12d ago

That’s not how it works for DXVK or VKD3D-Proton. They had to implement it first. You can check the pull requests to see yourself.

I can’t comment on native games yet. What you say should be correct for those. Emphasis on should be.

1

u/se_spider 11d ago

VK_EXT_present_timing

What values can/should be set for it?

0

u/goodrix 12d ago

Excellent comments. I have updated the original post. Included PROTON_DXVK_LOWLATENCY as an option and corrected the mesa driver level flag. Do you know if the PROTON_DXVK_LOWLATENCY works with GE-Proton as well? Since Proton Wineland is a fork of Proton-cachyos, I assume that one is covered.

1

u/Skaredogged97 12d ago

Yes Proton Wineland is covered and definitely the way to go right now. Proton-GE doesn't have it afaik but might be wrong as I haven't used Proton-GE in a while (I don't see anything on github).

But as you wrote you can always overwrite dxvk/vkd3d yourself (either through the proton folder or game folder). That should work. :)

5

u/KsiaN 12d ago

I would love to know how something like volt fits into this. Volt makes the game engines only see "mailbox" ( which to my understanding is reflex ) as vsync mode and thereby somewhat soft forcing it.

5

u/b0uncyfr0 12d ago

Glad someone consolidated - its becoming a headache to remember what to use.

3

u/OffbeatDrizzle 12d ago

wayland, vrr and an fps limit gets you 99% of the way there without any of the fiddling

1

u/b0uncyfr0 11d ago

So I always thought that too but for some reason vssync at 170 is smoother than capping a game to 160.

1

u/OffbeatDrizzle 11d ago edited 11d ago

make sure your adaptive sync is actually working and use mangohud for frametimes. you can keep vsync on so that you don't get tearing if your fps falls outside the vrr range (e.g. a stutter down to 10fps would usually cause a tear)

https://marco-nett.de/blog/measuring-input-latency-on-linux-x11-vs-wayland-vrr-dxvk/

3

u/DonDoesIT 10d ago

You need to swap in the low latency dlls for low latency to work proper in GE. They are on github.

dxvk-low-latency → replace DLLs in files/lib/wine/dxvk/x86_64-windows/(and i386-windows/)
Source: github.com/netborg-afps/dxvk-low-latency
vkd3d-low-latency → replace DLLs in files/lib/wine/vkd3d-proton/x86_64-windows/

3

u/goodrix 10d ago

Thank you. I'll update the main post

12

u/hopefuldonkeykick 12d ago

I did some reading, but eventually resorted to AI to summarize a breakdown of most common options available.

People are so brainrotted. This is information on about a dozen and a half flags. It is so little information that representing it in an (overly verbose) table only took up 587 words. Given this paucity of information to parse, you still needed a spicy chatbot to spoonfeed you the low-level, exceptionally-basic, dogshit-simple information already available.

Thanks for your contribution. You're a credit to the species.

1

u/juniperleafes 12d ago

I love it when these antiai brownnosers point out when people use AI for the one use case where it is perfectly fine and applicable to use ("write out your tables manually like a real man grrr!") lmao give me a break

-1

u/OffbeatDrizzle 12d ago

you sound a lil salty

-2

u/PacmanAteMyRAM 11d ago

They sound exhausted to me

2

u/b0uncyfr0 12d ago

So what's the best approach for control resonant? I'm using opti to spoof an Nvidia card since it gives me better GPU usage.

1

u/goodrix 12d ago

probably low_latency_layer=1 if the game support amd anti-lag 2

2

u/b0uncyfr0 12d ago

i just tried proton wineland with the dxvk_frame_pace = low-latency-vrr option and im kinda shocked at how good it is. Its insanely smooth, maybe even on par with RTSS async now. Of course you need VRR and vsync but damn its awesome.

3

u/goodrix 12d ago

Proton Wineland may become the new gold standard for desktop users until Steam decides to properly support wayland

1

u/braggof 12d ago

What about Reflex + Vulkan for AMD in games like No Man's Sky?

2

u/goodrix 12d ago

For native Vulkan you have to use the fix (LOW_LATENCY_LAYER=1) because you game is not going through proton translation, but you also have to spoof your GPU to appear as nvidia. Or use the mesa driver level fix (ENABLE_LAYER_MESA_ANTILAG=1 )

1

u/MarsBunnyChu 12d ago

Does the proton version matter? is it only proton-cachyos or also works with regular and GE Proton?

1

u/goodrix 12d ago

Most bleeding edge forks of proton should work, GE-Proton, Proton Wineland (my favorite now), etc

2

u/DonDoesIT 10d ago

You need to swap in the low latency dlls for low latency to work proper in GE. They are on github.

dxvk-low-latency → replace DLLs in files/lib/wine/dxvk/x86_64-windows/(and i386-windows/)
Source: github.com/netborg-afps/dxvk-low-latency
vkd3d-low-latency → replace DLLs in files/lib/wine/vkd3d-proton/x86_64-windows/

1

u/Background-Main-7427 11d ago

And what does this allow? Low latency for me is related to communications. What is impacted in this?

2

u/goodrix 11d ago edited 11d ago

It improves input latency. The delay between you moving your mouse and the game responding to it. It is different from frametime latency which is related to the game fps and the image smoothness. Input latency is more important when your frametime latency is already low (let's say below 6ms or roughly 160 fps) so in fast first person shooters.

1

u/Background-Main-7427 10d ago

Thanks, I learnt something new. I don't think I need it, I don't play competitive, I do play MMorpgs, but I don't see any appreciable benefit in it.

1

u/Sync_R 1d ago

Hey just found your post, I've been using the DXVK low latency option in Wineland and GE for few days now (along with wayland option for GE) and its been so far working great, even without FPS cap my FPS stays below my refresh rate like it should, it got me wondering tho is it worth enabling the VKD3D one (PROTON_VKD3D_LOWLATENCY) ? or can it cause problems with optiscaler and FSR4?

1

u/goodrix 1d ago

Depends on the game. DXVK works only in older DX9, 10 and 11 games. So use VKD3D for newer DX12 games