[cairo] recursive quad-tree, or bounding box of changed area during drawing?

Leon Woestenberg leonw at mailcan.com
Sat Jun 3 18:54:07 PDT 2006


Hello all,

Soeren Sandmann wrote:
> Carl Worth <cworth at cworth.org> writes:
>
>   
>> Those results are aberrant. There is no good reason that the xlib
>> backend should ever be significantly slower than the image backend,
>>     
>
> One thing that will cause the exact same code to run much slower in
> the X server, is if the destination ends up in video memory. Reading
> from video memory happens at speeds like 13 MB/s.
>   
Exactly, in a more general sense, whatever cairo renders must be brought 
to a phyical medium. If there is a bottleneck in that interface, we 
might as well ask cairo *what* it has actually rendered, so that we 
smartly use the interface bandwidth available.
> As an example, in such a scenario filling three alpha rectangles of
> size 1000 x 1000 x 32 bit will take more than a second to render.
>   
Given I render to 1920x1080x32 to video memory, that's exactly why I 
asked about querying cairo for a dirty region. I will probably be doing 
many things in a image back buffer for the exact same bandwidth problem.

This thread has run off in a different direction considering 
optimization of performance of the software above the interface (I am 
aware there is much to be done there, but it is irrelevant to what I 
asked) and X (which is not what I use). My aim was to see if the 
software above (mostly cairo) allows me to query what has to be put 
through the interface.

But given the input from the list, the canvas approach seems most 
appealing, as its at the same level as the software that manages back 
buffers and initiates DMA blits and allows me to stay independent of the 
vector rendering engines.

Regards,

Leon.


More information about the cairo mailing list