VKD3D
VKD3D is a free, open-source collection of libraries and tools for porting Direct3D applications to other platforms.
What VKD3D is
VKD3D is a free, open-source collection of libraries and tools for porting Direct3D applications to other platforms. Its low-level Direct3D 12 implementation is built on Vulkan, and the project describes using it to port software to Vulkan or OpenGL on Linux and to Metal on macOS. Its shader library translates among formats including HLSL, DXIL, DXBC, SPIR-V and Direct3D shader formats. Developer tools include a command-line HLSL shader compiler, a utility for inspecting and manipulating DXBC, and a utilities library with Direct3D entry points such as D3D12CreateDevice() and D3DCompile(). GLSL and Metal Shading Language output are works in progress and are not considered ready for release. VKD3D does not implement DXGI interfaces for adapter enumeration, swapchains or windowing, so applications must provide those interfaces or use a library such as GLFW, SDL or Qt. Building requires SPIRV-Headers, Vulkan-Headers version 1.3.228 or later, Perl and libjson-perl. The project is licensed under the GNU Lesser General Public License version 2.1 or later.
Good
- Free and open source under LGPL 2.1 or later.
- Direct3D 12 implementation uses Vulkan.
- Includes HLSL compilation and DXBC utilities.
- Supports shader translation among several formats.
Watch out
- GLSL and MSL outputs are not release-ready.
- Does not implement DXGI interfaces for windowing.
- Build requires several listed dependencies.
Who it suits
VKD3D is intended for developers porting Direct3D applications across platforms. It suits projects that can provide their own DXGI interfaces or use a separate windowing library.
Verdict
VKD3D provides translation and developer tools for Direct3D application ports, with Vulkan at its core. Its unfinished GLSL and MSL outputs and missing DXGI interfaces are important integration constraints.
The facts
Each one read from VKD3D's own pages, with the date it was checked.
Where it runs
- Application integration
- The utilities library provides familiar Direct3D entry points such as D3D12CreateDevice() and D3DCompile().checked 4 Oct 2026
- Platform examples
- The project describes porting Direct3D applications to Vulkan or OpenGL on Linux and Metal on macOS.checked 4 Oct 2026
What it does
- Build requirements
- Building requires SPIRV-Headers, Vulkan-Headers version 1.3.228 or later, Perl, and libjson-perl.checked 4 Oct 2026
- Debug interface
- The project says its environment variables are mostly for debugging and are not a stable interface, so they may change or be removed.checked 4 Oct 2026
- Developer tools
- The vkd3d 2.0 announcement says D3DCompile(), D3DCompile2(), D3DCompile2VKD3D(), and D3DPreprocess() support D3D_COMPILE_STANDARD_FILE_INCLUDE as an include handler.checked 9 Oct 2026
- Development and CI
- The project says development takes place on Wine GitLab, where merge requests are automatically tested with GitLab CI.checked 4 Oct 2026
- GLSL and MSL status
- The project README says GLSL and Metal Shading Language output are works in progress.checked 9 Oct 2026
- Graphics API
- The project describes VKD3D as a 3D graphics library built on Vulkan with an API similar, but not identical, to Direct3D 12.checked 9 Oct 2026
- Graphics backend
- Its low-level Direct3D 12 implementation is built on Vulkan.checked 4 Oct 2026
- HLSL improvements
- Version 2.0 added HLSL shader features including structured thread group shared memory stores, interlocked operations, and a common subexpression elimination optimization pass.checked 9 Oct 2026
- Intended use
- The README describes the project as helping port Direct3D applications to platforms such as Linux with Vulkan or macOS with Metal.checked 9 Oct 2026
- License
- The project is made available under the GNU Lesser General Public License version 2.1 or later.checked 9 Oct 2026
- Purpose
- VKD3D is a set of libraries and tools intended to help port Direct3D applications to other platforms.checked 9 Oct 2026
- Release
- The vkd3d team announced version 2.0 on May 21, 2026, with source code available as a tarball and from Git repositories.checked 9 Oct 2026
- Shader formats
- Supported inputs include HLSL, DXIL, DXBC/TPF, and Direct3D shader model 1–3 bytecode; outputs include SPIR-V, GLSL, MSL, Direct3D formats, and Direct3D shader assembly.checked 9 Oct 2026
- Shader outputs
- GLSL and Metal Shading Language output are described as works in progress and are not considered ready for release.checked 4 Oct 2026
- Shader targets
- Version 2.0 includes an experimental Metal Shading Language target with support for pixel shader specified stencil reference values.checked 9 Oct 2026
- Shader translation
- libvkd3d-shader translates between supported shader formats and can retrieve shader reflection information.checked 9 Oct 2026
- Source availability
- The project announcement lists a downloadable vkd3d 2.0 source tarball and Git repositories on WineHQ GitLab and Codeberg.checked 9 Oct 2026
- Windowing limitation
- VKD3D does not implement DXGI interfaces for adapter enumeration, swapchains, or windowing; applications must provide these or use a library such as GLFW, SDL, or Qt.checked 4 Oct 2026
Alternatives to VKD3D
- 1
FAudio
Free planOpen sourceiOSAPILinuxmacOS7.5Free plan - 2
cnc-ddraw
Free planOpen sourceAndroidLinuxmacOSSelf-hosted7.4Free plan - 3

CrossOver
Free planLinuxmacOS7.4From $74 a year - 4
PlayOnLinux
Free planOpen sourceLinuxmacOS7.2Free plan - 5
GameHub
Free planAndroidiOSmacOS6.7Free plan - 6
Bannerlator
Free planAndroid6.4Free plan
