Virtual accelerated GPU device for macOS VMs

vsrinivas1 pts1 comments

Reims vGPU — accelerated graphics for unmodified macOS guestsSkip to content

macOS already ships the driver.Reims vGPU is the device it talks to.<br>Accelerated graphics for unmodified macOS guests under QEMU. The guest uses Apple's own AppleParavirtGPU.kext — no kext to install, no guest driver, stock macOS. Reims vGPU decodes the command stream on the host and executes it through Vulkan.<br>View on GitHubGet started<br>QEMU — macOS 13 Ventura guest · reims-vgpu-pci

$ vm/boot-x86.sh --testing --device reims-vgpu-pci

“macOS 13 on QEMU.” — video by @bzai56

Read this first<br>Alpha means alpha.<br>Reims vGPU is research-quality software for experimentation and bring-up — not a frozen virtualization product. Four facts to calibrate expectations:

Everything can change<br>The QEMU device ABI, boot scripts, crate layout, backend behavior, and supported pathways may change without a stable compatibility guarantee.

macOS 13 Ventura is the target<br>Ventura is the guest release the project is used and tested against, on both working pathways. Other macOS versions may or may not work.

Vulkan works; Metal is planned<br>The working host backend is Vulkan — directly on Linux, and through MoltenVK on macOS. A direct Metal backend is a TODO, not a feature.

Independent of Apple<br>Reims vGPU is an independent open-source project. It is not affiliated with, sponsored by, or endorsed by Apple Inc.

See it run<br>The whole desktop, in a window.<br>macOS 13 Ventura with accelerated graphics on both working pathways — an Apple Silicon host and a Linux x86 host, running the same stock guest.

arm64 · Apple Silicon hostarm64 Ventura guest on macOS, attached via reims-vgpu-mmio.<br>x86_64 · Linux hostx86_64 Ventura guest under KVM, attached via reims-vgpu-pci.

How it works<br>One command stream, guest to GPU.<br>The path a frame takes from an app inside the VM to pixels in the host window. All device logic lives in Rust; the C shim stays thin on purpose.

01<br>Metal.framework<br>Apps in the guest call Metal, exactly as they would on real hardware.

02<br>AppleParavirtGPU.kext<br>Apple’s own paravirtual GPU driver ships with macOS — and binds to the Reims vGPU device unchanged.

03<br>Command stream<br>Rings over PCI BAR (x86_64) or sysbus MMIO (arm64) carry Metal-style commands to the host.

04<br>QEMU shim<br>A deliberately thin C layer in the vendored QEMU fork wires QOM, MMIO/BAR, IRQ/MSI and forwards into Rust via HostOps.

05<br>Rust core<br>Protocol decode, device model, memory mapping, scheduling. Nothing fails silently — declined commands carry typed reasons.

06<br>Host GPU<br>Vulkan on Linux; Vulkan via MoltenVK on macOS. Shaders translate Metal AIR → SPIR-V through metal2vulkan. Direct Metal: planned.

Pathways<br>Three ways to run it.<br>Two combinations work today and one is on the bench — each pairs a specific host, guest, and backend. macOS 13 Ventura is the recommended guest on all of them.

HostLinux x86_64, KVM<br>Guestx86_64 macOS 13 Ventura<br>Devicereims-vgpu-pci (PCI)<br>BackendVulkan via metal2vulkan<br>Bootvm/boot-x86.sh

HostApple Silicon macOS, HVF<br>Guestarm64 macOS 13 Ventura (vmapple)<br>Devicereims-vgpu-mmio (sysbus MMIO)<br>BackendVulkan via metal2vulkan, through MoltenVK<br>Bootvm/boot-arm64.sh

HostApple Silicon macOS, HVF<br>Guestarm64 macOS 13 Ventura (vmapple)<br>Devicereims-vgpu-mmio (sysbus MMIO)<br>BackendMetal, direct — not yet implemented<br>Bootvm/boot-arm64.sh

Contribute<br>How you can help.<br>The project is at the stage where careful systems work moves the needle. Contributions are especially welcome on:

correctness & visual glitches<br>synchronization bugs<br>command-stream decoding<br>Metal ↔ Vulkan translation<br>more reliable host/guest combinations<br>The project family<br>reims-vgpuMain repo: QEMU shim (vendored), Rust device & backends, VM scripts.metal2vulkanMetal AIR → SPIR-V shader translator, native Rust emitter. Library + CLI.qemu-reims-vgpuQEMU fork carrying the thin device shim, vendored as vendor/qemu.

macos vgpu reims guest ventura device

Related Articles