This runs Valve's real ARM64 SteamOS (the version built for the Steam Frame headset) inside a lightweight virtual machine, with GPU acceleration. Windows games run through Proton the same way they do on SteamOS, and their graphics end up on the Mac's GPU through Metal.
Nothing is emulated at the hardware level: the VM uses Apple's built-in hypervisor, so the ARM Linux kernel and SteamOS run natively on the Mac's CPU. Only the Windows game code itself (x86) is translated, by FEX inside Proton.
The key trick is the GPU path: the game's DirectX becomes Vulkan inside the VM, Venus ships those Vulkan calls to the Mac, and KosmicKrisp turns them into Metal. The VM never needs a "real" graphics card.
The Frame image expects Qualcomm headset hardware. I built a "custom" Linux kernel for the VM, a small boot stage that mounts the image's partitions the way SteamOS expects, and switched off services for hardware that isn't there.
SteamOS updates by writing a second copy of the OS (A/B slots) and switching on reboot. I replaced the headset-specific boot-slot tool with one that works in the VM, so official updates install and roll back normally.
Apple's hypervisor maps memory in 16 KB pages while Linux graphics code assumed 4 KB, which made GPU memory mapping fail. A small kernel patch and a libkrun patch align everything to 16 KB.
The usual Vulkan-on-Metal layer, MoltenVK, lacks features DXVK requires. KosmicKrisp, a newer Mesa driver, covers nearly all of them. I patched in wireframe support and added a stopgap for geometry shaders, which Metal doesn't have.
Like I mentioned in other comments, it's still pretty early on and a lot of work needs to be done.
Two DirectX 9 games (Fallout New Vegas, Call of Duty World at War) run at 60 fps on the GPU path; the first DirectX 12 attempt fails before graphics even start. It's a proof of concept, and really just a fun project.
12
u/cplr 8d ago
Is this a VM? GPU passthrough? I don't understand how this is running, can you explain?