EXA performance problem

Maarten Maathuis madman2003 at gmail.com
Mon Nov 28 09:53:04 PST 2011


On Mon, Nov 28, 2011 at 4:49 PM, Christoph Bartoschek
<bartoschek at or.uni-bonn.de> wrote:
> Am 28.11.2011 10:35, schrieb Christoph Bartoschek:
>
>> Now one has to look at
>> (*pGC->ops->PolyRectangle)(pDrawable, pGC, nRects, pRects);
>
> Here is what I see so far:
>
> - damagePolyRectangle is called for 2044 rectangles.
>
> - the damage region is computed it consists of about 1000 rectangles each
> time.
>
> - miPolyRectangle is called.
>
> - the function iterates over all rectangles and calls exaPolylines for each
> of them because most have only a width and height of 0
>
> - exaPolylines calls ExaCheckPolylines.
>
>
> We see that for each rectanlge ExaCheckPolylines is called. I have added
> timers to this function to see what costs time:
>
>
> void
> ExaCheckPolylines (DrawablePtr pDrawable, GCPtr pGC,
>                  int mode, int npt, DDXPointPtr ppt)
> {
>  EXA_PRE_FALLBACK_GC(pGC);
>  EXA_FALLBACK(("to %p (%c), width %d, mode %d, count %d\n",
>                pDrawable, exaDrawableLocation(pDrawable),
>                pGC->lineWidth, mode, npt));
>
>  exaPrepareAccess (pDrawable, EXA_PREPARE_DEST);       // Step1: 55 s
>  exaPrepareAccessGC (pGC);                             // Step2: 2.4 s
>  pGC->ops->Polylines (pDrawable, pGC, mode, npt, ppt); // Step3: 2.4 s
>  exaFinishAccessGC (pGC);                              // Step4: 2.2 s
>  exaFinishAccess (pDrawable, EXA_PREPARE_DEST);        // Step5: 2.2 s
>  EXA_POST_FALLBACK_GC(pGC);
> }
>
>
> We see that exaPrepareAccess needs most of the time. Is that expected?
>
> Inside we see that there are some region operations on the damage region in
> exaCopyDirty. As said before the damage region contains about 1000
> rectangles. So we have 2000 times several operations on 1000 rectangeles.
>
> I think this explains the runtime.
>
> Isn't it somehow possible to batch the rectangle drawing such that the
> region operations are not neccessary for each rectangle?
>
> Isn't is possible to expand the damage region such that it contains less
> rectangles?
>
> Is this still the correct list, or should I ask the EXA questions elsewhere?
>
> Christoph
> _______________________________________________
> xorg at lists.freedesktop.org: X.Org support
> Archives: http://lists.freedesktop.org/archives/xorg
> Info: http://lists.freedesktop.org/mailman/listinfo/xorg
> Your subscription address: madman2003 at gmail.com
>

EXA doesn't have a seperate list, but now that you ask, you should
probably move to the xorg-devel mailinglist :-)

I don't have any answers right now, but i'll think about it.

-- 
Far away from the primal instinct, the song seems to fade away, the
river get wider between your thoughts and the things we do and say.



More information about the xorg mailing list