summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSøren Sandmann Pedersen <ssp@redhat.com>2011-03-28 11:38:11 -0400
committerSøren Sandmann Pedersen <ssp@redhat.com>2011-04-22 21:37:58 -0400
commitc7bce22b58530239e583d91ae56312bad1630da4 (patch)
tree0d340eaf38fa8811f0180e53aa10719c58d73203
parent918a9c99cf2ebc73acb34b95f597904b93c690d9 (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.c5
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);