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