[Spice-devel] spice-gtk on MAC OSX

Marc-André Lureau mlureau at redhat.com
Thu Oct 10 13:06:22 CEST 2013



----- Original Message -----
> Marc,
> 
> as I read your message I started to dig deeper into the timings of the
> spicy process. Using the "Instruments" App on OSX I sampled the spicy
> and figured out that the major time while moving a Window within the
> spice session (on the guest VM) seems to be used by calls like
> canvas_draw_alpha_blend (see picture).

> On windows this may be replaced by gdi_canvas_draw_alpha_blend but how
> is this drawing realized within a linux client?

It's using the same pixman functions. Even on linux, we currently use it.

In your graph, it is showing 100ms of cumulative time, that's not so much. Draw alphablend is an expensive function, and it's used frequently.

Couldn't there be another reason for slowness than purely CPU?

Is the CPU at 100% when opening IE for 3s?

have you tried with spice-gtk git, which has some performance improvement?

> I can´t believe Linux is as slow for the renderings as OSX. Just to have
> an example: Opening an Internet Explorer within the guest (fullscreen,
> 1024x768) takes about 3 seconds to be redered on OSX. On a Windows build
> of the spice client you cannot even look so fast - on the same VM.
> 
> I started to make a skeleton for quartz_canvas.[ch] files. But I didn´t
> find where I can call the init-function to overwrite the OP-Structure
> with my canvas (once I have them ;-) ). How is this implemented for the
> gdi overwriting?

The init function is called from the client.

gtk/channel-display.c
387:    sw_canvas_init();


Since spice-gtk only supports sw canvas atm, there is no facility to use a different canvas (spicec used to have). You can just try replacing it at build time, or use a runtime selection mechanism.

> However it seems as you are right regarding SDL - the major calculating
> time seem not be used for cairo calls.
> 
> Cheers,
> Mario
> 
> 
> 
> Am 07.10.2013 14:53, schrieb Marc-André Lureau:
> > ----- Original Message -----
> >> Marc,
> >> 
> >> thank you for your message.
> >> 
> >> Cairo-SDL can be realized in two ways:
> >> 
> >> // Integrate SDL into cairo
> >> http://www.cairographics.org/SDL/
> > 
> > I wonder why that would make it faster than a cairo quartz surface /
> > backend.
> > 
> >> // Use the integration (even if this is not up to date - this may help
> >> me to understand)
> >> http://cgit.freedesktop.org/~joonas/cairosdl/tree/README
> >> 
> >> Regarding the canvas I did not find any up-to-date implementation of
> >> Quarz in C. We will need to use some wrappers in Obj-C exporting the
> >> relevant funtions. I would try to make such an implementation, once I
> >> understood how this works. But I did not understand why there are so
> >> many more funtions implemented in sw_canvas.c compared to
> >> gdi_canvas.c.
> >> Is there not the need to implement them all at present? If I want to
> >> start with a kind of "quarz_canvas.c" - what would be the minumum set
> >> of
> >> functions?
> > 
> > Disclaimer, I have little experience with canvas code.
> > 
> > The higher level functions are those listed in first half of
> > SpiceCanvasOps struct. If you implement the same as the GDI canvas,
> > you should be good.
> > 
> > The rest of the functions are needed in acase base case: if you don't
> > override all higher-level functions, you can use the common code in
> > canvas_base.c and implement the simpler functions called from there.
> > 
> >> Kind reagards,
> >> Mario
> >> 
> >> 
> >> Am 07.10.2013 13:12, schrieb Marc-André Lureau:
> >> > Hi
> >> >
> >> > ----- Original Message -----
> >> >> Hi,
> >> >>
> >> >> I just compiled the spice-gtk client (spicy) on OSX
> >> >> (http://www.spice-space.org/page/OSX_Client/Build).
> >> >>
> >> >> I am able to connect to the spice server using this client but it is
> >> >> more slow than any VNC client I know.
> >> >>
> >> >>
> >> >> I looked into the code and found two different places where this
> >> >> client
> >> >> seems to be different than the x11 or GDI versions:
> >> >>
> >> >> 1.) It uses sw_canvas.c
> >> >> 2.) It uses spice-widget-cairo.c
> >> >>
> >> >> Is it possible that the slow rendering results in the execution time
> >> >> one
> >> >> of those two files? Which investigation would make more sense: Would
> >> >> it
> >> >> be better to provide a SDL cairo version or should it accelerate the
> >> >
> >> > What is "a SDL cairo version"?
> >> >
> >> >> client when there is a canvas option optimized for OSX (quarz I
> >> >> guess)?
> >> >
> >> > Gtk+ uses Cairo for drawing. If it's slow on OSX, it can probably be
> >> > optimized by using the right drawing API.
> >> >
> >> >> Is it possible to test the gl canvas on OSX? I didn´t found anything
> >> >> about the gl implementation in the configure script.
> >> >
> >> > Spice-gtk doesn't support GL canvas yet. The GL canvas is more limited
> >> > that the SW canvas, and it is generally much slower for today
> >> > computers.
> >> _______________________________________________
> >> 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