[Spice-devel] RFC: Integrating Virgil and Spice

Hans de Goede hdegoede at redhat.com
Thu Oct 10 12:04:31 CEST 2013


Hi All,

So trying to summarize what has been discussed before:

The basic idea for virgil + spice integration is to use qemu's console
layer  as an abstraction between the new virtio-vga device Dave has in
mind: http://airlied.livejournal.com/
and various display options, ie SDL, vnc and Spice.

The console layer would need some extensions for this:

1) Multi head support, this will be in the form of virtual gfx cards
registering 1 or more QemuConsoles (one for each virtual connector),
with some infrastructure bits in the ui core + frontends to allow
enabling/disabling them.

2) In order to support multi head (and argb cursors) with SDL,
qemu will get an SDL-2 ui, this will be a new ui parallel to the
existing SDL ui, note only one can be build at the same time.

3) Virgil will render using the host gpu, using EGL to talk to
a drm render node. For non local displays the rendered contents
will be read back from the gpu and then passed as a pixmap to the
ui to transport over the network

4) For local displays we want to avoid the (expensive) read back
from gpu memory, this requires passing the rendering context to
the ui. There are 2 different cases here:

4a) A pure local ui running in the qemu context, ie sdl-2 and gtk

4b) The SDL and gtk uis are only useful for short lived vms, for
a longer running vm, we want the vm to be able to run headless,
and allow the user to connect to it occasionally to view the vm's
"monitors"

5) Traditionally 4b this is done using vnc / spice over loopback,
but for Virgil we will want to add some smarts to avoid the expensive
gpu mem readback. libvirt already uses unix pipes rather then tcp
sockets when making a local connection. The plan is to use fd passing
over these pipes to give a spice-client viewing a local vm a handle
to the render context, which it can then use to directly display
the rendered frames. This will be implemented in spice-gtk, so that
all spice-clients using spice-gtk (virt-manager, virt-viewer, boxes),
automatically get support for this.


So comments or corrections anyone? Note the intend of this summary is
to serve as a basis for my talk at kvm-forum.


Regards,

Hans


More information about the Spice-devel mailing list