Graphics on Windows¶
Apple's GPU has no Windows driver and no public documentation. The stack here is built from Mesa's reverse-engineered AGX support, ported to Windows and driven by a Windows kernel driver.
Measured on a MacBook Pro 14-inch M2 Pro (J414s, Apple T6020, G14S B1) running
Windows on ARM64 under the m1n1 hypervisor.
The stack¶
Direct3D 11 app Vulkan app
│ │
▼ │
DXVK (D3D9-11) │
└──────────┬───────────┘
▼
Honeykrisp (Vulkan ICD, ported)
│
▼
AppleAgxGpu.sys
KMDF render node, ACPI\NTAS0023\0
│
▼
AGX
Direct3D 12 is served by a port of vkd3d-proton on the same Vulkan base.
What works¶
| Capability | State | Evidence |
|---|---|---|
| Vulkan API | Working | Honeykrisp advertises Vulkan 1.4.354 on hardware |
| Compute, buffer and image paths | Passing | Empty, fill, constants, shader verification, meta-clear, IMG2BUF, offscreen render and CPU readback |
| Window-system presentation | Passing | 20 fresh one-frame processes, 120 frames, and 1,200 frames on the physical console |
| Repeated process teardown | Passing | Firmware contexts, heap garbage, sync objects, VMs, BOs, queues and bindings all return to zero |
| Direct3D 11 via DXVK | Working | Feature level 11.0; compute 64/64 and raster/readback 8/8 |
| dxgkrnl / WDDM miniport | In progress | Bring-up transaction and memory/UAT backend build and test clean; controlled hardware start is next |
| Accelerated DWM desktop | Not yet | Needs the WDDM submission/fence/present path and a native D3D11 UMD DDI |
Working is not conformant
The Vulkan result is a runtime milestone, not a Khronos conformance claim. No dEQP/CTS binary is staged on the current machine.
Do not describe the ICD as conformant until the applicable Vulkan CTS profile actually passes. "Advertises 1.4.354 and runs real workloads" and "is a conformant Vulkan implementation" are different statements, and only the first is currently supported by evidence.
Components¶
| Path | Role |
|---|---|
drivers/AppleAgxGpu |
KMDF render node — command streams, memory, sync objects, event completion |
drivers/AppleAgxWddm |
WDDM display miniport, in bring-up |
gpu/honeykrisp-port |
Mesa's AGX Vulkan driver, cross-built for aarch64-windows |
gpu/dxvk-port |
DXVK — Direct3D 9/10/11 on Vulkan |
gpu/vkd3d-port |
vkd3d-proton — Direct3D 12 on Vulkan |
gpu/d3d10umd-port |
Mesa's d3d10umd Gallium frontend as a D3D10 UMD |
gpu/vktests, gpu/vkprobe |
Validation harnesses |
How results are evidenced¶
GPU claims here carry package hashes, driver versions and log locations, so a result can be tied to the exact binary that produced it. A recent validation run recorded:
submit_ioctl = materialize = prepare = 2690
prepare_failures = 0
sync_wait_pends = sync_wait_completions = 1348
wait_eval_error = 0
VM/BO/queue/binding objects = 0
render submissions = 1343
compute submissions = 1347
The zeros matter as much as the totals: every allocated object was returned, and no wait was left unevaluated. A GPU stack that renders correctly but leaks contexts fails differently — later, and harder to diagnose.
Relationship to d3d12agx¶
d3d12agx is a separate research effort on Linux: a native Direct3D 12 driver for AGX with no Vulkan layer at all.
If it matures and is ported to a Windows UMD, it would replace the
vkd3d-port → Honeykrisp half of the chain for Direct3D 12 — one translation
layer instead of two. That is a long way off; today the shipping path for D3D12
is vkd3d-proton on the Vulkan stack described above.