[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 
acceleration.

- 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).
(see: 
http://wwwlehre.dhbw-stuttgart.de/~lombardo/exp_call_tree_spicy.png)

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 
different?

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.

Thanks!

Mario


More information about the cairo mailing list