Analysis updated 2026-05-18
d9mt is a translation layer that allows old Windows games built on DirectX 9 to run on Apple Silicon Macs. When you run a Windows game on a Mac using a compatibility tool like CrossOver or Wine, the game sends graphics commands that assume a Windows-style GPU interface. This project intercepts those commands and converts them into Metal, the native graphics API that Apple Silicon chips use. The conversion happens without going through Vulkan, which is how most similar tools work. The practical result is that a DirectX 9 game can run inside CrossOver on an M1, M2, or M3 Mac and actually reach the GPU properly, rather than failing or falling back to a slow software path. The README says that GTA IV, which was the one game tested, runs at roughly 50 to 90 frames per second on an M1 Max depending on the scene. Only that one game has been tried, other DirectX 9 games may hit unimplemented code paths. Under the hood, the project borrows two existing pieces of open source infrastructure and adds its own Metal backend. The DXVK project handles the DirectX 9 API surface and converts the game's shader programs into an intermediate format. A separate tool called spirv-cross then converts those into Metal's shader language. The d9mt project's own code takes over from there, building the actual Metal rendering pipelines and submitting them to the GPU through a bridge component from another project called DXMT. A small native companion library handles shader compilation and a disk cache, so each shader is only compiled once and loads instantly on subsequent runs. Setting it up requires CrossOver or Wine with DXMT installed, Apple's Xcode command line tools, and a few build tools available through Homebrew. You build three components in order and drop the resulting file into your game's folder, then launch with an environment variable to tell Wine to use it. The project is research-grade software targeting a specific platform combination, and the README is clear that rough edges should be expected.
This repo across BitVibe Labs
Verify against the repo before relying on details.