[Pharo-dev] About Athens and Cairo

Alexandre Bergel alexandre.bergel at me.com
Sat Dec 14 05:04:05 EST 2013


Thanks Kilon for the explanation.

Alexandre


On Dec 14, 2013, at 10:56 AM, kilon alios <kilon.alios at gmail.com> wrote:

> No cairo is not GPU accelerated , rendering is done by your CPU , but of course the graphic card is the one that display things. 
> 
> here is a detailed explanation -> http://lists.cairographics.org/archives/cairo/2012-October/023609.html
> 
> please note that even in the case of opengl backend I very much disagree that this is true hardware acceleration. What the opengl backend is doing is to render cairo surfaces as opengl textures. So even though the texture themselves are hardware accelerated and will even use the the memory of the GPU the process of rendering to the texture will happen solely on the CPU. So its more like a CPU library trying to be hardware accelerated. 
> 
> But even using the OS backends like Quartz is not quite the same. Because you still call C code and C code is executed by your CPU and that C code suppose to call GPU functions. Opengl speed is for the very reason of shaders meaning that it compiles programs that are run solely on the gpu hence true GPU acceleration.  
> 
> Saying that you should not be experiencing slow downs unless you were doing something really intense. I have seen benchmarks of Cairo and they are blazing fast. Usually slow down are primarily because of bad code. I have seen animation in athens take out 50% of my dual core and others only a 5%. Cant say I am sure what happens under the surface maybe Igor may offer a more detailed look into this. I do feel however that slow speed are 99% to be blamed on Pharo way of rendering things. 
> 
> Something similar happens for browsers, SVG is GPU accelerated, Javascript is super fast but it only takes the slowness of DOM (HTML) itself to bring the whole system on its knees. It only take one slow part to ruin the experience.  I think a solution to this would be to bypass pharo rendering completely, create a new window and render directly to that window running Pharo headless. 
> 
> 
> On Sat, Dec 14, 2013 at 10:58 AM, Alexandre Bergel <alexandre.bergel at me.com> wrote:
> Hi!
> 
> I have some random questions about the Cairo binding supported by Athens.
> 
>  - the rendering is done by the graphic card isn’t it?
> 
>  - Once rendered, is the produced bitmap copied by the CPU in Pharo? With Roassal3d, we are facing a problem of performance because there is an unnecessary copy between the graphic card and the Form displayed by Pharo. I guess we have the same problem with Cairo.
> 
>  - Is there an example of clipping in Cairo?
> 
>  - Any idea how efficient the clipping is? I mean, will I gain a lot by not displaying elements located outside the visual part or should I leave the clipping do the job?
> 
> Cheers,
> Alexandre
> --
> _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
> Alexandre Bergel  http://www.bergel.eu
> ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
> 
> 
> 
> 
> 

-- 
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel  http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.







More information about the Pharo-dev mailing list