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
_______________________________________________
xorg@lists.freedesktop.org: X.Org support
Archives: http://lists.freedesktop.org/archives/xorg
Info: http://lists.freedesktop.org/mailman/listinfo/xorg
Your subscription address: arch...@mail-archive.com

Reply via email to