DXVK, a Vulkan-based translation layer for Direct3D 9, 10, and 11, primarily used to improve the performance and compatibility of Windows games on Linux through Wine or Proton, just released its latest update, v2.5. It’s packed with improvements to refine resource management and overall game performance. Let’s take a look at them.
The new release comes with a completely revamped memory management system designed to use allocated video memory more efficiently. This change results in reduced memory fragmentation, which can significantly decrease peak memory usage for certain gamesโfor example, โGod of Warโ may see up to a 1 GiB reduction in memory usage during extreme scenarios.
Additionally, memory defragmentation is now done periodically to return unused memory back to the system. This is not a drastic memory reduction but rather a conservative optimization that kicks in under memory pressure or when significant unused memory is detected.
However, it’s important to note that this defragmentation feature is currently disabled for Intel’s ANV driver, although users can manually enable it through the configuration file.
For optimal results, the new memory management works best on drivers that support both VK_EXT_memory_budget and VK_KHR_maintenance5, which ensures smoother functionality across games. The DXVK driver support page has been updated accordingly to reflect this.
This new release also introduces enhancements to D3D8 and D3D9 games. DXVK 2.5 now supports emulated cursors for the D3D9 cursor API, enabling games to set any arbitrary image as a cursor. This fixes long-standing cursor issues in games such as โDungeon Siege 2,โ โAct of War,โ and various older D3D8 games.
Another major improvement relates to Unreal Engine 3 games using D3D9. In the past, these games could pass seemingly uninitialized values as the mipmap Level of Detail (LOD) bias, leading to the creation of excessive Vulkan sampler objects.
To address this, DXVK now destroys unused Vulkan samplers dynamically while ensuring that the correct LOD bias is used, resulting in improved visual accuracy. This new solution replaces the older workaround that used to round LOD bias values, which sometimes caused visual inaccuracies.
On the bug fixes and performance enhancements side, DXVK 2.5 brings improvements for various games:
- Fixed Rendering Issues: Titles such as โAscension to the Throne,โ โCommand & Conquer: Generals,โ โKingโs Bounty: Warriors of the North,โ and โTomb Raider: Legendโ have all received targeted fixes to address specific rendering problems.
- Nvidia Users: For driver versions 565.57.01 and newer, strict float emulation is now enabled by default to improve correctness. Additionally, a potential performance uplift may be experienced for games that already have this option enabled.
- Mobile GPUs: Changes have been made to potentially improve performance on certain mobile GPUs, which should lead to a more optimized gaming experience.
Resource management has also been significantly overhauled for D3D11 and DXGI games. DXVK now throttles resource creation, uploading, and discarding to reduce memory pressure, which is particularly important for stability in 32-bit games like “Total War: Rome II.” Additionally, large DYNAMIC textures will no longer use staging buffers, resulting in more efficient memory use.
This update also brings several bug fixes, including implementing SEQUENTIAL swap effects for DXGI swap chains, reducing lock contention in certain games, and fixing rendering issues in games like โCall of Duty: Modern Warfare 2 Campaign Remastered,โ โDiablo 4,โ and โThe Sims 4.โ
Lastly, DXVK 2.5 also introduces an SDL3 backend for dxvk-native, resolves Vulkan validation errors in several games, and fixes issues related to overlapping occlusion queries. Additionally, support for VK_EXT_pageable_device_local_memory is now included to enable better driver-side memory management.
For more information on all changes in DXVK 2.5, visit the changelog.