# DXVK v3.0 — Version 3.0 - Product: DXVK (https://whatsnew.fyi/product/dxvk) - Vendor: Philip Rebohle - Date: 2026-06-25 - Version: v3.0 - Original notes: https://github.com/doitsujin/dxvk/releases/tag/v3.0 - Permalink: https://whatsnew.fyi/product/dxvk/releases/v3.0 - Labels: Platforms: Windows, Linux What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. Reuse: the summaries, labels and curation here are © What's New. Quote freely with attribution and a link back; wholesale republication of the corpus is not permitted — terms: https://whatsnew.fyi/terms. The vendors' own release notes remain their publishers'. --- - **changed** — DXVK now uses dxbc-spirv for shader compilation, replacing the legacy shader translation code for all supported shader models - **fixed** — Fixed rendering issues in games caused by games relying on undefined behaviour or FXC generating invalid code, as seen in Postal: Brain Damaged and Snowrunner - **changed** — Generated shader code is now more compact, substantially reducing DXVK's memory footprint by around 1 GiB in games such as Overwatch and God of War - **changed** — Shader compilation is now fully offloaded to worker threads, reducing start-up time and stutter in games such as Days Gone and Final Fantasy XIV - **added** — DXVK's shader intermediate representation is now cached on disk inside the AppData/Local directory of the current Wine prefix, configurable via the DXVK_SHADER_CACHE_PATH environment variable - **added** — Shader Model 1-3 support for D3D9 - **changed** — VK_EXT_descriptor_heap extension is now used by default on drivers that support it - **deprecated** — The descriptor buffer path introduced in DXVK 2.7 is deprecated and will be removed in a future release - **changed** — D3D9 fixed-function pipeline is now implemented as a pair of ubershaders with optimized variants compiled in the background - **fixed** — Fixed stuttering in games such as Unreal Tournament 2004 caused by on-the-fly fixed-function shader generation - **changed** — Various types of buffers are now uploaded on demand with memory in-flight limiting, fixing address space-related crashes in 32-bit D3D9 games - **fixed** — The D3DRS_MULTISAMPLEANTIALIAS render state now works correctly to allow single-sampled rasterization while rendering to multisampled render targets, fixing UI rendering issues in Anno 1701 and Men of War Assault Squad - **changed** — Shared resources now work on Wine's upstream implementation without requiring Proton-specific patches - **removed** — Removed the DXVK_FRAME_RATE environment variable for frame rate limiting; users should use external limiters such as Gamescope or Mangohud instead - **fixed** — Fixed various issues with software vertex processing in D3D8/9, including in Vietcong and The I of the Dragon - **fixed** — Fixed incorrect D3D8/9 fixed-function fog calculations affecting Sea Dogs - **changed** — VK_EXT_border_color_swizzle is now used to fix border color behaviour for various emulated D3D9 texture formats - **changed** — Reduced unnecessary GPU synchronization to allow overlapping multiple independent render passes and render passes with compute shaders - **changed** — The asynchronous transfer queue is now used more aggressively to perform resource uploads into VRAM - **added** — D3D11 Class Linkage feature is now supported ##### Shader compiler changes DXVK now uses [dxbc-spirv](https://github.com/doitsujin/dxbc-spirv) for shader compilation, replacing the legacy shader translation code for all supported shader models. This fixes a number of issues that were previously impossible to address: - Rendering issues in games that are caused either by games relying on undefined behaviour, or by FXC generating invalid code in some cases, as seen in **Postal: Brain Damaged** (#3488) and **Snowrunner** (see Mesa issue [#13251](https://gitlab.freedesktop.org/mesa/mesa/-/issues/13251)). - The generated code is more compact than naively translated SPIR-V, which substantially reduces DXVK's memory footprint. In games such as **Overwatch** or **God of War**, this can save around 1 GiB of system memory. - Shader compilation is now fully offloaded to worker threads, which can reduce the start-up time in games such as **Days Gone** and **Final Fantasy XIV**, or reduce stutter in some cases. Previously, DXVK would perform the SPIR-V translation on the application thread and only compile the actual Vulkan pipelines on workers. - DXVK's own intermediate representation of compiled shaders is now cached on disk inside the `AppData/Local` directory of the current Wine prefix. This is necessary because compile times have increased compared to the old compiler. The cache path can be changed with the environment variable `DXVK_SHADER_CACHE_PATH`. Shader Model 1-3 support for D3D9 was implemented by @K0bin. **Note:** Outside of specific edge cases, the new compiler is **not** expected to improve overall performance. For developers: When making changes to the shader compiler, set `DXVK_SHADER_CACHE=0` to avoid loading stale shaders. ##### Descriptor heaps The new Vulkan extension `VK_EXT_descriptor_heap` is now used by default on drivers that support it. Compared to the older binding model implementation based on `VK_EXT_descriptor_buffer`, this new model is expected to achieve roughly the same level of CPU-bound performance, while reducing the GPU-bound performance penalty observed on Nvidia GPUs. The descriptor buffer path introduced in DXVK 2.7 is thus deprecated and will be removed in a future release. **Note**: For Nvidia drivers, version **595.84** or newer is required for this feature to work. The feature is disabled on older drivers due to performance regressions. DXVK will print the log message `info: Binding model: Descriptor heap` if the extension is used. ##### D3D9 changes ###### Fixed-function pipeline In order to emulate the legacy fixed-function pipeline that allows D3D8 and D3D9 games to perform rendering without shaders, DXVK previously generated its own shaders code on the fly based on pipeline state. In some games, such as **Unreal Tournament 2004**, this could lead to noticeable stuttering even after prolonged periods of gameplay. To fix this, DXVK now implements the fixed-function pipeline as a pair of ubershaders, for which optimized variants are compiled in the background as the game sets up different fixed-function setups. For more details, see PR #5192. ###### Buffer upload optimizations In order to more closely match Windows behaviour, various types of buffers that were previously placed directly in VRAM are now uploaded on demand, and a strategy was implemented to limit the amount of memory in flight, which fixes address space-related crashes in a number of 32-bit D3D9 games. See PR #5350 for details. **Note:** These changees may also improve performance on systems without Resizeable BAR in games such as **GTA IV**. ###### Multisampling render state On systems that sufficiently support `VK_EXT_sample_locations` and `VK_EXT_extended_dynamic_state3`, the `D3DRS_MULTISAMPLEANTIALIAS` render state now works correctly to allow apps to use single-sampled rasterization while rendering to multisampled render targets. This fixes UI rendering issues in **Anno 1701** (#1415), **Men of War Assault Squad** (#4946), an _[Truncated at 4000 characters — full notes: https://github.com/doitsujin/dxvk/releases/tag/v3.0]_