Anonymous edits have been disabled on the wiki. If you want to contribute please login or create an account.


Warning for game developers: PCGamingWiki staff members will only ever reach out to you using the official press@pcgamingwiki.com mail address.
Be aware of scammers claiming to be representatives or affiliates of PCGamingWiki who promise a PCGW page for a game key.

DXVK

From PCGamingWiki, the wiki about fixing PC games
DXVK
Developers
doitsujin
Joshua-Ashton
K0bin
AlpyneDreams
Community
Release dates
Windows January 14, 2018[Note 1]

Key points

Vulkan-based translation layer for Direct3D 8-11 games used by e.g. Proton to allow Windows games to run on Linux.
Windows is not officially supported, though generally works, and may even improve performance compared to native.
Starting with version 2.0 a Vulkan 1.3 driver is required[4] (cards which entered legacy status before 2022 thus won't work[Note 2]). A fork exists trying to make the best out of the old 1.10.x branch.

General information

Official wiki
Official repository

Availability

Source DRM Notes Keys OS
Official website
DRM-free
Windows
Linux

Installation

Instructions for Windows:
  1. Consult the API section of the PCGW article for the appropriate game for the following details:
    • The Direct3D version used by the game (8, 9, 10, or 11).
    • The bitness of the game executable (32-bit or 64-bit).
  2. Download the latest dxvk-xxx.tar.gz from the official website.
  3. Open the archive in a archive manager such as 7-Zip.
  4. Extract the appropriate DLL files from the archive based on the information retrieved in step 1 to a temporary location.
    • Direct3D 8 games requires the d3d8.dll and d3d9.dll files.
    • Direct3D 9 games requires the d3d9.dll file.
    • Direct3D 10 games requires the dxgi.dll, d3d11.dll and d3d10core.dll files.
    • Direct3D 11 games requires the dxgi.dll and d3d11.dll files.
Usually simply placing all dlls have no negative impact, but a few games may also detect other api level not in use when start. Games with multiple api level support may need both dlls in folder.
  1. Move the DLL files to the same folder as the game executable; typically <path-to-game> but might differ.
  2. Launch the game. DXVK should now automatically be used.
    • A third-party tool such as MSI Afterburner can be used to verify that the game is rendering using Vulkan.
    • If DXVK is not being loaded, see the the official wiki for common issues.
    • If the game fails to launch, the latest versions of the Vulkan Runtime might need to be installed on the system.

Notes

Be aware that since 2.7, GPU drivers with VK_KHR_maintenance5 are required (NVIDIA: Windows 532.34, Linux 525.47.35, AMD: Windows: 23.12.1[5], Linux: Mesa 24.2). In certain cases[6] for e.g. GCN4 and older or potentially for specific titles, the newest DXVK version might cause crash when log file will tell "Skipping: Device does not support 256 of push data" - in such case, use e.g. DXVK 2.3.1 version (while 2.6.2 might also crash, but simply later). It might be connected with the fact that support for GCN4 was split from main driver branch in 23.9.3[7] and might not provide some features added later since then despite VK_KHR_maintenance5 being listed in vulkaninfo.

Uninstallation

Remove the installed DLL files from the game folder to uninstall DXVK.

Performance

For most post-DX9 games, DXVK provides 10-20% lower framerate comparing to native DirectX[citation needed], as the translation isn't always perfect and DXVK cannot enhance GPU performance.

However, for some circumstances, it is possible to get even higher framerates than native DirectX. This is due to the framerate being limited by the weaker one between CPU and GPU, and DXVK have slightly lower call overhead which reduce CPU usage (this is useful for those who have a weak CPU with powerful GPU, in the latest DX11 games which can manage to push hundreds of thousands draw calls). Moreover, this can restore (if not exceed) much of the CPU-limited DX9 performance that was lost in later Windows 10 builds.

Some options like dxvk.enableDescriptorBuffer=False[8] or d3d9.deviceLocalConstantBuffers=True can be tried to slightly improve GPU-limited scenarios.

DLSS

On Windows, games utilizing DXVK are unable to work with DLSS by default. However, there is a workaround for this.

Instructions for enabling DLSS while using DXVK on Windows:
The following guide is intended for 64-bit games. If the game's bitness is 32, the steps are almost the same except for those listed in the notes.
  1. Download the latest DXVK-NVAPI.
  2. Open the archive in an archive manager such as 7-Zip.
  3. Extract nvapi64.dll and nvofapi64.dll from x64 to the folder in which the game executable is located.
  4. In the game executable's folder, create a file called dxvk.conf.
  5. Open it up with a text editor and insert the following line: dxgi.hideNvidiaGpu=False. Save it.
  6. Open the game and check if DLSS can now be activated.
    • If not, then this means that the DLLs of the DXVK-NVAPI weren't loaded automatically. In that case, a DLL injector is now being needed in order to force that.
  7. Download the latest version of Koaloader.
Antivirus software usually classifies DLL injectors as suspicious and, therefore, often displays a warning even though it's safe to use, at least in this case.
  1. Open the archive and choose a file from a folder that ends with 64, extract it to the game executable's folder. Ensure that this file does not already exist there. A good chance of Koaloader being loaded is provided by DLLs such as version.dll, winmm.dll, winhttp.dll or dinput8.dll.
  2. Create a file called Koaloader.config.json in the game executable's folder.
  3. Open it up with a text editor and insert the following lines:
{
  "logging": true,
  "enabled": true,
  "auto_load": false,
  "targets": [
    "gameExecutable.exe"
  ],
  "modules": [
    {
      "path": "nvapi64.dll",
      "required": true
    },
    {
      "path": "nvofapi64.dll",
      "required": true
    }
  ]
}
  1. Replace gameExecutable with the actual name of the game executable, then save it.
  2. Open the game and check if DLSS is available now.
  3. If a file called Koaloader.log.log does not exist in the game executable's folder now, then Koaloader wasn't loaded and so a different file has to be selected from the Koaloader's download folder.

Notes

Be aware that this approach has only limited success, it might crash the game.
If the bitness of the game executable is 32, then the 32-bit version of DXVK-NVAPI (nvapi.dll) from x32 from its download folder needs to be used as well as the 32-bit version of Koaloader from a folder that ends with 32 from its download folder. Then only use the module {"path": "nvapi.dll","required": true} in Koaloader.config.json instead of the two listed above.
If the game crashes and only the use of DLSS Super Resolution is desired, it might be sufficient to just inject nvapi64.dll (and not nvofapi64.dll as well) for it to work properly.

Other information

dxvk-async

dxvk-async is a fork of DXVK that changes the compilation of pipelines (e.g. shaders etc) to be an asynchronous operation performed by a worker thread. This prevents the compile process from blocking the main thread, which could otherwise cause noticeable stutters in games.
Not supported anymore by the developer since it was superseded by graphics pipeline libraries support.[9]

dxvk-gplasync

dxvk-gplasync is a successor to dxvk-async that combines asynchronous compiling and pre-compiling of shaders. It might work better than vanilla DXVK 2.0 (which removed the shader compilation stutter[10]) on older GPU drivers without GraphicsPipelineLibrary support[Note 3].
Be aware that gplAsyncCache is now completely removed since version 2.7 due to removal of legacy state cache[14] and cannot be used along with the old dxvk.enableAsync=true in dxvk.conf file created nearby the binary any longer. dxvk.enableAsync should be used instead to take advantage of this feature.

d7vk

d7vk is a DXVK fork that implements Direct3D 7. It uses DXVK's D3D9 backend as well as Wine's DDraw implementation (or the windows native DDraw) and acts as a proxy between the two, providing a minimal D3D7-on-D3D9 implementation. Its goal is to support games utilizing DDraw7 and D3D7, whereas games relying on interoperability with older DDraw interfaces are not going to be supported for the most part.


Notes

  1. It is... debatable... which release version we should use. Technically speaking v1.0 was released on February 25, 2019[1] but is otherwise not really different than any other releases that predates it and came after, ergo I opted to see the very first public release, v0.20,[2] as the 'official' release date.[3]
  2. This isn't really a problem for those using open-source drivers on Linux (newer Vulkan versions don't mandate additional hardware features), but otherwise it means that Nvidia's Kepler and AMD GPUs older than GCN4 aren't supported anymore.
  3. On NVIDIA, GPL was compatible with DXVK 2.0 since 520.56.06 drivers on Linux and 473.33 on Windows[11][12], and much later in 24.6.1 on AMD[13]

