The Current State Of VIrtIO-Based Virgil3D
Late last month at the KVM Forum in Edinburgh was a status update on Virgil3D, the research project by David Airlie for a VirtIO-based 3D GPU for QEMU that's powered by Mesa's Gallium3D.
Virgil3D was announced in July as an experimental way for QEMU 3D support to finally offer OpenGL/3D support for QEMU guests.
The last update by David Airlie on the project was in early October but a few weeks later he presented his experimental project to the virtualization fans and experts at the Linux Foundation's KVM Forum.
The Linux-focused Gallium3D-based project is making headway but isn't yet ready for end-users. The VirtIO interface comes down to a VirtIO ring for managing contexts and 3D resources, DMA-like transfers, mode-setting, command stream submission, capabilities, and IRQ fencing. The virtual GPU's renderer converts Gallium states to GL, converts TGSI shaders to GLSL shaders, OpenGL contexts are created on the host-side for each guest context, and allows for GLSL 1.30 support at the moment.
Host requirements for now are having an OpenGL 2.1 driver with GLSL 1.30 support, but the host GPU driver doesn't need to be Mesa/Gallium3D-based since the virtual Gallium3D driver converts to (generic) GL/GLSL state. The exposed guest OpenGL support is nearly up to OpenGL 3.0.
As part of this work is also the matter of porting QEMU to SDL2 in order to obtain multi-window support, AGRB cursors, better OpenGL and EGL support, and different input capabilities. Some other issues facing David's project is libvirt integration security, DRM render-nodes, using EGL and DMA-BUF for sharing rendered images, and using GLX/EGL to composite the final rendered image.
For those wanting many more details on Virgil3D see the PDF slides on Google Docs or the YouTube video stream embedded below.
Latest Articles & Reviews
Latest Linux News
Most Viewed News This Week