explaingit

doitsujin/dxvk

17,117C++Audience · generalComplexity · 3/5Setup · moderate

TLDR

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.

Mindmap

mindmap
  root((dxvk))
    What it does
      DirectX to Vulkan
      Wine integration
      Better performance
    Supported APIs
      Direct3D 8
      Direct3D 9
      Direct3D 10
      Direct3D 11
    Tools
      On-screen HUD
      Env var config
      Vulkan validation
    Gaming Tools
      Steam Play
      Lutris
      Bottles
      Heroic Launcher
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Run a Windows game on Linux via Steam Play or Lutris with better GPU performance than the default Wine translation.

USE CASE 2

Benchmark a game on Linux using the DXVK on-screen HUD to display frame rate, GPU memory, and draw call counts.

USE CASE 3

Enable DXVK in Bottles or Heroic Launcher for a non-Steam Windows game so it runs faster on your Linux desktop.

USE CASE 4

Test or debug a Direct3D application on Linux by enabling Vulkan validation layers through DXVK environment variables.

Tech stack

C++VulkanWine

Getting it running

Difficulty · moderate Time to first run · 30min

Most gaming tools like Steam Play, Lutris, and Bottles set up DXVK automatically, manual setup means copying DLL files into a Wine prefix.

In plain English

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++.

Copy-paste prompts

Prompt 1
I want to run a Direct3D 11 Windows game on Linux using Wine and DXVK. Walk me through downloading the DXVK DLLs, placing them in a Wine prefix, and configuring Wine to use them.
Prompt 2
How do I enable the DXVK HUD to show frame rate and GPU memory usage while playing a game on Linux? What do I set in DXVK_HUD?
Prompt 3
I am using Steam Play on Linux. How does DXVK fit into Proton and how do I confirm it is actually being used for a specific game?
Prompt 4
How do I tell DXVK to use a specific GPU on a Linux system that has both an integrated and a discrete graphics card?
Prompt 5
What is the difference between DXVK and VKD3D-Proton, and which should I use for a Direct3D 12 game versus a Direct3D 11 game?
Open on GitHub → Explain another repo

← doitsujin on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.