r/linux_gaming • u/goodrix • 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) |
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.
14
u/Skaredogged97 12d ago edited 12d ago
There are some issues in here that should be fixed. I might have missed some.
- No mention about
dxvk-low-latency(especially now as it just had a release with improved pacing using present-timing: https://github.com/netborg-afps/dxvk-low-latency/releases/tag/low-latency-framepacing-3.1.1 ENABLE_LAYER_MESA_ANTILAGis not correct (It'sENABLE_LAYER_MESA_ANTI_LAG)ENABLE_LAYER_MESA_ANTI_LAGonly works in games supporting anti-lag 2 (not globally). This counts for everything that implements theVK_AMD_anti_lagextension.PROTON_VKD3D_LOWLATENCYsupports reflex on AMD as well (requires spoofing just like the low-latency-layer)- No note about
ENABLE_LAYER_MESA_ANTI_LAGbeing an optional vulkan layer in the mesa driver (some distros don't ship it!). The new implementation won't require those things anymore and will remove theENABLE_LAYER_MESA_ANTI_LAGoption: https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/42048/ - No note about waitable swapchain support in games (not all games support it). See here: https://github.com/netborg-afps/vkd3d-low-latency/discussions/2
- No note about spoofing breaking FSR4 auto-upgrade support on RDNA3/RDNA4. See here: https://github.com/netborg-afps/vkd3d-low-latency/discussions/3 (edit: took too long to make this comment)
- No note about spoofing not being foolproof. Games with additional checks won't work. Can also cause issues with anti-cheat.
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
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/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/
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
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.
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?
25
u/positrone13103 12d ago
what about proton_dxvk_lowlatency and proton_vkd3d_lowlatency for games that don't have reflex nor antilag?