VKD3D-Proton is an incredibly important project for ensuring Direct3D 12 games run well on Linux / SteamOS using Vulkan, with a big new release up.
This is automatically included in Valve's Proton, so you don't need to do anything to update to it. Proton Experimental usually pulls in changes from it fairly often. However, if you wish to try it out in the current version of Proton we have a GamingOnLinux guide to tell you what to do.
With version 3.0.1 the developer notes this is likely to be the last release before "VK_EXT_descriptor_heap" support lands.
As for what's new in VKD3D-Proton 3.0.1 - quite a lot actually. There's various fixes and improvements to specific games like Death Stranding 2, Spider Man 2, Crimson Desert, REANIMAL and others. There's also support for more D3D12 features like D3D12 view instancing (experimental). Plenty of optimizations too, a bunch of which is for mobile chips but there's a number of performance improvements for all users included.

Pictured - Death Stranding 2 on Linux
Amazing work as always! Enabling Linux platforms to play tons of games, even some brand-new AAA games on the day that they release.
Full changelog, click me
This is likely the last release before VK_EXT_descriptor_heap lands.
There are some practical reasons why this is 3.0.1 instead of 3.1,
but numbers don't really matter that much anyway.
A ton of work on descriptor heaps have been happening in the background as well,
but that is not included in this release.
Features
- D3D12 view instancing is now experimentally supported.
It is enabled for the one known game that requires it, Crimson Desert (1.04+). - Implement
VK_EXT_present_timing, allowing for smooth frame pacing for SyncInterval > 1 when supported. - Support Independent Devices feature.
- Add support for new AGS WMMA ops required for FSR4 Ray Reconstruction and Denoiser, as used in Crimson Desert.
- Expose new interfaces for more up-to-date NVAPI and expose some support for NVAPI shader intrinsics.
With up-to-date dxvk-nvapi, the vendor extensions for Shader Execution Reordering should work for example. - Expose new interfaces for AMD AGS and expose some support for AGS shader intrinsics, as used in Crimson Desert.
Fixes
- Allow
SV_PrimitiveIDto be read in more shader stages as expected. - Various fixes for NVIDIA Reflex to improve performance in some cases. [NVIDIA contrib]
- Rather than trying to lock NVAPI present ID to our present ID, these can now be decoupled.
This helps frame-gen in particular, since we can now signal this situation properly.
- Rather than trying to lock NVAPI present ID to our present ID, these can now be decoupled.
- Various fixes to make Turnip pass vkd3d-proton test suite.
- Various fixes in dxil-spirv to make new games not crash in shader compiler.
- Fix regression in F1 2019/2020 where old workaround in old compiler was not retained in new code.
- Misc other bug fixes.
Performance
Most of the performance work for this release revolved around giving some love to mobile chips which rely
on tiling for optimal performance:
- Implement deferred clears and discards to potentially improve performance on e.g. Turnip.
- Take advantage of render pass suspend-resume on mobile GPUs, which can potentially improve performance a lot.
NOTE: This depends on driver and game to "do the right thing". It does not magically make things go faster. - Move query pool initialization and resolves around to avoid breaking render passes as much as possible.
- Rework how MSAA resolves work to make it easier for drivers to optimize.
Other performance improvements:
- Implement a batched system for complex ExecuteIndirect where existing split command list optimization did not work.
Improves GPU bound performance in various games that spam ExecuteIndirect with state updates like Crimson Desert, Starfield and Halo Infinite. - Implement SM 6.4 dot2add with
VK_VALVE_shader_mixed_float_dot_productif supported. - Finally use a proper Vulkan TRANSFER queue for D3D12 COPY queues if supported instead of Vulkan COMPUTE queue.
RADV does not expose this by default yet, but a TRANSFER queue is now used on NVIDIA by default,
which should improve performance when streaming assets.
Workarounds
- Introduce a mechanism to apply workarounds based on shader entry point name instead of hash.
This is not always available, but should avoid churn in e.g. Wuthering Waves and Crimson Desert
which are moving targets w.r.t. shader hashes. - Workaround DispatchRays where game forgets to set root signature correctly.
- Workaround misc game bugs in:
- Shadows of the Tomb Raider
- Rise of the Tomb Raider
- Spider Man 2
- Death Stranding 2
- Guardians of the Galaxy
- REANIMAL
- Crimson Desert
- ... and others I probably missed to mention
- Workaround hardware bug on RDNA4 with
SV_ShadingRateon affected Mesa versions.- Fixed in 26.1+. Workaround is disabled on those versions.
- Remove NULL SMEM PRT HW workaround on AMD in future Mesa 26.2+.
- Resolves a 1.5 year old nightmare in Monster Hunter Wilds.
- Add performance workaround for NVIDIA kernel when waiting for ID3D12Fences.
- Allow RDNA1 GPUs to pretend that they support barycentrics and VRS. Allows Crimson Desert to run on RDNA1.
- Remove global submission lock workaround on NVIDIA.
Misc
Remove legacy paths for VK_NV_device_generated_commands{,_compute} and compute fallback for NV_dgcc.
No relevant driver is impacted by this cleanup.
Source: GitHub
Plenty of optimizations too, a bunch of which is for mobile chipNote that the Frame [uses Turnip.](https://www.igalia.com/2025/11/helpingvalve.html)
Quoting: CatKillerIf you think of that as just normal English, it's one of the sillier sentences I've seen in a long time.Plenty of optimizations too, a bunch of which is for mobile chipNote that the Frame [uses Turnip.](https://www.igalia.com/2025/11/helpingvalve.html)
Work has been underway for years, from VK_GOOGLE_display_timing in 2017 to becoming part of Vulkan 1.4.335 five months ago.
Keith Packard did some work for Valve aimed at improving frame timing for VR. [Text](https://keithp.com/blogs/present-period/), [Video](https://www.youtube.com/watch?v=ihWLqQciDEg).
Croteam CTO Alan Ladavac gave a presentation to GDC about using this. [Text](https://medium.com/@alen.ladavac/the-elusive-frame-timing-168f899aec92), [Video](https://www.youtube.com/watch?v=n0zT8YSSFzw).
Hans-Kristian Arntzen did some [testing](https://themaister.net/blog/2018/11/09/experimenting-with-vk_google_display_timing-taking-control-over-the-swap-chain/).




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