On Mon, Mar 28, 2011 at 4:40 PM, Soeren Sandmann <[email protected]> wrote:
> Michel Dänzer <[email protected]> writes:
>
>> On Mon, 2011-03-28 at 11:47 -0400, Søren Sandmann wrote:
>>> From: Søren Sandmann Pedersen <[email protected]>
>>>
>>> These calls no longer go through the miComposite(),
>>
>> I can't seem to find any reference to miComposite() in the Git history.
>> Do you mean miTriangles()?
>
> I meant CompositePicture() actually (which then calls
> screen->Composite()). This is the only composite call that is wrapped by
> damage.
>
>>> so damage was no longer generated for them. This patch simply damages
>>> the entire destination clip region.
>>
>> [...]
>>
>>> @@ -117,6 +118,8 @@ fbShapes (CompositeShapesFunc    composite,
>>>      {
>>>      pixman_format_code_t format;
>>>
>>> +    DamageRegionAppend (pDst->pDrawable, pDst->pCompositeClip);
>>> +
>>>      if (!maskFormat)
>>>      {
>>>          int i;
>>
>> Don't you also need to call DamageRegionProcessPending() after the
>> operation?
>
> Yes, I think I do, thanks. New version below.

I think you should process pending after doing the rendering operation.

>
> Soren.
>
>
> From cbffefdd08bac059f7d9b2ca102f31282aabc5fe Mon Sep 17 00:00:00 2001
> From: =?UTF-8?q?S=C3=B8ren=20Sandmann=20Pedersen?= <[email protected]>
> Date: Mon, 28 Mar 2011 11:38:11 -0400
> Subject: [PATCH] Track damage for fbTrapezoids() and fbTriangles().
> MIME-Version: 1.0
> Content-Type: text/plain; charset=UTF-8
> Content-Transfer-Encoding: 8bit
>
> These calls no longer go through the CompositePicture() hook, so
> damage was no longer generated for them. This patch simply damages the
> entire destination clip region.
>
> It would be possible to generate tighter damage for certain operators
> such as Over and Add, where blank source pixels have no effect on the
> destination, but given that virtually all trapezoid rendering takes
> place on pixmaps, it's unlikely that anybody would actually benefit
> from this optimization, and the miTrapezoidBounds function did
> sometimes show up on profiles, probably because it does several
> divisions per trapezoid.
>
> V2: Call DamageRegionProcessPending() - pointed out by Michel Dänzer.
>
> Signed-off-by: Søren Sandmann <[email protected]>
> ---
>  fb/fbtrap.c |    4 ++++
>  1 files changed, 4 insertions(+), 0 deletions(-)
>
> diff --git a/fb/fbtrap.c b/fb/fbtrap.c
> index 2554fcc..1880a24 100644
> --- a/fb/fbtrap.c
> +++ b/fb/fbtrap.c
> @@ -29,6 +29,7 @@
>  #include "picturestr.h"
>  #include "mipict.h"
>  #include "fbpict.h"
> +#include "damage.h"
>
>  void
>  fbAddTraps (PicturePtr pPicture,
> @@ -117,6 +118,9 @@ fbShapes (CompositeShapesFunc       composite,
>     {
>        pixman_format_code_t format;
>
> +       DamageRegionAppend (pDst->pDrawable, pDst->pCompositeClip);
> +       DamageRegionProcessPending (pDst->pDrawable);
> +
>        if (!maskFormat)
>        {
>            int i;
> --
> 1.7.4
>
> _______________________________________________
> [email protected]: X.Org development
> Archives: http://lists.x.org/archives/xorg-devel
> Info: http://lists.x.org/mailman/listinfo/xorg-devel



-- 
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.
_______________________________________________
[email protected]: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to