gitmyhub

dxvk

C++ ★ 17k updated 9h ago

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.

C++VulkanWinesetup: moderatecomplexity 3/5

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