Sarek (Proton-For-Old-Vulkan): A custom Proton build with DXVK 1.10.3 for users with GPUs that support Vulkan 1.1+ but not Vulkan 1.3, or for those with non-Vulkan support who want a plug-and-play option featuring personal patches.
Why does this repository exist?
Because there are still users with GPUs that support Vulkan 1.1+ but not Vulkan 1.3, as well as others with non-Vulkan support. Those who can use DXVK often rely on older Proton versions, which suffer from lower compatibility and performance compared to newer builds. Meanwhile, users dependent on WineD3D frequently face poor gaming experiences. This repository provides patched versions of Proton and/or Proton-GE, offering better performance with DXVK v1.10.3 and WineD3D mainly trough the custom parameter PROTON_TWEAKS
, along with other enhancements, ensuring a smoother experience for both Vulkan and non-Vulkan setups.
Please be aware that this is a custom build of Proton and is not affiliated with Valve's Proton. If you encounter any issues specific to my Proton build from this repository that do not occur with Valve's version, kindly refrain from submitting a bug report to Valve's bug github. Instead, please report the issue directly on this GitHub. Thank you for your understanding!
Download a release from the release page
Create a ~/.steam/root/compatibilitytools.d
directory if it does not exist.
Extract the release inside
Log in inside Steam and go to the option menu, then compatibility and check Enable "Enable Steam Play for all other titles", instead of the default proton, choose the one that you downloaded.
Restart and thats it!!! Enjoy :P
Download a release from the release page
Create a ~/.var/app/com.valvesoftware.Steam/data/Steam/compatibilitytools.d/
directory if it does not exist.
Extract the release inside
Log in inside Steam and go to the option menu, then compatibility and check Enable "Enable Steam Play for all other titles", instead of the default proton, choose the one that you downloaded.
Restart and thats it!!! Enjoy :P
Current status and upcoming changes for the Builds. The following features are categorized based on their current development status:
Feature Description | Status |
---|---|
DXVK 1.10.3 on Proton | Ready |
VKD3D-proton 2.6 on Proton | Ready |
PROTON_TWEAKS Parameters on Proton | Ready |
PROTON_API_SOFTWARE Parameters on Proton | Ready |
DXVK Async on Proton | Async |
Gallium Nine on Proton | Work in Progress |
Here its the GPU List of the ones on witch its recommended to use this Proton Build
On NVIDIA cards, it should be all the ones that are stuck on the 470 drivers, previous drivers like 440, 415, 390 and Nouveau users.
Any GPU or iGPU that is OpenGL only or has a Vulkan API lower than 1.3.
This are set on the Launch Options of a game on Steam, example:
PROTON_USE_WINED3D=1 PROTON_NO_ESYNC=1 mesa_glthread=true %command%
The Optimzation variables are set on the same way on the launch options
Environment Variable | Description |
---|---|
PROTON_USE_WINED3D=[0/1] |
Use OpenGL-based wined3d instead of Vulkan-based DXVK for d3d9 to d3d11. |
PROTON_NO_D3D12=[0/1] |
Disables DX12. |
PROTON_NO_D3D11=[0/1] |
Disables DX11. |
PROTON_NO_D3D10=[0/1] |
Disables DX10. |
PROTON_NO_D3D9=[0/1] |
Disables DX9. |
PROTON_NO_ESYNC=[0/1] |
Do not use eventfd-based in-process synchronization primitives. |
PROTON_NO_FSYNC=[0/1] |
Do not use futex-based in-process synchronization primitives. |
PROTON_FORCE_LARGE_ADDRESS_AWARE=[0/1] |
Force Wine to enable the LARGE_ADDRESS_AWARE flag for all executables. |
PROTON_HEAP_DELAY_FREE=[0/1] |
Delay freeing some memory, to work around application use-after-free bugs. |
PROTON_ENABLE_NVAPI=[0/1] |
Enable NVIDIA's NVAPI GPU support library. |
PROTON_OLD_GL_STRING=[0/1] |
Set some driver overrides to limit the length of the GL extension string, for old games that crash on very long extension strings. |
PROTON_USE_XALIA=[0/1] |
Enable Xalia, a program that can add a gamepad UI for some keyboard/mouse interfaces. |
MESA_GL_VERSION_OVERRIDE=4.6 MESA_GLSL_VERSION_OVERRIDE=460 |
Only for Mesa, it changes the default string of the OpenGL version to OpenGL 4.6, faking it and making the game believe that your GPU supports that version. The game may open or not; if it doesn't open, your only solution is Software Rendering. |
First of all lets start with the must have, Gamemodem, Zram and MangoHud.
Tool/Library | Description | Link |
---|---|---|
GameMode |
GameMode is a daemon/lib combo for Linux that allows games to request a set of optimizations to be temporarily applied to the host OS and/or a game process. | GitHub - GameMode |
Zram-Generator |
Zram, formerly called compcache, is a Linux kernel module for creating a compressed block device in RAM. | GitHub - Zram-Generator |
MangoHud |
MangoHud is a Vulkan and OpenGL overlay for monitoring FPS, temperatures, CPU/GPU load and more. | GitHub - MangoHud |
My personal recomendation its to search a tutorial for the installation of the three in your favorite Linux Distro ;P
These are the custom parameters introduced in Sarek to enhance performance and provide fallback rendering options.
Environment Variable | Description |
---|---|
PROTON_TWEAKS=[0/1] |
Enables all the PROTON_TWEAKS_* parameters for general performance optimization |
PROTON_TWEAKS_PROTON=[0/1] |
Adds a set of Proton/Wine optimizations as environment variables |
PROTON_TWEAKS_NVIDIA=[0/1] |
Adds a set of optimizations for NVIDIA proprietary drivers |
PROTON_TWEAKS_MESA=[0/1] |
Adds a set of optimizations for MESA drivers |
PROTON_VK_SOFTWARE=[0/1] |
Uses Lavapipe for CPU-based rendering for Vulkan, supporting API version 1.3, PROTON_TWEAKS comes enabled by default |
PROTON_OGL_SOFTWARE=[0/1] |
Uses LLVMpipe for CPU-based rendering for OpenGL, supporting API version 4.6, PROTON_TWEAKS comes enabled by default |
Below are benchmarks comparing performance with PROTON_TWEAKS
enabled and disabled:
Requirements for Using Lavapipe (Vulkan Software Rendering):
Requirements for Using LLVMpipe (OpenGL Software Rendering):
If that of a above its not enought, you might want to check newer kernel versions or patched/customiced kernels(zen, liquorix, xanmod, cachyoskernel, clearkernel, etc), i personally recomend the vanilla kernel tought
You might want to use the drop shader cache command of the linux kernel before playing a game, you should do:
sudo su
echo 3 > /proc/sys/vm/drop_caches
exit
You might want to use Mangohud to cap your fps and set the fps cap mode, this its an example:
MANGOHUD_CONFIG=fps_limit=60,fps_limit_method=early,no_display mangohud %command%
What does this do? MANGOHUD_CONFIG=parameters,parameters
overwrites the current MangoHud config. Another option is to add the following to the MangoHud config file:
fps_limit=60
fps_limit_method=early
no_display
Also, remember that for MangoHud to work with OpenGL games, you should use mangohud --dlsym
instead of just mangohud
in the Steam Launch Parameters.
You can remove the no_display
option (which hides the MangoHud HUD), change the fps_limit
value to any number you like, and change the fps_limit_method
to early
(for smoother frametimes) or late
(for the lowest latency).
Check out the MangoHud GitHub repository for more information and configuration options.
Games that i have tested so far
Game | Status | Issues/Notes | Screenshot |
---|---|---|---|
ULTRAKILL | Playable with DXVK 1.10.3 and WineD3D | No issues so far; experience is the same as with DXVK 2.4.0 | |
Dark Souls III | Playable with DXVK 1.10.3 and WineD3D | Higher GPU usage than v2.4.0; occasional stutters | |
Project Wingman | Unplayable with DXVK 1.10.3 or WineD3D | Needs a patch; works with DXVK 2.4.0 | |
Red Orchestra 2 | Playable with DXVK 1.10.3 and WineD3D | Graphical glitches on sky; stutters at start | |
S.T.A.L.K.E.R Call Of The Zone | Playable with DXVK 1.10.3 and WineD3D | No issues so far |
Follow these steps to add to your Proton Build the Sarek patches:
Option 1: Compile your Proton build from source.
Option 2: Download a precompiled Proton build (GE-Proton or Valve's stable release are the only ones officially supported).
proton
file works out of the box.proton
(from the Sarek-Patches dir) to something else like proton-ge
.proton-valve
file from the Sarek-Patches to proton
.Edit both compatibilitytool.vdf
and proton
files to reflect the name of your build (replace "Sarek" with your custom build name).
Optionally, make additional tweaks to wine.inf
or other configuration files as needed for your specific build.
make.sh
Script ExecutableIf you want a build with normal DXVK or DXVK-Async, make the appropriate script executable:
chmod +x /path/to/make.sh # For normal DXVK
chmod +x /path/to/make-async.sh # For DXVK-Async
Execute the script with superuser privileges:
sudo /path/to/make.sh
or for the async build:
sudo /path/to/make-async.sh
When prompted, provide the path to the Proton build you downloaded or compiled.
This project also uses many 3rd party code and patches, i just do little patches so everything works well with an older DXVK, go support them, they are the ones that do the heavy work
https://github.com/ValveSoftware/Proton && https://github.com/ValveSoftware/wine
First of all, we extend our sincere thanks to Valve for their incredible contributions to the Linux gaming community through the creation of Proton, which has made gaming on Linux more accessible and enjoyable for everyone. As such, we sometimes use Valve's Proton builds as a base for our internal or public releases, or for comparison with those based on Proton-GE. Additionally, much of the code in the wine.inf file is directly sourced from Valve's Proton and Wine.
https://github.com/GloriousEggroll/proton-ge-custom && https://github.com/GloriousEggroll/wine-ge-custom
We would like to extend our gratitude to GloriousEggroll for the creation of both Proton-GE and Wine-GE, which have greatly enhanced gaming on Linux. Most of the time, the releases of this project are based on Proton-GE. We also use many configurations from the wine.inf file, from both Wine-GE and Proton-GE, particularly the custom per-game configurations.
https://github.com/doitsujin/dxvk
This project benefits from the incredible work of Philip Rebohle (doitsujin) and his creation of DXVK, which plays a key role in Linux gaming, making Windows games run smoothly on Linux through Vulkan. We deeply appreciate his contributions and proudly use DXVK in this project.
https://github.com/Sporif/dxvk-async
This project incorporates work from Sporif's DXVK Async, which provides patched versions of DXVK that enable asynchronous pipeline compilation. This allows shaders to be compiled in the background, reducing stuttering caused by synchronous shader compilation, and enhancing performance in certain scenarios. We would like to thank Sporif for their valuable contributions, and we are pleased to integrate DXVK Async into this project.
https://github.com/HansKristian-Work/vkd3d-proton
This project benefits from the incredible work of HansKristian-Work and his creation of VKD3D-proton, which plays a key role in Linux gaming, making Windows DX12 games run smoothly on Linux through Vulkan. We deeply appreciate his contributions and use VKD3D-proton in this project.
wolfegothmog
mrvictorywin
Alternative-Pie345
Cool-Arrival-2617
oln
Informal-Clock
turdas
AlienOverlordXenu
Meshuggah333