DirectX 11 in a VM without GPU passthrough: how Triton works for QEMU

GPU passthrough has long been the only honest way to get real 3D graphics in a virtual machine: you give the physical card to the guest entirely, the host no longer sees it. It works, but the price is high — you need a second GPU or be willing to lose host acceleration, plus the hassle with IOMMU and VFIO. On August 8, 2026 the UTM team introduced Triton — a driver that brings DirectX 11 to the QEMU guest without any passthrough at all. Let’s break down how it works and where the catch is, because there’s always a catch.

Info:

For those interested. For those running Windows in a VM on Linux or macOS — for an old game, DirectX applications, or simply a working environment where you want the Windows desktop to be composited by the GPU rather than drawn by the CPU. And for homelab users who need graphics in a VM but don’t want to dedicate a separate GPU for it.

Idea: not passing through hardware, but forwarding API calls

Passthrough gives the guest the card itself. Triton takes a different approach — it intercepts DirectX calls inside the guest and forwards them to the host, where they are executed by the host’s real graphics. The guest thinks it’s drawing itself; in reality, it dictates commands and the host renders.

The pipeline looks like this (the one on the cover above):

  1. Guest (Windows). The application calls DirectX 11 / DXGI as usual.
  2. Triton — a user-mode driver (UMD). It converts DDI level calls (driver interface) and bytecode shaders DXBC back into DirectX API calls.
  3. Neptune — a layer that serializes these calls and pushes them through a virtio ring buffer from the guest to the host.
  4. Host. QEMU (UTM fork) accepts virtio commands, virglrenderer deserializes them, and the host’s DirectX implementation renders the frame.

The elegance lies in the interception level. Triton operates at the junction of DDI and API: a single transformation DDI → API instead of intermediate bytecode interpretation, as in some other solutions. Fewer layers means fewer places where compatibility breaks.

One task — three host backends

Now for the interesting part: the “real DirectX on the host” is an abstraction; the host has its own graphics. Therefore Triton has three different backends for different platforms, and they behave differently.

Backend Host platform How it translates Nuance
DXVK Linux (Vulkan) D3D11 → Vulkan the most “free” path, relies on mature DXVK
DXMT macOS, native ARM64 D3D11 → Metal directly native to Apple Silicon
D3DMetal macOS (Apple Game Porting Toolkit) via Apple framework only x86_64, requires Rosetta

A counterintuitive result from the article: D3DMetal beats DXMT in speed even when running through Rosetta emulation. In other words, the “native” backend is not always the fastest — Apple’s game-porting framework is polished better. A good reason not to trust the intuition that “native = faster” and measure for yourself.

Warning:

There’s an important limitation to D3DMetal, and it’s not technical but licensing. Apple’s D3DMetal.framework is allowed for use only for “development, testing, or evaluation of games” and with a ban on commercial distribution. UTM explicitly notes: with CrossOver (a commercial Wine) there is a separate Apple agreement for bundling D3DMetal — others do not have it. So the “fastest” backend is also the one with the tightest license.

Where the rough edges are honestly acknowledged

This is an early project, and the authors don’t hide it — for understanding, their words matter more than promises. Weak points, according to them:

  • DXBC metadata reconstruction — “the weakest and most error-prone” component. The driver reconstructs the DXContainer headers, which the host renderer expects, from raw shader bytecode by trial and error.
  • General textures on macOS are limited to a linear format (via shm_open() + MTLBuffer), which is memory-inefficient when there are many of them.
  • Synchronization — fences are emulated on the CPU with polling, adding latency per frame.
  • The Windows drivers themselves are labeled as “very unstable,” intended for testing.
Note:

Separately on performance: the announcement contains no numeric benchmarks. There are screenshots — Crash Bandicoot Trilogy on Windows 11 ARM64, FireStrike runs on both macOS backends, Windows desktop compositing (DWM) over DXVK. This proves that it renders, but doesn’t answer the question of FPS. For now this is a demonstration of feasibility, not a ready-to-play solution — temper expectations.

How this relates to what existed before

To make Triton work, it helps to compare with its task’s neighbors — also from the authors’ review:

  • GPU passthrough — yields maximum performance and compatibility but requires a separate card (or sacrifices host acceleration) and VFIO setup. Triton removes that price in exchange for performance and stability.
  • DLL replacement — CPU blitting during compositing windows, limited compatibility, copying files for each application.
  • Veneus (Vulkan passthrough) — on macOS requires translation through MoltenVK and, according to the authors, is less stable than the direct Direct3D path.
  • VirtualBox approach with intermediate bytecode — extra transport, latency, and translation bugs.
Important:

Correct expectations: Triton is not a replacement for passthrough for those who need maximum, but a way to obtain working DirectX 11 in a VM where a separate GPU is not and will not be available. For a homelab this is interesting as it’s the first viable software-only route to 3D in guest Windows on a normal host. But today it is an early, sometimes unstable project, and on macOS also subject to licensing for the fastest backend. Try it — yes; deploy for production and wait for gaming FPS — not yet.

What to takeaway

  • Triton brings DirectX 11 to a QEMU guest without GPU passthrough, forwarding API calls to the host via virtio (Triton + Neptune + virglrenderer).
  • Three backends: DXVK (Linux/Vulkan), DXMT (macOS ARM64) and D3DMetal (macOS, via Apple GP Toolkit) — with the last being faster even under Rosetta, but license-restricted.
  • The project is early: DXBC metadata reconstruction is brittle, CPU-based synchronization adds delay, the drivers are marked unstable, and public benchmarks are absent.
  • Components are open (forks of QEMU/virglrenderer/DXMT), excluding Apple’s proprietary D3DMetal.framework.

Related forum topics: Proxmox VE 9.2 official on ARM64: debunking three myths, Zapscape (CVE-2026-64561): breakout from VM to host kernel.

Sources

Question:

Do you use a full passthrough with a separate card for graphics in a VM — or would you be satisfied with this “software-only” DirectX at the cost of some performance? And for macOS users: have you tried DXMT/D3DMetal, does your experience align with the authors’ claim that Apple’s backend is faster than native?