References

  1. GitHub - doitsujin/dxvk - Version 1.0 - last accessed on 2022-09-24
  2. GitHub - doitsujin/dxvk - Version 0.20 - last accessed on 2022-09-24
  3. Verified by User:Aemony on 2022-09-24
  4. Driver support · doitsujin/dxvk Wiki - GitHub - last accessed on 2025-07-06
  5. Vulkan® Driver Support - last accessed on 2025-09-20
  6. Verified by User:Deton24 on 2025-10-09
    RX 400 series, 25.3.1, Radeon-ID drivers, Rayman 2 Redreamed DX11, (UE5), W11 24H2
  7. Did AMD just end support for the RX 500 series of GPUs? · Reddit - last accessed on 2025-10-09
  8. [dxvk] Enable descriptor buffer on Nvidia by doitsujin · doitsujin/dxvk - GitHub - last accessed on 2025-07-06
  9. the async patch partially breaks the dxvk-cache · Issue #55 · Sporif/dxvk-async - last accessed on June 2023
  10. Release Version 2.0 · doitsujin/dxvk · GitHub - last accessed on 2025-09-20
  11. drivers.softpedia.com - Unknown page title (retrieval failure) - last accessed on 2025-09-20
  12. Vulkan Driver Support | NVIDIA Developer - last accessed on 2025-09-20
  13. VK_EXT_graphics_pipeline_library is supported, but not recognized by DXVK on Windows · Issue #3859 · doitsujin/dxvk · GitHub - last accessed on 2025-09-20
  14. Release Version 2.7 · doitsujin/dxvk · GitHub - last accessed on 2025-09-20