diff options
author | Søren Sandmann Pedersen <ssp@redhat.com> | 2011-03-28 11:38:11 -0400 |
---|---|---|
committer | Søren Sandmann Pedersen <ssp@redhat.com> | 2011-04-22 21:37:58 -0400 |
commit | c7bce22b58530239e583d91ae56312bad1630da4 (patch) | |
tree | 0d340eaf38fa8811f0180e53aa10719c58d73203 | |
parent | 918a9c99cf2ebc73acb34b95f597904b93c690d9 (diff) |
Track damage for fbTrapezoids() and fbTriangles().
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.
V3: Call DamageRegionProcessPending() *after* rendering -
pointed out by Maarten Maathuis
Reviewed-by: Michel Dänzer <daenzer@vmware.com>
Signed-off-by: Søren Sandmann <ssp@redhat.com>
-rw-r--r-- | fb/fbtrap.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/fb/fbtrap.c b/fb/fbtrap.c index 2554fccbf..612fae797 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,8 @@ fbShapes (CompositeShapesFunc composite, { pixman_format_code_t format; + DamageRegionAppend (pDst->pDrawable, pDst->pCompositeClip); + if (!maskFormat) { int i; @@ -161,6 +164,8 @@ fbShapes (CompositeShapesFunc composite, yDst + dst_yoff, nshapes, shapes); } + + DamageRegionProcessPending (pDst->pDrawable); } free_pixman_pict (pSrc, src); |