DXVK is a Vulkan-based translation layer for Direct3D 8/9/10/11 that lets D3D games run on Linux and Wine, and serves as a reusable rendering backend for native ports.
- v3.1.1
- Published at
- Sep 15, 2026
- 18,487
- Stars
- 12,600,103
- Download
- Synced at
- 6m ago
Latest release
v3.1.1Sep 15, 2026, 05:43 PMREADME
Project Overview
DXVK turns Direct3D 8/9/10/11 draw calls into Vulkan commands, sitting between the game and the driver as a set of replacement DLLs. A game still loads d3d11.dll or d3d9.dll, but the code that runs is DXVK's translation layer, and the Vulkan driver takes it from there to the GPU. It started as a way to run Windows games under Wine and is now also used as a rendering backend for native ports.
| Item | Value |
|---|---|
| Platform | Linux and Wine, with a Windows build |
| Language / Build | C++17, Meson 0.58 or newer |
| Translated APIs | D3D8, D3D9, D3D10, D3D11, DXGI |
| Target API | Vulkan 1.3 |
| Version / License | 3.1.1 / zlib |
D3D games think they are on Windows while actually running on Vulkan.
Core Capabilities
- D3D9 translation: handles the fixed-function pipeline and shader models used by a large body of 2000s games
- D3D11 translation: powers DX11 titles through
d3d11.dllanddxgi.dll - DXGI presentation: swap chains, fullscreen transitions, and frame rate limits are handled by
dxgi.dll - State merging: collapses redundant pipeline and descriptor bindings to cut per-frame CPU submission cost
- Shader cache: compiled results are cached on disk at a path set by
DXVK_SHADER_CACHE_PATH - HUD diagnostics:
DXVK_HUDexposes counters such asfps,frametimes,drawcalls,pipelines, andmemory
Integration
Wine prefixes
Copy the DLLs from the release package into the matching prefix folders, then add native overrides for d3d8, d3d9, d3d10core, d3d11, and dxgi on the Libraries tab of winecfg:
export WINEPREFIX=/path/to/wineprefix
cp x64/*.dll $WINEPREFIX/drive_c/windows/system32
cp x32/*.dll $WINEPREFIX/drive_c/windows/syswow64
winecfgA single API only needs part of that set:
| API | Required DLLs |
|---|---|
| d3d8 | d3d8.dll, d3d9.dll |
| d3d9 | d3d9.dll |
| d3d10 | d3d10core.dll, d3d11.dll, dxgi.dll |
| d3d11 | d3d11.dll, dxgi.dll |
Steam launch options
Proton already ships DXVK, so appending environment variables to the launch options is enough, since key-value pairs before %command% apply before the game process starts:
DXVK_HUD=devinfo,fps DXVK_FILTER_DEVICE_NAME="AMD RADV" %command%Launchers and native ports
Lutris, Bottles, and Heroic place the DLLs and overrides automatically once the DXVK option is enabled; for native ports built on DXVK Native, DXVK_WSI_DRIVER must explicitly select the SDL3, SDL2, or GLFW window backend.
Use Cases
- Running Windows games on Linux through Wine or Proton
- Managing a game library with Lutris, Bottles, or Heroic
- Reusing an existing D3D rendering backend while porting a game
- Diagnosing rendering issues with the HUD and tiered logs
- Pinning a specific GPU on multi-GPU machines
Environment Requirements
| Item | Requirement |
|---|---|
| OS | Linux or a Wine prefix, with a Windows build also published |
| Graphics API | A driver supporting Vulkan 1.3 or newer |
| Runtime | A Vulkan-capable GPU driver, including 32-bit ICDs |
| Build tools | wine 10.0, Meson 0.58, Mingw-w64 10.0, glslang |
| Permissions | Write access to system32 and syswow64 in the target prefix |
Notes
- Multiplayer risk: replacing D3D libraries in online games may be treated as cheating and can get an account banned
- Device filter:
DXVK_FILTER_DEVICE_NAMEmatches substrings, and a wrong value can filter out every device so no D3D device can be created - Compile stalls: drivers with
VK_EXT_graphics_pipeline_libraryprecompile at load time, which can keep a weak CPU busy for a long stretch - Log location: on Windows logs land in the game working directory, while on Linux
DXVK_LOG_PATHmust be set - Full removal: delete the DLLs and overrides, then run
wineboot -uto restore the originals