Virtio + Venus (Vulkan in VMs)
Near-native Vulkan acceleration inside a virtual machine via virtio-gpu and Venus.
Venus is a virtio-gpu path that forwards Vulkan from a guest VM to the host GPU, giving VMs modern 3D acceleration much closer to native than software rendering. It builds on the same virtio-gpu stack used for OpenGL (Virgl), but targets Vulkan.
Venus is cutting-edge and still maturing. It needs a recent host and guest Mesa, a virtio-gpu device with Venus enabled, and matching guest drivers — expect to do some troubleshooting. Have an ordinary QEMU/KVM VM working first.
What you need
- Host: recent
mesaandvirglrendererbuilt with Venus support. - Guest: a recent Mesa with the Venus Vulkan driver, running a Genesi/Arch or similarly current guest.
- A virtio-gpu display device with 3D acceleration and Venus turned on.
Enable 3D acceleration on the VM's virtio video device (virsh edit <vm>):
<video>
<model type='virtio' heads='1'>
<acceleration accel3d='yes'/>
</model>
</video>Venus itself is toggled through the virtio-gpu device options passed to QEMU
(venus=on on the virtio-vga-gl / virtio-gpu-gl device), which libvirt
exposes via QEMU command-line passthrough.
Verify inside the guest that a Venus-backed Vulkan device shows up:
vulkaninfo | grep -i venusBecause Venus moves fast, follow a current walkthrough rather than a fixed recipe — the CachyOS Virtio-Venus guide and Mesa's Venus documentation track the latest working setup, and both apply to Genesi.