If your GPU is newer than the Nvidia's GeForce 10 series, then you should be good to go if you update your drivers. You can still click the link for further details on which exact drivers are supported.
Permissions and credits
Author's instructions
Copyright (c) 2017 Philip Rebohle Copyright (c) 2019 Joshua Ashton
zlib/libpng license
This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.
Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:
– The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
– Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
– This notice may not be removed or altered from any source distribution.
File credits
This author has not credited anyone else in this file
Donation Points system
Please log in to find out whether this mod is receiving Donation Points
Removed sparse buffer usage that was introduced in DXVK 2.6. This caused all sorts of driver issues that would cause hangs and instability on AMD Vega GPUs and others. (PR #4763) Note: This may increase peak memory usage in some games again.
Worked around an RTSS bug that would cause the overlay to render incorrectly if the Vulkan swapchain uses an sRGB format. (#4777, PR #4778)
Worked around an issue where multisample resolves would lead to visual issues on Nvidia in certain Unity Engine games. (#4817, PR #4818)
Worked around an Intel ANV issue that would cause terrain to misrender in games such as Assassin's Creed Origins. Note: This driver bug was fixed in Mesa 25.0.3.
Worked around a RADV issue that would cause hangs on RDNA4 GPUs prior to Mesa 25.0.2. Note: Please keep your drivers up to date when using these newer GPUs.
Further improved render pass efficiency for tiling GPUs in some cases, especially if VK_KHR_load_store_op_none is supported. Note: This change does not affect desktop GPUs in any meaningful way.
Fixed a potential issue with display mode handling on uncommon monitor setups. (PR #4764)
Fixed various issues with the SDL3 backend in dxvk-native. (PR #4825, PR #4826)
Fixed compatibility of MSVC builds with very old CPUs. (PR #4811)
Fixed various minor issues that would cause Vulkan validation errors in rare scenarios.
Version 2.6
Worked around a common game bug that would cause garbled output on Nvidia when using MSAA. (#4480, PR #4731) This affects games such as Assassin's Creed 3 / Black Flag, Watch Dogs, Stalker: Clear Sky, and others. Note: This may have a small impact on performance and memory usage in affected games, including on AMD GPUs, where this issue did not manifest in rendering issues due to hardware details.
Potentially improved GPU-bound performance in games that use NVAPI UAVOverlap feature, such as Baldurs Gate 3. While this feature was supported before, our previous implementation was too conservative. (PR #4691) Note: Like other vendor extensions, this does not work on Windows.
Removed d3d11.dcSingleUseMode option. Submitting deferred command lists multiple times will now behave as expected by default. Note: This may increase memory usage in some games. Fixes rendering issues in Cardfight!! Vanguard Dear Days 2.
Slightly improved GPU-bound performance in modern games that extensively use pixel shader UAVs, such as Trine 5. (PR #4693)
Slightly reduced CPU overhead in some games that use resource binding methods inefficiently, such as God of War.
Fixed layered D3D11 video processor view creation. (PR #4651)
Added support for the ID3D11On12Device1 interop interface.
Fixed a race condition that could lead to crashes in games doing multi-threaded asset loading. (#4613, PR #4646)
Fixed various issues that would occur when disabling shader support via the d3d9.shaderModel option. (#4625, PR #4629)
Fixed an issue where games using both software and hardware cursors would not transition between the two smoothly. (PR #4670)
Fixed a regression that would cause textures to not be bound correctly in some games. (PR #4694)
Fixed an issue where games that request half-rate Vsync would run at quarter-rate instead.
Fixed minor issues that would cause wine test failures. (PR #4732)
Reworked Vulkan swapchain implementation to be more robust. (PR #4609)
Improved efficiency of multisample resolves on tiling GPUs.
Fixed a regression introduced in DXVK 2.5 that would cause memory allocation errors on certain unified memory setups, including the Qualcomm proprietary driver. Note: This does not mean that DXVK will officially support Android, or proprietary mobile drivers.
Fixed a crash if an application unloads the SetupAPI DLL. This issue affected various AdvHD-based visual novels. (#4662, PR #4668)
Fixed an issue where software rasterizers such as Lavapipe would not be considered when setting DXVK_FILTER_DEVICE_NAME. (PR #4716)
Resource initialization is now always performed on the asynchronous transfer queue if possible, and no longer uses additional memory on drivers that support Vulkan sparse residency features. This may save up to 64 MiB of VRAM in some games.
Worked around an std::regex bug that would cause games to instantly crash when using Japanese locale. (PR #4669)
Worked around potential 32-bit crashes caused by stack alignment issues in GCC-compiled binaries. (PR #4627, PR #4633)
Version 2.5.3
Fixed a regression that would cause severe rendering issues in many D3D8 and D3D9 games that use fixed-function rendering. (PR #4533)
Fixed invalid shader code generation for certain rare texture operations in D3D11.
This fixes a potential crash in TopSpin 2k25. (PR #4576)
Fixed a potential issue with handling NaN tessellation factors in D3D11 hull shaders.
Fixed an issue with D3D9 shader validation that would cause valid shader code to be rejected in some situations. (#4576, PR #4590)
Improved the debugging experience when DXVK_DEBUG=markers is set. (PR #4589, PR #4591)
In order to address feedback regarding issues with variable refresh rate displays, performance and HDR, exclusive full-screen mode was reintroduced as an option. It remains disabled by default, but users can enable it by setting dxvk.allowFse = True in the configuration file. As usual, this option has no effect on non-Windows platforms.
Version 2.5.2Artifact5335
Artifact package #5335 on GitHub: https://github.com/doitsujin/dxvk/actions/runs/12435734651
Fix messing up the dirty textures bitmask
Version 2.5.2
I'm only including things that seemed relevant to TES3. Full changelog: https://github.com/doitsujin/dxvk/releases/tag/v2.5.2
Added an implementation of D3D9 shader validation interfaces. This is needed for The Void and used in several other D3D9 games. (PR #4398)
Fixed behaviour when D3D9 applications use incorrect texture types as seen in Alpha Protocol. (PR #4513)
Optimized behaviour of disabled clip planes for D3D9 games. (PR #4508)
Fixed an issue where the DXVK_CONFIG environment variable was not applied correctly under specific circumstances.
Fixed various issues causing Wine test failures for D3D8 and D3D9. (PR #4479)
Version 2.5.1
I'm only including things that seemed relevant to TES3. Full changelog: https://github.com/doitsujin/dxvk/releases/tag/v2.5.1
Fixed a major regression where anisotropic filtering would not work correctly in D3D9 games. (#4452)
Version 2.5
I'm only including things that seemed relevant to TES3. Full changelog: https://github.com/doitsujin/dxvk/releases/tag/v2.5
Resource and memory management were completely rewritten in order to use allocated video memory more efficiently.
Support for emulated cursors was implemented for the D3D9 cursor API, which allows games to set an arbitrary image as the mouse cursor. This fixes an issue in Dungeon Siege 2 (#3020) and makes the cursor appear correctly in Act of War and various older D3D8 games. (PR #4302)
Unreal Engine 3 games using D3D9 have a quirk in that they pass a seemingly uninitialized value as the mipmap LOD bias. In order to avoid creating more Vulkan sampler objects than the driver supports, previous versions of DXVK would round the LOD bias to a multiple of 0.5, which could introduce visual inaccuracies. As a more correct soluition, DXVK will now destroy unused Vulkan samplers on the fly and use the correct LOD bias.
On Nvidia driver version 565.57.01 and newer, strict float emulation is enabled by default for improved correctness. Games for which this option was already enabled may see a small performance uplift on this driver
Made various changes to potentially improve performace on certain mobile GPUs. (includes PR #4358)
Display modes are now ordered by refresh rate to be more consistent with wined3d and fix issues with some games picking the wrong display mode.
Fixed a large number of wine test failures.
An SDL3 backend was added for dxvk-native. (PR #4326, #4404)
Fixed an issue introduced in DXVK 2.4.1 which would lead to error messages about failed buffer creation.
Fixed a long-standing issue where overlapping occlusion queries would lead to incorrect Vulkan usage. (#2698)
Fixed a rare issue wherein timestamp queries would not be tracked correctly and could read incorrect data.
Fixed various issues with MSVC builds. (PR #4444)
Disabled a workaround for boken render target clears on Nvidia drivers prior to version 560.28.03 on unaffected drivers.
If supported, VK_EXT_pageable_device_local_memory is now used to enable better driver-side memory management.
Version 2.4.1
I'm only including things that seemed relevant to TES3. Full changelog: https://github.com/doitsujin/dxvk/releases/tag/v2.4.1
The size for memory chunks is now determined dynamically based on the amount of memory the application has already allocated. This should improve the out-of-the-box behaviour in various game launchers; the dxvk.maxChunkSize option was removed accordingly.
Fixed an issue where the Vulkan swap chain would not always be recreated appropriately in a native Wayland environment. (PR #4252)
Fixed an issue with descriptor pools growing too large on Nvidia cards in some situations. (PR #4166)
Changed default shader code generation for DXBC mad instructions to work around flickering issues in games that use different vertex shaders to render the same geometry in multiple render passes. The d3d11.longMad and d3d9.longMad options were removed accordingly.
Slightly improved performance by optimizing vertex buffer uploads. (PR #4275)
Significantly improved performance in some games using Software Vertex Processing. (PR #4274)
Fixed full-screen presentation issues in some Game Maker games. (PR #4245)
Removed VK_IMAGE_USAGE_SAMPLED_BIT from textures that don't need it. (#4176)
Enabled strict float emulation by default on AMDVLK now that this driver optimizes the pattern emitted by DXVK. (PR #4203). Do note that this was already the case on RADV.
Version 2.4
I'm only including things that seemed relevant to TES3. Full changelog: https://github.com/doitsujin/dxvk/releases/tag/v2.4
Fixed various issues with D3D9 fixed-function texture coordinate processing (PR #4015, PR #4026).
Fixed pipeline layout compatibility issues when using graphics pipeline libraries, which would cause crashes or rendering issues on AMD's official drivers with pipeline libraries enabled.
If supported, VK_NV_descriptor_pool_overallocation will now be used to potentially save small quantities of descriptor memory.
Improved descriptor pool management in general to save memory in case a game renders without ever presenting to the screen.
Improved video processor blit functionality (PR #3970 PR #3984)
Improved compatibility to third-party mods hooking various DXGI entry points (PR #3966, #3968).
Version 2.3.1
I'm only including things that seemed relevant to TES3. Full changelog: https://github.com/doitsujin/dxvk/releases/tag/v2.3.1
If supported by the driver, DXVK will now use the VK_NV_raw_access_chains extensions to allow more efficient shader code generation on specifically on Nvidia GPUs. This is intended to close the gap to Windows performance drivers specifically in D3D11 games in GPU-bound scenarios, but not all games will see an improvement.
Fixed invalid SPIR-V being generated for Renderdoc internal D3D11 shaders.
Fixed undefined behaviour with out-of-bounds constant buffer loads with dynamic indices.
Fixed HDR not being enabled for DXGI_FORMAT_R16G16B16A16_FLOAT swap chains.
Reworked the dxgi.syncInterval option to also apply to D3D12 games.
Reverted the use of VK_FORMAT_A8_UNORM due to rendering issues in some games.
D3D9 games will now set the VkApplicationInfo::applicationVersion field to 1.
Reworked how dynamic system memory buffers are copied to the GPU in D3D9 games. (PR #3765)
This improves performance in games such as Shank 2 (#3755), Flammable Freddy (#2375) and Blood Rayne (#1828).
Only enable alpha to coverage when rendering to a multisampled render target in D3D9. (#3815)
Version 2.3
I'm only including things that seemed relevant to TES3. Full changelog: https://github.com/doitsujin/dxvk/releases/tag/v2.3
If VK_KHR_present_wait is supported, and if vertical synchronization is enabled, frame latency events will now be signaled when an image is actually being presented, rather than when rendering work prior to the present request has completed on the GPU. This may reduce input latency in some games, also affects the dxgi.maxFrameLatency and d3d9.maxFrameLatency options. This functionality is also used to more accurately report the number of frames actually presented via DXGI frame statistics.
The dxgi.nvapiHack config option was deprecated, and a new option dxgi.hideNvidiaGpu with a slight change in behaviour was added instead, alongside similar options for AMD and Intel GPUs. This allows implementing more targeted application workarounds for issues with e.g. XESS libraries in the future if necessary. Refer to the example configuration for more details.
Configuration options can now be specified via an environment variable, DXVK_CONFIG. See the README for details (PR #3581).
If VK_EXT_depth_bias_control is supported, depth bias scaling will now be correct in most situations. This fixes shadow rendering artifacts in various D3D9 games and is especially important on GPUs that do not support 24-bit depth formats. This affects games such as F.E.A.R. (#1461), Far Cry 2 (#2941) and Assassin's Creed Brotherhood (#2642).
If VK_EXT_line_rasterization and its relevant features are supported, smooth or rectangular lines will now be used if requested by the application. This functionality is generally not used by games, but may be useful for applications such as level editors.
If VK_KHR_maintenance5 is supported, DXGI_FORMAT_A8_UNORM images will now use the corresponding Vulkan format.
D3D9 command submission now works the same way as it does for D3D11, which will lead to more submissions but generally reduces resource readback latency. This may improve performance in games that frequently synchronize with the GPU.
Fixed a minor issue with D3D9 feedback loop tracking.
Fixed a minor issue with D3D11 stream output (#3634).
Fixed a bug and performance issues with the implementation of D3D11 tiled resources.
Fixed various issues with reporting HDR metadata.
Fixed a crash when compiling D3D9 shaders generated by the vkd3d HLSL compiler. (PR #3616)
Implemented keyed mutex synchronization on top of newly added winevulkan functionality (PR #3601, PR #3635).
Note: This will only work with recent Proton builds.
Added stubs for various D3D9On12 interop interfaces. This is needed for Train Simulator Classic (#3445).
Added an interface to allow external libraries, such as NVAPI, to enable HDR in various D3D11 games as well as Elden Ring (PR #3625). Note: This will not work on Windows.
Version 1.10.3
I'm only including things that seemed relevant to TES3. Full changelog: https://github.com/doitsujin/dxvk/releases/tag/v1.10.3
Added support for shared fences (PR #2608). This is needed for videos in Halo Infinite to work, alongside corresponding wine and vkd3d-proton patches.
Fixed a regression introduced in 1.10.2 that would cause rendering issues in various D3D11 games, including Prey, Bioshock Infinite (#2757), and some others.
Description
DXVK is a Vulkan-based translation layer for Direct3D 9/10/11 games. On some games this will run a bit smoother than Direct3D does natively, often with better frame timings/less stutter. In my experience, while I can't speak for all PCs, it helps reduce my setup's stuttering while slightly raising FPS in some areas. Your mileage may vary. (Note: OpenMW uses OpenGL instead of Direct3D. Do not use this with OpenMW. This is for the vanilla engine + MGE XE only.)
I'm unaffiliated with the DXVK project, not a programmer, and not someone who can fix issues.
For further performance gains, you can try Dynamic FPS Optimization to dynamically lower draw distance based on your current frame rate.
To uninstall, simply delete the D3D9.DLL and DXVK.CONF. Safe to add or remove anytime, and has no lasting effect on game saves or files.
Credits
All credit goes to Doitsujin and all contributors on the DXVK GitHub page. This page is not endorsed nor associated with any of the original creators or contributors. Please be sure to check out the people responsible for this wonderful utility. :)