[cairo] Very slow CGContextDrawImage in cairo-quartz-surface.c

Mario ml at kernelobjects.org
Thu Oct 17 08:09:34 CEST 2013

Hi Stefan,

Am 17.10.2013 00:10, schrieb Stefan Salewski:
> On Wed, 2013-10-16 at 22:31 +0200, Mario wrote:
>> Hi,
>> i just try to compile spice-gtk for OSX. But the rendering algorithm
>> does not seem to fit for a remote desktop application.
> I never heard about that tool. Did you regard their FAQ about "Poor
> video performance" ?
> http://www.spice-space.org/page/FAQ

thank you for your message.

Unfortunately this FAQ is related to something absolutely different :(
It is describing the GFX power of a virtual spice-display adapter 
(called QXL-adapter) within a virtual machine on a virtual host.

But I´m talking about the client (to display the virtual monitor). I 
don´t want to make sophisticated calculations on my guest VM. I just 
move a window (as shown in the video link).

Please let me summarize:
- On Linux spice-gtk runs like a charm but I cannot compare directly as 
the linux configuration typical uses the x11 display drawing with its 

- On Windows spice-gtk runs as well quite fast. The configuration is 
almost the same for spice-gtk (gtk for UI, cario for drawing and pixman 
for rendering). The main difference is located in the cairo 
configuration on windows. It uses gdi for drawing.

- On Apple OSX spice-gtk works but it is not usable. I debugged the 
process and its calls and I figured out that the calls to cairo 
(cairo_fill() in this case) are most expensive. On other architectures 
that is not the case (no so significant).

So back to my origin mail I would like to know if there is any 
suggestion to accelerate this drawing. Does Quartz prefer any specific 
data format? Or is the way spice-gtk draws the canvas better realized 

Spice uses simply the drawing of cairo directly - no curves, polygons, 
... - just drawing. The canvas calculation is done by pixman. And pixman 
calls are way less expensive than this drawing function.

My goal is to provide spice a patch for upstream to enable the community 
to use this client on OSX as well. It would be great to have support.



More information about the cairo mailing list