News

Triton Brings DirectX 11 Acceleration to QEMU Windows Guests

The Triton Windows driver, paired with the Neptune protocol, delivers full DirectX 11 support to QEMU VMs by implementing the DirectX DDI and translating it back to API calls, avoiding the pitfalls of previous approaches.

August 8, 2026· 3 min read· Source: UTM Blog
Triton Brings DirectX 11 Acceleration to QEMU Windows Guests

The team behind the Neptune Direct3D virtualization layer has shipped Triton, a Windows driver that brings full DirectX 11 acceleration to QEMU virtual machines. Triton works alongside Neptune to give Windows guests hardware-accelerated graphics, something QEMU has historically struggled with.

Neptune serializes Direct3D API calls across the hypervisor boundary, originally built to accelerate Wine games on Linux guests. The new Triton driver extends that capability to Windows guests by implementing the DirectX Device Driver Interface (DDI) instead of replacing system DLLs.

Why Not Just Replace d3d11.dll?

Previous attempts at Windows GPU acceleration in QEMU relied on shipping custom d3d11.dll and dxgi.dll files alongside applications. This approach has serious drawbacks:

  • Poor performance because the Desktop Window Manager (DWM) treats frames as images, requiring CPU blitting.
  • System DLLs can't be replaced without breaking Windows, and anti-cheat software flags such modifications.
  • Users must manually copy DLLs to every application, which isn't user-friendly.

The correct approach is to implement the DDI—the interface Windows uses to talk to graphics drivers—rather than the API itself.

Implementing the DDI

In Windows, applications talk to d3d11.dll and dxgi.dll, which handle state tracking and send sanitized commands to a user-mode driver (UMD) that implements the DDI. The UMD communicates with a kernel-mode driver (KMD) to drive the actual hardware. Triton implements both the UMD and KMD for QEMU's virtual GPU.

The KMD part was already solved: existing open-source projects (anonymix007 and arehnman) had built KMDs for Venus (Vulkan), and since Neptune is modeled after Venus, the kernel interfaces are nearly identical. The team chose anonymix007's branch as the base due to more working features.

The hard part was the DDI itself. Few open-source implementations exist—Mesa has a DirectX 10 UMD, and VirtualBox has a DirectX 11 UMD. VirtualBox's driver translates DDI calls into bytecode, then interprets that bytecode into DirectX API calls on the host. The team rejected this approach due to compatibility bugs, maintenance burden, and license incompatibility (GPLv3 vs. MIT/LGPL).

Reverse Transform: DDI → API

Instead of inventing a new transport for DDI calls, Triton transforms DDI calls back into DirectX API calls. This lets the team reuse the tested Neptune protocol—on the host side, deserialized Neptune commands are DirectX 11 API calls, so no extra interpretation is needed. This reduces latency and error opportunities.

Most DDI calls have direct API equivalents, making the transform straightforward—just handle mapping and enum lookups. The tricky part is DXBC shader bytecode, but since Triton works in reverse, it doesn't need to disassemble shaders, a significant complexity win.

The result: Windows 11 ARM64 guests on macOS hosts can run games like Crash Bandicoot Trilogy with hardware acceleration through QEMU—a first for the project.

The correct approach is not to implement the DirectX APIs but to implement the DirectX DDIs (Device Driver Interface).
Manul X Editorial