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