FREEDOM251

Freedom251 › Game Compatibility Layers

VKD3D

Free plan LinuxMacWindows

Visit VKD3D Alternatives

VKD3D's own site

What VKD3D is

VKD3D is a free, open-source set of libraries and tools for porting Direct3D applications to other platforms. Its low-level Direct3D 12 implementation is built on Vulkan, and its graphics API is similar to, but not identical to, Direct3D 12. The project describes using VKD3D to port applications to Vulkan or OpenGL on Linux and to Metal on macOS. It includes a shader library that translates among HLSL, DXIL, DXBC, SPIR-V, and Direct3D shader formats, plus a command-line HLSL compiler and a utility for inspecting and manipulating DXBC. The utilities library offers Direct3D entry points such as D3D12CreateDevice() and D3DCompile(). GLSL and Metal Shading Language output are works in progress, while version 2.0 includes an experimental Metal target. VKD3D does not provide DXGI interfaces for adapter enumeration, swapchains, or windowing, so applications need to supply those themselves or use a library such as GLFW, SDL, or Qt. The project is available for Linux, macOS, and Windows under the GNU Lesser General Public License version 2.1 or later. Building requires SPIRV-Headers, Vulkan-Headers 1.3.228 or later, Perl, and libjson-perl.

Who it suits

VKD3D suits developers porting Direct3D applications to Linux or macOS, or working with Direct3D shader formats and Vulkan. Applications that need adapter enumeration, swapchains, or windowing must provide those interfaces or use a separate library.

What it does well

  • Free and open source under LGPL version 2.1 or later.
  • Implements low-level Direct3D 12 on Vulkan.
  • Translates among HLSL, DXIL, DXBC, SPIR-V, and Direct3D formats.
  • Includes HLSL compilation and DXBC inspection utilities.
  • Provides familiar Direct3D entry points including D3D12CreateDevice() and D3DCompile().

What to know first

  • Does not implement DXGI interfaces for adapter enumeration, swapchains, or windowing.
  • GLSL and Metal Shading Language output are works in progress.
  • Building requires several headers and tools, including Perl and libjson-perl.

Limits

GLSL and Metal Shading Language output are works in progress and are not considered ready for release; the Metal target is experimental. VKD3D does not implement DXGI interfaces for adapter enumeration, swapchains, or windowing.

Getting started

  1. Visit the VKD3D project website.
  2. Choose the vkd3d 2.0 source tarball or a Git repository.
  3. Install SPIRV-Headers, Vulkan-Headers 1.3.228 or later, Perl, and libjson-perl to build.
  4. Provide DXGI interfaces through your application or a library such as GLFW, SDL, or Qt.

Verdict

Choose VKD3D if you need libraries and tools for porting Direct3D applications or translating shaders across supported formats. Look elsewhere or add another library if your application needs DXGI windowing, swapchains, or adapter enumeration supplied by VKD3D itself.

Questions

Is VKD3D free?

Yes. It is free and open source under the GNU Lesser General Public License version 2.1 or later.

Which platforms does VKD3D support?

The project lists Linux, macOS, and Windows. Its porting examples include Vulkan or OpenGL on Linux and Metal on macOS.

Which shader formats does it handle?

Inputs include HLSL, DXIL, DXBC/TPF, and Direct3D shader model 1–3 bytecode. Outputs include SPIR-V, Direct3D formats, and Direct3D shader assembly; GLSL and MSL output are works in progress.

Does VKD3D include windowing support?

It does not implement DXGI interfaces for adapter enumeration, swapchains, or windowing. Applications must provide those or use a library such as GLFW, SDL, or Qt.

What is required to build VKD3D?

Building requires SPIRV-Headers, Vulkan-Headers version 1.3.228 or later, Perl, and libjson-perl.

Facts from VKD3D's own pages

Application integration
The utilities library provides familiar Direct3D entry points such as D3D12CreateDevice() and D3DCompile(). · repo.or.cz, 4 Oct 2026
Build requirements
Building requires SPIRV-Headers, Vulkan-Headers version 1.3.228 or later, Perl, and libjson-perl. · repo.or.cz, 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. · repo.or.cz, 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. · list.winehq.org, 9 Oct 2026
Development and CI
The project says development takes place on Wine GitLab, where merge requests are automatically tested with GitLab CI. · repo.or.cz, 4 Oct 2026
GLSL and MSL status
The project README says GLSL and Metal Shading Language output are works in progress. · repo.or.cz, 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. · repo.or.cz, 9 Oct 2026
Graphics backend
Its low-level Direct3D 12 implementation is built on Vulkan. · repo.or.cz, 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. · list.winehq.org, 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. · repo.or.cz, 9 Oct 2026
License
The project is made available under the GNU Lesser General Public License version 2.1 or later. · repo.or.cz, 9 Oct 2026
Platform examples
The project describes porting Direct3D applications to Vulkan or OpenGL on Linux and Metal on macOS. · repo.or.cz, 4 Oct 2026
Purpose
VKD3D is a set of libraries and tools intended to help port Direct3D applications to other platforms. · repo.or.cz, 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. · list.winehq.org, 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. · repo.or.cz, 9 Oct 2026
Shader outputs
GLSL and Metal Shading Language output are described as works in progress and are not considered ready for release. · repo.or.cz, 4 Oct 2026
Shader targets
Version 2.0 includes an experimental Metal Shading Language target with support for pixel shader specified stencil reference values. · list.winehq.org, 9 Oct 2026
Shader translation
libvkd3d-shader translates between supported shader formats and can retrieve shader reflection information. · repo.or.cz, 9 Oct 2026
Source availability
The project announcement lists a downloadable vkd3d 2.0 source tarball and Git repositories on WineHQ GitLab and Codeberg. · list.winehq.org, 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. · repo.or.cz, 4 Oct 2026

Where VKD3D stands on Freedom251

Look at these too