Run QEMU hardware-accelerated graphics on headless Debian hosts without installing an Xorg server or desktop environment.
qemu-render provides the host-side Mesa and virglrenderer runtime used by QEMU for OpenGL, Vulkan/Venus, and native DRM contexts. It keeps hardware-accelerated EGL/GBM rendering, hardware Vulkan, VirGL/Venus, and AMDGPU/i915 native-context support available on servers, containers, and appliance-style systems while leaving out runtime components that are unnecessary for this use case.
- Designed for headless Debian hosts with no Xorg server or desktop environment
- Hardware-accelerated EGL and GBM rendering through Mesa on Intel and AMD GPUs
- Supports the Mesa
crocus,iris,r600, andradeonsiGallium drivers - Hardware Vulkan through Mesa ANV and HasVK on Intel GPUs and RADV/ACO on AMD GPUs
- Custom virglrenderer with VirGL, Venus, and
virgl_render_serversupport - Native DRM context support for AMDGPU and Intel i915
- QXL support through a reduced SPICE server runtime for QEMU's VNC display path
The package version-provides:
libgbm1
libegl-mesa0
libspice-server1
libvirglrenderer1
It also provides the virtual vulkan-icd package and conflicts with/replaces Debian's mesa-vulkan-drivers, because qemu-render ships its own Intel and AMD Vulkan ICDs. It conflicts with/replaces virgl-server for the same reason around virgl_render_server. On a headless host, this lets Debian's official QEMU modules satisfy their normal runtime dependencies without installing the broader stock Mesa Gallium/Vulkan/LLVM and SPICE multimedia runtime stacks.
Warning
Installing this package on a desktop, workstation, or any host that relies on the stock Mesa stack can remove or replace those packages and may break host graphics. Do not install it on such systems unless you fully understand and accept this risk.
The Mesa portion contains:
crocusfor older Intel generations supported by Gallium Crocusirisfor newer Intel GPUsr600for older AMD Radeon GPUs based on TeraScaleradeonsifor newer AMD Radeon GPUs based on GCN and RDNA- ANV for newer Intel Vulkan-capable GPUs
- HasVK for older Intel Vulkan-capable GPUs
- RADV with ACO for AMD Vulkan-capable GPUs
- EGL and GBM for headless rendering
The Vulkan build contains only the Intel and AMD hardware ICDs needed for this project; Lavapipe and optional Vulkan layers are not included. Intel ray tracing is disabled to avoid the separate Intel CLC/ray-tracing compiler path. Debian's small libvulkan1 loader is used at runtime.
LLVM is available only while compiling Mesa build-time tools. The final OpenGL and Vulkan runtime is built with both -Dllvm=disabled and -Damd-use-llvm=false, and the finished package is verified to contain no direct or transitive LLVM runtime dependency.
The virglrenderer portion provides libvirglrenderer.so.1 for QEMU's normal VirGL path and also builds Venus support together with virgl_render_server.
It additionally enables the AMDGPU and Intel i915 native DRM renderers, allowing QEMU to expose native DRM contexts to compatible Linux guests.
The renderer is built with:
-Dplatforms=egl
-Dvenus=true
-Ddrm-renderers=amdgpu-experimental,i915-experimental
-Drender-server-worker=thread
-Dunstable-apis=true
-Dtests=false
-Dvideo=false
The thread worker setting applies to the external render-server path used by Venus; it does not change QEMU's normal in-process VirGL renderer. Thread workers are used so all Venus contexts in the render-server process share the device-memory budget accounting.
The native-context backends use virglrenderer's upstream amdgpu-experimental and i915-experimental renderer options.