You don't have to get left behind with gaming on Linux if you have an older GPU, thanks to projects like DXVK-Sarek keeping them alive.
This fork of DXVK (the Vulkan-based implementation of D3D8, 9, 10 and 11 for Linux / Wine), is aimed it those of you with GPUs that do not meet the Vulkan 1.3 requirement of the main DXVK / Proton. Giving you the benefit of various game upgrades and fixes from later DXVK versions but keeping it supported for older GPUs.
DXVK-Sarek v1.12.0 brings dyasync (Dynamic Asynchronous Pipeline Compilation, replacing the old async patch) and the port of D7VK, which adds Direct3D 3, 5, 6 and 7 support to DXVK-Sarek. Plus, lots of fixes from upstream DXVK for many more games to run so plenty to look forward to.
The GitHub release page explains dyasync in more detail:
Starting with this release, DXVK-Sarek includes dyasync, enabled by default. This replaces the traditional async patch and removes the need for separate async builds, so from now on there will be no more async-only or non-async releases, only a single unified build.
When a shader is encountered for the very first time, it must be compiled synchronously, this is unavoidable and may cause a brief stutter. However, every variant after that is handled differently. A variant is created whenever the game uses the same shaders with a different combination of fixed-function state (blend mode, depth test, cull mode, render pass, etc.), each unique combination counts as a new variant.
When a new variant is needed, dyasync does not stall the game to compile it. Instead, it grabs the closest already compiled pipeline for those same shaders (perhaps one compiled with different blend settings) and uses it as a placeholder while the correct variant builds in a background thread. Once the background compilation finishes, it silently swaps in the correct pipeline. This reduces stuttering and improves frametimes.
This approach is safer than the traditional async patch because something valid is always being rendered on screen, there are no invisible or missing objects. That said, during the brief placeholder period, minor visual inaccuracies are possible (e.g. slightly wrong blending). Use in multiplayer games at your own discretion.
Dyasync can be disabled by setting
dxvk.enableDyasync = Falseindxvk.conf, in theDXVK_CONFIGenvironment variable, or by using the environment variableDXVK_DISABLE_DYASYNC=1.
And, officially, Proton-Sarek has now been retired. This was their own special Proton build with DXVK-Sarek. Instead, they suggest using Proton-CachyOS which is supported.
Main changelog, click me
- [d3d7] Port d7vk to DXVK-Sarek (#38)
- [d3d7] Backport latest d7vk features (#39)
- [d3d8] Backport latest upstream d3d8 fixes (#20)
- [d3d8/9] Backport upstream fixes and optimizations
- [d3d8] Backport ZBIAS precision fix, UB shifts, cast safety and member init fixes
- [d3d9] Disable instancing for non-indexed draws
- [d3d9] Use drawInfo.vertexCount instead of vertexCount
- [d3d9] Clamp stage and type in [G,S]etTextureStageState
- [d3d9] Avoid depth degenerate viewports
- [d3d9] Saturate viewport depth range
- [d3d9] Only apply viewport zBias if minZ is below 0.5
- [d3d9] Return empty buffer slice for out-of-bounds offsets
- [d3d9] Fix off-by-one when copying shader defined constants
- [d3d9] Fail GetRTData if src and dst have mismatching sizes
- [d3d9] Only upload mip 0 of managed automipgen textures
- [d3d9] Only set initial NeedsUpload for D3DPOOL_MANAGED textures
- [d3d9] Only enable ATOC when rendering to MS RT
- [d3d9] Do not support cube textures with depth formats
- [d3d9] Fix ordinal values in the DEF file
- [d3d9] Don't clear mipGenBit if texture is bound as attachment
- [d3d9] Fix barriers with staging buffers
- [d3d9] Fix spec constant derp
- [d3d9] Fix recording MultiplyTransform
- [d3d9] Gate clip distance emission on Vulkan feature support
- [d3d9,dxso] Fix push constant validation errors
- [d3d9/d3d11] Backport validation fixes, early-outs and format/sampler compatibility fixes
- [d3d9/11] Make more features optional on the project
- [d3d9] Remove the FF shaders (no longer needed after the d7vk port cleanup)
- [d3d11] Shared texture flags handling fixes
- [d3d11] Fix error return on MAP_WRITE_NO_OVERWRITE on deferred context
- [d3d11] Do not touch row/depth pitch on failed map
- [d3d11] Fix MiscFlags check in GetDescFromResource
- [dxgi] Unchain DxgiSwapChain::Present1 and Present
- [dxgi] Unchain DxgiFactory::CreateSwapChain and CreateSwapChainForHwnd
- [dxgi] Backport VRAM reporting fixes, float bpp correction and const refactors
- [dxvk] Keep more empty system memory chunks alive
- [dxvk] Fix xfb counter buffer draw tracking
- [dxvk] Add dyasync (Dynamic Asynchronous Pipeline Compilation)
- [dxvk] Rework dyasync internals, faster lookups and smarter workers
- [dxvk] Replace mutex-based pipeline compilation with lock-free implementation (dyasync)
- [dxvk] Backport default shader cache path logic from upstream DXVK
- [dxvk] Fix isoline tessellation enum order
- [dxvk] Fix bool bitwise AND in UMA check, backport FNV-1a hash and explicit constructors
- [dxso] Don't assume 32 registers
- [dxso] Clamp Exp when fast float emulation is enabled
- [dxso] Backport NaN comparison fix, default inits and FLT_MAX portability fix
- [dxbc] Fix Mali GPU black screen caused by unbound texture optimization (#36) (thanks @zeyadadev)
- [dxbc] Disable clip/cull builtins when Vulkan features are off
- [dxbc] Fix patch vertex count, remove debug logging, add sparse/ROV early-outs
- [spirv] Use opFUnordNotEqual instead of opFOrdNotEqual
- [spirv] Fix typo
- [vulkan] Backport loader null-check, color space and debug enum printers
- [util] Rewrite the thread wrapper again
- [util, d3d9] Add support for arm64 and arm64ec
- [util] Backport small fixes: force_inline, operator bool and div-by-zero guards
- [util] Fix MSVC build
- [util] Add upstream changes to the config file
- [misc] Fix color error on Windows (thanks @UMU618)
- [submodules] Update SPIR-V and Vulkan headers
As always, projects like this showcase the power of open source and how Linux has become a great platform for preservation to keep older hardware and gaming alive.




How to setup OpenMW for modern Morrowind on Linux / SteamOS and Steam Deck
How to install Hollow Knight: Silksong mods on Linux, SteamOS and Steam Deck