COMPARE · DIRECTX 12 · FROM UPSTREAM SOURCES, NOT RUN BY US
DXVK and DirectX 12: what vkd3d-proton does
How we checked this
Two projects, one job each
- DXVK translates Direct3D 8, 9, 10 and 11 to Vulkan.
- vkd3d-proton translates Direct3D 12 to Vulkan. It is a Valve-funded fork of Wine’s vkd3d, written largely by Hans-Kristian Arntzen, under the LGPL-2.1. It is not part of DXVK.
- DXGI is the layer that lists GPUs and owns swap chains. Since DXVK 2.1 vkd3d-proton uses DXVK’s
dxgi.dllfor it, so both layers agree on the same GPU and window.
The names collide. vkd3d is Wine’s own Direct3D 12 library. vkd3d-proton is the separate fork that Proton uses. When you search “vkd3d” you get both, so we always say which one we mean.
Why DXGI is shared, and what breaks without it
Many games create a DXGI factory and probe for Direct3D 12 before they fall back to Direct3D 11. If DXVK provides the DXGI and vkd3d-proton provides Direct3D 12, the game sees one consistent system. On Windows, mixing DXVK’s DXGI with the system’s Direct3D 12 is not a combination upstream documents as working, and DXVK itself is unsupported there.
We tested the Direct3D 11 version of the same mismatch: DXVK’s dxgi.dll with Windows’ own d3d11.dll crashed the test app within a second, exit code 0xC0000005 (F41). And the opposite, a Direct3D 11 app with only d3d11.dll and no DXVK dxgi.dll, failed at device creation with 0x887A0004 (F06). Both show the same lesson: DXGI and the Direct3D DLL must come from the same side. See the DLL page.
On Linux
- Proton: automatic. It uses DXVK for Direct3D 8 to 11 and vkd3d-proton for Direct3D 12; see the Proton page.
- Lutris, Bottles, Heroic: each has a setting for the vkd3d-proton version next to the DXVK one. We have not tested them; see the launcher page when it is ready.
- Plain Wine: the same copy-and-override pattern as DXVK, with vkd3d-proton’s own DLLs. We believe they are
d3d12.dllandd3d12core.dllbut did not check the current release, so read its README first.
On Windows
People try DirectX 12 through Vulkan on Windows, hoping for speed or for support on old GPUs. It is unsupported, and Windows already runs DirectX 12 natively, so it rarely helps. One real use: a game that already needs DXVK for its Direct3D 11 path, where the Direct3D 12 probe has to find a matching DXGI. Otherwise use native DirectX 12.
Which DLL belongs to which project
| d3d8.dll, d3d9.dll, d3d10core.dll, d3d11.dll | DXVK | Direct3D 8 to 11 (F38, F39, F40) |
|---|---|---|
| dxgi.dll | DXVK | Shared with vkd3d-proton since 2.1 |
| d3d12.dll, d3d12core.dll | vkd3d-proton | Names believed, not checked against the current release |
No rows match.
What we tested
Nothing on Direct3D 12 itself. The DXGI mismatch results above are from our Windows lab (F06, F41). A planned run will launch one Direct3D 12 game under Proton on a real GPU and show both DXVK and vkd3d-proton log banners.
Which should you use?
- A Direct3D 12 game on Linux or Steam Deck: vkd3d-proton, which Proton already includes.
- A Direct3D 8 to 11 game: DXVK. It is a different job, not a competitor.
- A game that probes both: use both with DXVK’s DXGI, as Proton does.
- Windows: native DirectX 12.
Questions people ask
Does DXVK support DX12?
No. DXVK covers Direct3D 8, 9, 10 and 11. DirectX 12 is handled by vkd3d-proton, a separate project.
Can I use vkd3d on Windows?
vkd3d-proton can be run on Windows but is not supported there, and native DirectX 12 is almost always the better choice. We did not test it.
Is vkd3d the same as vkd3d-proton?
No. Wine has its own library called vkd3d. vkd3d-proton is a separate fork, funded in part by Valve, with its own fixes for games. Searches for 'vkd3d' mix the two.
Why does my game crash when I add DXVK's dxgi.dll on Windows?
If the game then reaches Windows' own Direct3D 12 with DXVK's dxgi.dll, the pieces do not match. We saw a related mismatch with Direct3D 11: DXVK's dxgi.dll with Windows' d3d11.dll crashed the test app in under a second (F41).
Is DXVK vs vkd3d-proton a performance comparison?
No, they are for different APIs. A game uses one or the other for its main rendering, so the two do not compete.
Sources
- vkd3d-proton README · accessed 2026-11-07
- DXVK 2.1 release notes (shared DXGI) · accessed 2026-11-07
- DXVK wiki: Windows · accessed 2026-11-07
- DXVK issue 685: DXVK replaces dxgi.dll, what does it mean for vkd3d? · accessed 2026-11-07