[Spice-devel] [protocol RFC 0/2] RANDR support via QXLHead + SpiceHead

Gerd Hoffmann kraxel at redhat.com
Mon May 7 00:03:02 PDT 2012


  Hi,

>  1. Guest enables a new monitor:
>  2. Guest pushes QXLHead command to command ring
>  3. Server sends SpiceHead message on the ring's display channel.
>  4. Client creates a window out of [x, y, width, height] scanning out of the primary surface (there is one associated primary with the display channel)

Iziks original idea for that one was to just use additional surfaces for
the additional heads.  QXL_IO_{CREATE,DESTROY}_PRIMARY write an id
because of that, which is forced to be zero right now.  IIRC the plan
was to just allow non-zero values for more heads there, so each
display/head has its own primary surface.

One obvious issue with that is that the QXLDevSurfaceCreate struct lacks
an field to pass on the surface id.

A possible alternative approach is to just use a normal SurfaceCmd and
use a flag to indicate that this specific surface is supposed to be a
new head.

> Some other notes:
>  a. To disable a monitor, send (id, 0, 0, 0, 0) (So there remain invalid range of
>  values {(id, x, y, width, height) | max(x, y, width, height)!=0 and min(width,
>  height) = 0})

Would be a simple surface destroy in that case.

cheers,
  Gerd


More information about the Spice-devel mailing list