[Spice-devel] [RFC 2/2] add shared memory display channel support

Alon Levy alevy at redhat.com
Wed Aug 14 07:22:52 PDT 2013


> 
> 
> ----- Mensaje original -----
> > Hi,
> > 
> > On 08/13/2013 08:33 PM, Alon Levy wrote:
> > > The new protocol is an extension optionally supported by the client if
> > > setting this capability bit.
> > >
> > > It includes 4 new messages, 3 are new messages (SHM_OFFER, SHM_REPLY,
> > > SHM_DAMAGE) and one replaces an existing message (SURFACE_CREATE_SHM
> > > replaces
> > > SURFACE_CREATE), plus a capability bit that both server and client
> > > advertise
> > > (SPICE_DISPLAY_CAP_SHARED_MEMORY).
> > >
> > > If the server sees the client capability, it will send
> > > MSG_DISPLAY_SHM_OFFER right after the display channel handshake.
> > >
> > > client replies with MSGC_DISPLAY_SHM_REPLY
> > >   - accepted = 0
> > >    - nothing changes, return to normal behavior
> > >   - accepted = 1
> > >    - shared memory behavior commences as described below.
> > >
> > > In shared memory mode:
> > > 1. every message read from the qxl device (via the qxl interface
> > > interface_get_command) is:
> > > 1.1 immediately rendered into the framebuffer
> > >      * since the framebuffer is a shared memory segment, the client can
> > >      immediately use it.
> > 
> > So any drawing will cause rendering? IE the trouble some apps the codewaver
> > guys were trying to
> > deal with which draw things 1 pixel at a time will cause 1000-s of renders
> > /
> > second ?
> > 
> > Not sure if this is a good idea, we should probably do some batching here,
> > or
> > simply render
> > X times / second (skipping rendering when there is nothing to render).
> 
> Isn't that what we are already doing? So shouldn't it be addressed
> separately?

No, we don't do that. We drop operations in the pipe if a new operation comes along - so basically we only drop operations if the network is slow.

DFPS is in the X driver, not in the X sever.

It can be done both in local and remote modes (I think that's a better distinction then with shared / without shared memory), with different collection (batching) times.

> 
> From client side pov, gtk/gtk3 is syncing redrawing with a paint clock,
> hopefully already.
> 
> > Anyways as Christophe said, benchmarks would be good, those will hopefully
> > also help to determine
> > what is the best thing to do here.

Benchmarks so far:
video playback is slightly faster (3% +-1%).
PerformanceTest 8.0 is worse - both in results and in cpu (taking remote-viewer and qemu together).

My methodology is messy - looking at top while running the tests. For video playback it was fairly consistent, for PerformanceTest less so.

> > 
> > Regards,
> > 
> > Hans
> > _______________________________________________
> > 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