SPICE On KVM/QEMU Works Towards Gallium3D
Alon Levy of Red Hat presented at FOSDEM last weekend about "Xspice: Integrating spice-server into Xorg", during which he talked a lot about their graphics driver plans. Right now QEMU/KVM really doesn't have any guest 3D support in the manner that VirtualBox or VMware graphics exposes OpenGL/DirectX support to guest systems and in turn passes the graphics calls onto the host system so it can be executed on bare metal.
Right now with QEMU/KVM you just go without acceleration or are left banging LLVMpipe on the CPU. Fortunately, the SPICE project is coming up with a spicy solution for better graphics. (For those not familiar with SPICE, see spice-space.org.)
VirtualBox has its own graphics driver stack while VMware implements a virtual Gallium3D driver with kernel DRM and it fits nicely into the common Linux stack. (There's actually an article going up tomorrow on Phoronix that's looking at the "vmwgfx" performance.) The approach that the SPICE developers are looking at is very similar to VMware's approach of complying with the existing Linux infrastructure.
Right now what SPICE users have in terms of driver support for their virtual GPU is the xf86-video-qxl DDX, which can work without any kernel DRM. However, the Red Hat developers have been working on a DRM driver as well as UXA acceleration support as was recently talked about on Phoronix.
Alon Levy mentions that this currently out-of-tree SPICE QXL DRM kernel driver is working right now for the frame-buffer and on the X.Org side with xf86-video-modesetting (the generic KMS X.Org driver). The xf86-video-qxl driver is still being re-written to handle support for the DRM/KMS driver while maintaining compatibility with the existing mode-setting paths. The QXL graphics ioctls for the kernel are still a work in progress.
For offering 3D support over SPICE to both Linux and Windows guests is a planned (but yet-to-be-written) Gallium3D driver. With also supporting Microsoft Windows, the Direct3D state tracker was mentioned for possible use during this presentation. The SPICE 3D plans date back to last year after they first had a "false start" when trying to use Xen's Gallium3D driver (vGallium) in their environment. Going with the Xen Gallium3D driver, which is not living in Mesa's code-base and is no longer actively maintained, the Red Hat developers deemed it a dead-end.
Aside from 3D, other missing general features at the moment for this virtualization path is multiple monitor support, sound/USB/smart-card support still being a work in progress, and namely support for handling an existing X.Org server like x11vnc, which would be dependent upon GPU hot-plug support working for X.
As far as when the new DRM and/or Gallium3D driver will be ready for SPICE users, that is really an open question at this point. Alon Levy isn't sure and it's just a few virtualization developers working on it with what appears to be little to no collaboration from the X.Org/graphics developers at Red Hat with the actual graphics driver experience.
In ending, here's a look at the planned graphics architecture: