Introduction
DXVK is a set of replacement DLLs that implement the Direct3D 8, 9, 10, and 11 APIs on top of the Vulkan graphics API. By translating DirectX calls to Vulkan at runtime, it lets Wine and Proton run graphically intensive Windows applications on Linux with significantly better performance than Wine's built-in OpenGL translation.
What DXVK Does
- Translates Direct3D 9, 10, and 11 API calls into Vulkan commands in real time
- Implements a shader compiler that converts DXBC bytecode to SPIR-V
- Provides a state cache so compiled shaders persist between runs, reducing stutter
- Supports the Direct3D 8 API via a built-in wrapper
- Works as a drop-in replacement inside any Wine prefix
Architecture Overview
DXVK ships as Windows DLLs (d3d9.dll, d3d10core.dll, d3d11.dll, dxgi.dll) that Wine loads in place of its own implementations. When a game calls a Direct3D function, DXVK maps it to the equivalent Vulkan construct, batches draw calls, and submits them through the Vulkan driver. A background thread handles shader compilation asynchronously to minimise frame-time spikes.
Self-Hosting & Configuration
- Download releases from GitHub or use the setup script in a Wine prefix
- Set
DXVK_STATE_CACHE=1(default) to enable persistent shader caching - Use
DXVK_HUD=fps,memoryto display an in-game performance overlay - Configure per-game overrides in
dxvk.conffor frame rate limits or feature toggles - When using Proton, DXVK is pre-installed; no manual setup is needed
Key Features
- Substantial performance gains over Wine's WineD3D OpenGL backend
- Async shader compilation reduces stuttering on first runs
- Built-in HUD for real-time FPS, GPU memory, and API call monitoring
- State cache eliminates repeat shader compilation across sessions
- Actively maintained with regular releases tracking new Vulkan features
Comparison with Similar Tools
- WineD3D — Wine's built-in OpenGL-based D3D translation; slower than DXVK on most titles
- vkd3d-proton — handles Direct3D 12 to Vulkan; DXVK covers D3D 8-11
- Gallium Nine — D3D9-only, requires Mesa with Nine support; DXVK is driver-agnostic
- DXVK-NVAPI — companion project adding NVIDIA API stubs for DLSS/RTX features
FAQ
Q: Does DXVK require an NVIDIA GPU? A: No. It works with any Vulkan-capable GPU: NVIDIA, AMD, or Intel.
Q: How does it affect performance compared to native Windows? A: Many games achieve 90-100% of native Windows performance; some exceed it thanks to Vulkan driver efficiency on Linux.
Q: Can I use DXVK outside of gaming? A: Yes. Any Windows application using Direct3D 9-11 benefits, including CAD tools and creative software.
Q: What is the state cache? A: A file that stores compiled shader programs so subsequent launches skip recompilation and load instantly.