QEMU
-
Emulator and virtualizer, used as use space component of hypervisor.
Role in GPU virtualization:
- Emulates the VirtIO-GPU device for guest VMs. ie 1 GPU would be shared among guest VMs
- Provides shared memory rings (virtqueues) for command submission and data transfer
- Loads and integrates with Virglrenderer, which does the actual rendering work
Virglrenderer
-
virtual GPU rendering engine developed by RedHat and Mesa. Runs on the
host as part of the QEMU process
Implements two main “rendering backends”:
- Virgl (for OpenGL virtualization)
- Venus (for Vulkan virtualization)
Venus Server
-
A component inside Virglrenderer implementing the Venus protocol on the
host side. The Venus Server is the receiver of the serialized Vulkan
command stream (sent by the Venus Client). It de-serializes the Venus
stream and executes the equivalent Vulkan commands using the host’s
Vulkan driver.
Venus Protocol
-
A binary protocol for Vulkan command serialization which are sent
between Venus Server & Venus Client