Clemens Eisserer wrote:
When you draw a line or a curve using cairo, it is decomposed into trapezoids which are rendered by RENDER.Sorry if this question is quite naive, but I wonder why cairo seems to generate such a large amount of overhead at all - why can't simple operations like fills and blits which are the most used not be executed just like it was before switching to cairo just using plain x? I do not mean using cairo+x but furthermore let cairo do stuff that can be done using x-core do by x-core and not create trapezoids out of every curve? Seems I don't get something...
The core things that draw lines and curves have no concept of how to blend the colour of the drawing to whatever is beneath it, using the colouring model that Xrender uses. The core colouring model all goes thru X colour map tables, so you can't do nice simple mathematical operations on colors. The idea of cairo is that everything is decomposed (tesselated) into polygons, then sent to the server for rendering. This means any shape can be rendered without adding a new X protocol command. However, the tradeoff is greater bandwidth usage.