[Spice-devel] Add support for A8 bitmap format

Alon Levy alevy at redhat.com
Sun Jun 17 03:38:18 PDT 2012


On Sun, Jun 17, 2012 at 12:51:31PM +0300, Yaniv Kaul wrote:
> On 06/17/2012 12:03 PM, Alon Levy wrote:
> >On Sat, Jun 16, 2012 at 01:57:49AM -0400, Yaniv Kaul wrote:
> >>----- Original Message -----
> >>>Hello,
> >>>
> >>>The following patches add support for a new A8 bitmap format, and for
> >>>LZ compression of it. This format is heavliy used by the X server
> >>>Render extension for glyphs and geometry information.
> >>>
> >>>I have verified that the patches with an experiemental version of the
> >>>QXL X driver that can generate such pixmaps in the video memory of
> >>>the
> >>>QXL device.
> >>>
> >>>Thanks,
> >>>Soren
> >>- I'm not sure I understand how'll it work with older clients (need feature negotiation, but from guest driver to server and from server to client?). The driver would have to follow whatever the client that is connected to it can work with? I guess we need to solve the general problem of how a new feature in the driver that affects the client should be handled, this is a private case of it.
> >>Y.
> >>
> >Perhaps this is really required in this case. We could do something like
> >the following:
> >
> >Device memory: add client_capabilities == SPICE_DISPALY_CAP_*
> >Device added INTERRUPT_CLIENT_CAPS_UPDATED
> >Server QXLInterface->update_client_capabilities
> >Server & Client SPICE_DISPLAY_CAP_A8
> >
> >Only problem with this approach is that the driver doesn't have an
> >interrupt handler, and it won't until we move to KMS.
> >
> >Heavy handed alternative:
> >  - Filter the messages in the server and translate any A8 message to ??
> 
> I'm in favor of this one.
> 
> However, I also forgot about the following scenario:
> Running old spice server, old QXL driver in VM on host A
> VM migrates to host B, which has a new spice server, supporting A8.
> User updates driver to get A8 functionality.
> VM migrates back to host A (reminder: has old server that is not aware of
> A8).

So you can't have a new driver with old server. To prevent that, qemu
needs to:
 * check server version, and report that to driver. This implies
   re-reporting on migration, which implies interrupt mechanism or
   polling, with same problem that no interrupt handler exists.
  - or
 * implement the caps above, they will default to [] (empty list) unless
  the server sets them, so an old server will report no caps. (same
  problem with interrupt handler)
  - or
 * implement the below idea, and then since the command lines of A & B
   must be identical to migrate (do they?) the problem doesn't occur.

> 
> Not sure what happens now.
> Y.
> 
> >  - Don't allow clients to connect without CAP_A8 if server advertises
> >    it, & advertise it iff some magic qemu command line, i.e. -device
> >    qxl,use_a8=1 . Driver will see the same parameter.
> >
> >I guess I'm advocating the last option - for older client support we run
> >without use_a8=1, also for windows guests. For better performing new
> >xf86 driver we use use_a8=1 and require new clients as a result.
> >
> >>>
> >>>_______________________________________________
> >>>Spice-devel mailing list
> >>>Spice-devel at lists.freedesktop.org
> >>>http://lists.freedesktop.org/mailman/listinfo/spice-devel
> >>>
> >>_______________________________________________
> >>Spice-devel mailing list
> >>Spice-devel at lists.freedesktop.org
> >>http://lists.freedesktop.org/mailman/listinfo/spice-devel
> 
> 
> _______________________________________________
> Spice-devel mailing list
> Spice-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/spice-devel


More information about the Spice-devel mailing list