EXA performance problem

Christoph Bartoschek bartoschek at or.uni-bonn.de
Sun Nov 27 17:41:51 PST 2011


I have new information. I am no longer sure whether it is a problem with 
EXA.

I have a testcase that currently takes 90 seconds to draw all 
rectangles. I see that in damage.c two functions are mainly used:

damagePolyRectangle
damagePolyFillRectangle

The first function calls for each given rectangle up to four times 
damageDamageBox (pDrawable, &box, pGC->subWindowMode);
which adds the box to a region. The function then calls damageRegionAppend.

This part takes in sum 30 seconds of my testcase. I think the code has 
quadratic behaviour here becuase it adds rectangle by rectangle instead 
of first adding them to a region and then calling damageRegionAppend. I 
think removing the quadratic behaviour can reduce the runtime significantly.

About 60 seconds are spent in the calls

(*pGC->ops->PolyRectangle)(pDrawable, pGC, nRects, pRects);
(*pGC->ops->PolyFillRect)(pDrawable, pGC, nRects, pRects);

However I do not yet know why they are so slow.

Is damage.c part of EXA?

Christoph



More information about the xorg mailing list