Proton
This is a living document of my Proton configuration for various games, as I tend to be a bit of a perfectionist.
Each entry contain a short description of issues and a list of past configurations, the last being the active one in my launch configuration. Every time the Proton runtime changes, it is put in parentheses and is the runtime used until a new runtime is mentioned. Unmarked (as the first config) meaning the default is used.
I have the Steam Overlay disabled, which causes mouse input lag roughly after 30-45 minutes (notably in HD2). Setting the LD_PRELOAD variable fixes that, so it’s become a habit to put it everywhere.
My current setup is an Ubuntu 24.04 LTS based distribution using Linux 6.14 with the ntsync module loaded and Steam installed natively.
Last updated: 2026-01-14
Table of Content
Abiotic Factor
Some animations play repeatedly (mouth opening in inventory). I’m assuming this is a timing issue. This config doesn’t fix it, and doesn’t need it as it plays fine as-is, so this is just a precaution.
Configs:
- (GE-Proton10-21)
LD_PREFIX="" WINE_CPU_TOPOLOGY=8 WINESYNC=1 PROTON_USE_NTSYNC=1 %command%
Balatro
Force vsync for OpenGL game.
Configs:
- (Proton9.0-4)
LD_PRELOAD="" vblank_mode=3 %command%
BeamNG.drive
The Linux port works pretty well. Using Vulkan only requires being patient when shaders are being built while the world loads. (Would enabling the cache forcefully help here?)
Configs:
LD_PRELOAD="" gamemoderun ./BinLinux/BeamNG.drive.x64LD_PRELOAD="" gamemoderun ./BinLinux/BeamNG.drive.x64 -gfx vk
BONELAB
WINEDLLOVERRIDES="version=n,b" to enable mods.
Configs:
LD_PRELOAD="" WINEDLLOVERRIDES="version=n,b" PRESSURE_VESSEL_IMPORT_OPENXR_1_RUNTIMES=1 PRESSURE_VESSEL_FILESYSTEMS_RW=/var/lib/flatpak/app/io.github.wivrn.wivrn %command%
Cities: Skylines
Somehow tends to prefer software rendering, force it off. And this is one of those entries that the Windows version run worse than the native build.
Configs:
LD_PRELOAD="" LIBGL_ALWAYS_SOFTWARE=0 ./Cities.x64 %command%LD_PRELOAD="" LIBGL_ALWAYS_SOFTWARE=0 ./Cities.x64
Deep Rock Galactic
Favourite game of all time. Runs perfectly when FPS is set to 120, 180, or 240.
Configs:
- (Proton9.0-4)
LD_PRELOAD="" PROTON_USE_DXVK=1 PROTON_USE_ESYNC=1 PROTON_USE_FSYNC=1 %command% - (Proton10.0-3)
LD_PRELOAD="" PROTON_USE_DXVK=1 WINEFSYNC=1 PROTON_USE_FSYNC=1 %command%
Half-Life 2
Configs:
gamemoderun %command% -novid -vulkan
Helldivers 2
Difficult game to run perfectly due to the game’s engine. Scales horribly with many cores.
Configs:
- (Proton9.0-4)
radv_force_pstate_peak_gfx11_dgpu=false gamemoderun %command% -USEALLAVAILABLECORES --use-d3d11 LD_PRELOAD="" radv_force_pstate_peak_gfx11_dgpu=false gamemoderun %command% -USEALLAVAILABLECORES -force-vulkanLD_PRELOAD="" gamemoderun env PROTON_ENABLE_NVAPI=1 PULSE_LATENCY_MSEC=120 %command% -force-vulkan -USEALLAVAILABLECORESLD_PRELOAD="" gamemoderun env PROTON_ENABLE_NVAPI=1 PULSE_LATENCY_MSEC=120 %command% -USEALLAVAILABLECORESLD_PRELOAD="" gamemoderun env PULSE_LATENCY_MSEC=120 %command% -USEALLAVAILABLECORESLD_PRELOAD="" radv_force_pstate_peak_gfx11_dgpu=false WINE_CPU_TOPOLOGY=8:4,6,8,10,12,14,16,18 VKD3D_CONFIG=nodxr VKD3D_FEATURE_LEVEL=12_2 PROTON_ENABLE_NVAPI=0 PROTON_ENABLE_NGX_UPDATER=0 gamemoderun %command% --use-d3d11 -force-vulkan -USEALLAVAILABLECORES --force-grab-cursorLD_PRELOAD="" radv_force_pstate_peak_gfx11_dgpu=false WINE_CPU_TOPOLOGY=8:4,6,8,10,12,14,16,18 VKD3D_CONFIG=nodxr VKD3D_FEATURE_LEVEL=12_2 PROTON_ENABLE_NVAPI=0 PROTON_ENABLE_NGX_UPDATER=0 DXVK_ENABLE_PIPECOMPILER=1 DXVK_STATE_CACHE=1 PROTON_HEAP_DELAY_FREE=1 gamemoderun %command% --use-d3d11 -force-vulkan -USEALLAVAILABLECORES --force-grab-cursorLD_PRELOAD="" radv_force_pstate_peak_gfx11_dgpu=false WINE_CPU_TOPOLOGY=8 VKD3D_CONFIG=nodxr VKD3D_FEATURE_LEVEL=12_2 PROTON_ENABLE_NVAPI=0 PROTON_ENABLE_NGX_UPDATER=0 DXVK_ENABLE_PIPECOMPILER=1 DXVK_STATE_CACHE=1 PROTON_HEAP_DELAY_FREE=1 DXVK_ASYNC=1 gamemoderun %command% --use-d3d11 -force-vulkan -USEALLAVAILABLECORES --force-grab-cursor- (Proton10.0-3)
LD_PRELOAD="" radv_force_pstate_peak_gfx11_dgpu=false WINE_CPU_TOPOLOGY=8 VKD3D_CONFIG=nodxr VKD3D_FEATURE_LEVEL=12_2 PROTON_ENABLE_NVAPI=0 PROTON_ENABLE_NGX_UPDATER=0 DXVK_ENABLE_PIPECOMPILER=1 DXVK_STATE_CACHE=1 PROTON_HEAP_DELAY_FREE=1 DXVK_ASYNC=1 WINESYNC=1 PROTON_USE_NTSYNC=1 gamemoderun %command% --use-d3d11 -force-vulkan -USEALLAVAILABLECORES --force-grab-cursor
Hot Dogs, Horseshoes & Hand Grenades
Runs fine. Only time I tried the multiplier mod was when I was on Windows, but using r2modman, it should have a similar setup with BONELAB.
Configs:
- (Proton9.0-4)
LD_PRELOAD="" PRESSURE_VESSEL_FILESYSTEMS_RW=$XDG_RUNTIME_DIR/wivrn/comp_ipc:/var/lib/flatpak/app/io.github.wivrn.wivrn %command% LD_PRELOAD="" DXVK_ASYNC=1 PRESSURE_VESSEL_IMPORT_OPENXR_1_RUNTIMES=1 PRESSURE_VESSEL_FILESYSTEMS_RW=/var/lib/flatpak/app/io.github.wivrn.wivrn/x86_64/stable/464558138d49764021fdb6fce9a21d2853c9ab4af01baa4f718edf1b617396de/files/xrizer %command% %command%- (GE-Proton10-21)
LD_PRELOAD="" DXVK_ASYNC=1 PRESSURE_VESSEL_IMPORT_OPENXR_1_RUNTIMES=1 PRESSURE_VESSEL_FILESYSTEMS_RW=/var/lib/flatpak/app/io.github.wivrn.wivrn %command%
Lethal Company
Launches fine with mods via r2modman.
Configs:
LD_PRELOAD="" %command%
PEAK
You might want to stick to launch with Vulkan.
Configs:
- (GE-Proton10-21)
LD_PRELOAD="" %command%
R.E.P.O.
Needs WINEDLLOVERRIDES for mods.
Configs:
LD_PRELOAD="" DXVK_ASYNC=1 WINEDLLOVERRIDES="winhttp=n,b" %command%
Risk of Rain 2
Configs:
LD_PRELOAD="" %command% -nolog -high
The Elder Scrolls IV: Oblivion Remastered
Scales horribly on many cores. Could make good use of ntsync, but I already completed the game.
Configs:
- (Proton9.0-4)
LD_PRELOAD="" WINE_CPU_TOPOLOGY=8 VKD3D_FEATURE_LEVEL=12_0 gamemoderun %command%
VRChat
Okay, this one is a bit of a doozy.
The older Unity engine doesn’t tend to help:
- Scales horribly on many cores
- ntsync and dxvk_async is mostly to help video loading suttering
The use of libmimalloc is optional, but I have been told it helps with performance.
Using GE-Proton10-26-rtsp20 due to a high mp4 profile when playing videos.
Configs:
- (GE-Proton9-22-rtsp17-1)
LD_PRELOAD="" WINE_CPU_TOPOLOGY=8 PRESSURE_VESSEL_FILESYSTEMS_RW=$XDG_RUNTIME_DIR/wivrn/comp_ipc:/var/lib/flatpak/app/io.github.wivrn.wivrn %command% LD_PRELOAD="" WINE_CPU_TOPOLOGY=8 GL_SHADER_DISK_CACHE=1 GL_SHADER_DISK_CACHE_SKIP_CLEANUP=1 GL_SHADER_DISK_CACHE_SIZE=2147483648 DXVK_ASYNC=1 __GL_THREADED_OPTIMIZATIONS=1 DXVK_ENABLE_PIPECOMPILER=1 DXVK_STATE_CACHE=1 PROTON_HEAP_DELAY_FREE=1 PRESSURE_VESSEL_FILESYSTEMS_RW=$XDG_RUNTIME_DIR/wivrn/comp_ipc:/var/lib/flatpak/app/io.github.wivrn.wivrn %command%LD_PRELOAD="" WINE_CPU_TOPOLOGY=8 GL_SHADER_DISK_CACHE=1 GL_SHADER_DISK_CACHE_SKIP_CLEANUP=1 GL_SHADER_DISK_CACHE_SIZE=2147483648 DXVK_ASYNC=1 __GL_THREADED_OPTIMIZATIONS=1 DXVK_ENABLE_PIPECOMPILER=1 DXVK_STATE_CACHE=1 PROTON_HEAP_DELAY_FREE=1 PRESSURE_VESSEL_IMPORT_OPENXR_1_RUNTIMES=1 PRESSURE_VESSEL_FILESYSTEMS_RW=/var/lib/flatpak/app/io.github.wivrn.wivrn/x86_64/stable/68d7958a1999e2762b7d8d36140035b8d7286580b8f0f0c2db4ac0596891f213/files/xrizer %command%LD_PRELOAD="" WINE_CPU_TOPOLOGY=8 PROTON_USE_NTSYNC=1 GL_SHADER_DISK_CACHE=1 GL_SHADER_DISK_CACHE_SKIP_CLEANUP=1 GL_SHADER_DISK_CACHE_SIZE=2147483648 DXVK_ASYNC=1 __GL_THREADED_OPTIMIZATIONS=1 DXVK_ENABLE_PIPECOMPILER=1 DXVK_STATE_CACHE=1 PROTON_HEAP_DELAY_FREE=1 PRESSURE_VESSEL_IMPORT_OPENXR_1_RUNTIMES=1 PRESSURE_VESSEL_FILESYSTEMS_RW=/var/lib/flatpak/app/io.github.wivrn.wivrn/x86_64/stable/f7a6f3fc7f73554acc50c1a51fa96f5fb18232dd9e7eb020c40e80b33e77d2f6/files/xrizer %command%LD_PRELOAD="" WINE_CPU_TOPOLOGY=8 GL_SHADER_DISK_CACHE=1 GL_SHADER_DISK_CACHE_SKIP_CLEANUP=1 GL_SHADER_DISK_CACHE_SIZE=2147483648 DXVK_ASYNC=1 __GL_THREADED_OPTIMIZATIONS=1 DXVK_ENABLE_PIPECOMPILER=1 DXVK_STATE_CACHE=1 PROTON_HEAP_DELAY_FREE=1 PRESSURE_VESSEL_IMPORT_OPENXR_1_RUNTIMES=1 PRESSURE_VESSEL_FILESYSTEMS_RW=/var/lib/flatpak/app/io.github.wivrn.wivrn/x86_64/stable/464558138d49764021fdb6fce9a21d2853c9ab4af01baa4f718edf1b617396de/files/xrizer %command%LD_PRELOAD="" WINE_CPU_TOPOLOGY=8 PRESSURE_VESSEL_IMPORT_OPENXR_1_RUNTIMES=1 PRESSURE_VESSEL_FILESYSTEMS_RW=/var/lib/flatpak/app/io.github.wivrn.wivrn %command%- (GE-Proton10-15-rtsp18-1)
LD_PRELOAD="" WINE_CPU_TOPOLOGY=8 DXVK_STATE_CACHE=1 DXVK_ASYNC=1 PRESSURE_VESSEL_IMPORT_OPENXR_1_RUNTIMES=1 PRESSURE_VESSEL_FILESYSTEMS_RW=/var/lib/flatpak/app/io.github.wivrn.wivrn %command% LD_PRELOAD="" WINE_CPU_TOPOLOGY=8 WINESYNC=1 PROTON_USE_NTSYNC=1 DXVK_STATE_CACHE=1 DXVK_ASYNC=1 DXVK_ENABLE_PIPECOMPILER=1 PRESSURE_VESSEL_IMPORT_OPENXR_1_RUNTIMES=1 PRESSURE_VESSEL_FILESYSTEMS_RW=/var/lib/flatpak/app/io.github.wivrn.wivrn %command%LD_PRELOAD="/usr/lib/x86_64-linux-gnu/libmimalloc.so.2" WINE_CPU_TOPOLOGY=8 WINESYNC=1 PROTON_USE_NTSYNC=1 DXVK_STATE_CACHE=1 DXVK_ASYNC=1 DXVK_ENABLE_PIPECOMPILER=1 PRESSURE_VESSEL_IMPORT_OPENXR_1_RUNTIMES=1 PRESSURE_VESSEL_FILESYSTEMS_RW=/var/lib/flatpak/app/io.github.wivrn.wivrn %command%- (GE-Proton10-26-rtsp20)
LD_PRELOAD="/usr/lib/x86_64-linux-gnu/libmimalloc.so.2" WINE_CPU_TOPOLOGY=8 WINESYNC=1 PROTON_USE_NTSYNC=1 DXVK_STATE_CACHE=1 DXVK_ASYNC=1 DXVK_ENABLE_PIPECOMPILER=1 PRESSURE_VESSEL_IMPORT_OPENXR_1_RUNTIMES=1 PRESSURE_VESSEL_FILESYSTEMS_RW=/var/lib/flatpak/app/io.github.wivrn.wivrn %command%
Zachtronics Solitaire Collection
Force vsync for OpenGL game.
Configs:
LD_PRELOAD="" vblank_mode=3 %command%
Tools
Miscellaneous section with tools to figure out what graphics API games use, and how well they run.
Rather incomplete.
MangoHud
MANGOHUD_CONFIG=arch,core_type,ram,vram,exec,exec_name,version,wine,winesync,fps_metrics,gpu_name,histogram,frame_timing_detailed,present_mode,engine_version,gamemode
Engine version (DXVK) example: 2.7.0 (2.7.1 on GH atm) + Vulkan version
DXVK
DXVK_HUD=devinfo,fps,frametimes,drawcalls,pipelines,memory,version,api,cs,compilerDXVK_CONFIG_FILE=/home/xxx/dxvk.conf- https://github.com/doitsujin/dxvk/wiki/Configuration
- https://github.com/doitsujin/dxvk/blob/master/dxvk.conf
dxvk.numCompilerThreads = 0?d3d11.relaxedBarriers = True?d3d11.relaxedGraphicsBarriers = True?d3d11.disableMsaa = True?