Google
  Web www.spinics.net

Re: EXA performance problem

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]


On Mon, Nov 28, 2011 at 4:49 PM, Christoph Bartoschek
<bartoschek@xxxxxxxxxxxxxx> 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@xxxxxxxxxxxxxxxxxxxxx: X.Org support
> Archives: http://lists.freedesktop.org/archives/xorg
> Info: http://lists.freedesktop.org/mailman/listinfo/xorg
> Your subscription address: madman2003@xxxxxxxxx
>

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



[X Forum]     [Nouveau Driver]     [Devices]     [XFree86]     [XFree86 Newbie]     [Site Home]     [IETF Annouce]     [Security]     [Fontconfig]     [Bugtraq]     [Photo]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Video for Linux]     [Linux RAID]     [Linux Resources]

Powered by Linux