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.
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