[cairo] why cairo is so slow on Windows, is there any plan to improve cairo performance on Windows?

Rainman Lee rainman.lee at gmail.com
Mon Jun 29 19:20:31 PDT 2009


I did not use DDB bitmap :@)
I just created a image surface from a png file and a cairo win32
surface from a window dc,
then fill the win32 surface with the image surface by rotation
transforms from 0 degree up to 360 degree.

On Tue, Jun 30, 2009 at 4:01 AM, Owen Taylor<otaylor at redhat.com> wrote:
> On Mon, 2009-06-29 at 12:48 +0800, Rainman Lee wrote:
>> Hi everyone,
>> I use cairo on windows for a while. I found that cairo was so slow
>> whenever fill a surface to another with scaling, rotating, or even a
>> non-integer translaton. I compared it with GDI+, which is at least 7
>> times faster than cairo :(
>>
>> It seems that if a source pixel can not map to a dest pixel which has
>> an integer coordinate, cairo will use a subpixel algorithm, and it
>> will terribly hurt the performance. I made a filling test, firstly by
>> a 0.5 pixel step horz translation transform, and a 1 pixel step horz
>> translation transform then, each of which looped 100 times. the first
>> case was extremely slow than the second one.
>>
>> Is there any idea to speed up cairo in this case? I tryed to set
>> antialias with none, but it had no effect.
>
> Only a very small subset of Cairo can be done using hardware
> acceleration via the GDI API. For everything else, if your bitmap
> is in video memory (a DDB) Cairo will need to read, make the changes
> and write back. This is very slow.
>
> For complex rendering, you are much better off rendering to a DIB.
>
> - Owen
>
>
>


More information about the cairo mailing list