dxvk
Vulkan-based implementation of D3D8, 9, 10 and 11 for Linux / Wine
DXVK is a translation layer that lets Windows games using Direct3D 8 through 11 run on Linux through Wine with near-native GPU performance, by converting DirectX graphics calls into Vulkan in real time.
DXVK is a translation layer that lets Windows applications using Direct3D 8, 9, 10, or 11 run on Linux through Wine, by translating their graphics calls into Vulkan. Direct3D is Microsoft's graphics API and only ships on Windows, so a game that talks Direct3D cannot normally run natively on Linux. Wine, the compatibility project that lets Windows software run on Linux, has its own Direct3D translation called wined3d, but performance is often modest. DXVK replaces that translation with a Vulkan-based one, which usually runs much faster.
In practice, DXVK ships as a set of DLL files such as d3d9.dll, d3d10core.dll, d3d11.dll, and dxgi.dll. You copy them into a Wine prefix and configure Wine to use the native versions instead of its built-in ones. Most gaming-focused tools built on Wine, such as Steam Play, Lutris, Bottles, and Heroic Launcher, set DXVK up automatically when you enable it for a game.
DXVK includes a configurable on-screen HUD, controlled by the DXVK_HUD environment variable, that can show frame rate, frame times, GPU info, draw calls, pipeline counts, memory usage, and other rendering statistics, useful for benchmarking and for confirming DXVK is actually being used. Other environment variables let you pick a specific GPU, set log paths, tweak configuration, and enable Vulkan validation for debugging.
You would use DXVK to run Windows games or other 3D applications on Linux through Wine with better performance and compatibility than the default translation. The README warns that altering Direct3D libraries in online multiplayer games can be considered cheating and may get accounts banned. The codebase is C++.
Where it fits
- Run a Windows game on Linux via Steam Play or Lutris with better GPU performance than the default Wine translation.
- Benchmark a game on Linux using the DXVK on-screen HUD to display frame rate, GPU memory, and draw call counts.
- Enable DXVK in Bottles or Heroic Launcher for a non-Steam Windows game so it runs faster on your Linux desktop.
- Test or debug a Direct3D application on Linux by enabling Vulkan validation layers through DXVK environment variables.