Sarek (Proton-For-Old-Vulkan): A custom Proton build with DXVK-Sarek 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, and others with non Vulkan support. Those who can use DXVK often rely on older versions of Proton, which suffer from lower compatibility and performance compared to newer builds. Meanwhile, users dependent on WineD3D often face a poor gaming experience. This repository provides patched versions of Proton and/or GE-Proton to try to solve these problems. This is done by using DXVK-Sarek and adding tweaks and Parameters to Proton.
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
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
Proton-Sarek Launch Parameters
Note: Because Proton-Sarek is based on GE-Proton and that one is based on Proton, the bast majority of launch parameters under both GE-Proton and Valve Proton will work on Proton-Sarek.
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 provide fallback rendering options or controll over the build.
Environment Variable | Description |
---|---|
PROTON_SAREK_PROFILE |
Changes the Sarek Runtime behavior, it accepts the next values: base , default and agg . |
PROTON_OGL_THREAD=[0/1] |
Enables OpenGL Threaded Optimizations, might increase or decrease fps depending on the game. |
PROTON_OGL_SOFTWARE=[0/1] |
Uses LLVMpipe for CPU-based rendering for OpenGL, supporting API version 4.6. |
PROTON_VK_SOFTWARE=[0/1] |
Uses Lavapipe for CPU-based rendering for Vulkan, supporting API version 1.3. |
Requirements for Using Lavapipe (Vulkan Software Rendering):
- Mesa Version: 20.3 or newer
- CPU: Multi-core recommended for better performance
Requirements for Using LLVMpipe (OpenGL Software Rendering):
- Mesa Version: Any recent version (LLVMpipe is well-supported in current Mesa releases)
- CPU: Multi-core recommended for better performance
A simple runtime that configures the game environment by adding environment variables. Its behavior can be changed using the PROTON_SAREK_PROFILE
parameter, which accepts the following values: base
, default
, and agg
.
Configuration Options:
-
"base"(Valve's default settings):
- Disables logging for Wine, DXVK, and VKD3D to enhance performance.
-
"default" (Default Value):
- Inherits all settings from the Base configuration.
- Introduces a set of fixes for OpenGL/Vulkan for old GPUs.
-
"agg":
- Represents an aggressive performance tuning mode, incorporating all features from the default configuration, plus the following enhancements:
OpenGL/WineD3D:
NVIDIA:
- Forces no Vsync to reduce input lag.
- Forces rendering textures under performance settings instead of the default quality settings.
- Forces no Full-Screen Anti-Aliasing (FSAA) and FXAA.
- Prevents the usage of anisotropic filtering.
- Disables Variable Refresh Rate (VRR).
Mesa:
- Forces no Vsync to minimize input lag.
- Disables error checking within the API to avoid CPU performance losses.
- Disables dithering.
- Forces no Full-Screen Anti-Aliasing (FSAA)
- Prevents the usage of anisotropic filtering
DXVK:
NVIDIA && Mesa:
- Disable vertical synchronization (vsync)
- Set the maximum tessellation factor to 8, limiting tessellation detail to improve performance in games that overuse it.
- Enables relaxed pipeline barriers for UAV (unordered access view) writes in D3D11, which can improve performance (with a risk of rendering glitches).
- Tell the driver to ignore certain graphics barriers around UAV writes from fragment shaders, aiming to reduce synchronization overhead on D3D11.
- Disable anisotropic filtering.
- Disable the declaration of vertex positions as invariant in D3D, which may reduce a small performance cost (at the potential risk of increased Z-fighting).
- Enables fast (but less precise) floating point quirk emulation in D3D9, which can speed up computations in games that rely on these operations.
Note
The agg profile is intended to be used on PCs with weak GPUs, trying to help with stuttering and some extra fps, visual glitches are expected, so please do not report them if you cannot replicate the problem without using the agg profile.
Sources for the Sarek Runtime:
OpenGL Extensions Documentation
NVIDIA 470 Drivers Documentation
NVIDIA 390 Drivers Documentation
DXVK-Sarek Config Documentation
-
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 justmangohud
in the Steam Launch Parameters.You can remove the
no_display
option (which hides the MangoHud HUD), change thefps_limit
value to any number you like, and change thefps_limit_method
toearly
(for smoother frametimes) orlate
(for the lowest latency).Check out the MangoHud GitHub repository for more information and configuration options.
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 releases are the only ones officially supported).
- Clone or download the Sarek-Patches dir from this repository.
- If you're using GE-Proton, no need to rename anything, as the default
proton
file works out of the box. - For Valve's Proton Stable builds:
- Rename
proton
(from the Sarek-Patches dir) to something else likeproton-ge
. - Rename the
proton-valve
file from the Sarek-Patches toproton
.
- Rename
- Edit
compatibilitytool.vdf
,version
andproton
files to reflect the name of your build (replace "Proton-Sarek" with your custom build name).
-
If 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.
- Thats all, enjoy :)
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.
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.
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