xserver: Branch 'master'

Eric Anholt anholt at kemper.freedesktop.org
Wed Feb 20 10:36:50 PST 2008


 exa/exa_render.c |   16 ++++++++++------
 1 file changed, 10 insertions(+), 6 deletions(-)

New commits:
commit 5cb9e15562a32c1f102d94d5e15d5fd298baff3f
Author: Eric Anholt <eric at anholt.net>
Date:   Wed Feb 20 10:36:06 2008 -0800

    EXA: Fix Render acceleration in copy and tiling cases.
    
    Code shuffling in a634c9b03494ba80aeec28be19662ac96657cc23 broke this by
    leaving pSrcPixmap = NULL.

diff --git a/exa/exa_render.c b/exa/exa_render.c
index a510e54..6df2a23 100644
--- a/exa/exa_render.c
+++ b/exa/exa_render.c
@@ -587,7 +587,6 @@ exaComposite(CARD8	op,
     int ret = -1;
     Bool saveSrcRepeat = pSrc->repeat;
     Bool saveMaskRepeat = pMask ? pMask->repeat : 0;
-    PixmapPtr pSrcPixmap = NULL;
     RegionRec region;
 
     /* We currently don't support acceleration of gradients, or other pictures
@@ -624,7 +623,9 @@ exaComposite(CARD8	op,
 		if (ret == 1)
 		    goto done;
 	    }
-	    else if (pSrcPixmap && !pSrc->repeat && !pSrc->transform)
+	    else if (pSrc->pDrawable != NULL &&
+		     !pSrc->repeat &&
+		     !pSrc->transform)
 	    {
 		xDst += pDst->pDrawable->x;
 		yDst += pDst->pDrawable->y;
@@ -644,7 +645,9 @@ exaComposite(CARD8	op,
 		REGION_UNINIT(pDst->pDrawable->pScreen, &region);
 		goto done;
 	    }
-	    else if (pSrcPixmap && !pSrc->transform &&
+	    else if (pSrc->pDrawable != NULL &&
+		     pSrc->pDrawable->type == DRAWABLE_PIXMAP &&
+		     !pSrc->transform &&
 		     pSrc->repeatType == RepeatNormal)
 	    {
 		DDXPointRec srcOrg;
@@ -671,10 +674,11 @@ exaComposite(CARD8	op,
 					       width, height))
 		    goto done;
 
-		srcOrg.x = (xSrc - xDst) % pSrcPixmap->drawable.width;
-		srcOrg.y = (ySrc - yDst) % pSrcPixmap->drawable.height;
+		srcOrg.x = (xSrc - xDst) % pSrc->pDrawable->width;
+		srcOrg.y = (ySrc - yDst) % pSrc->pDrawable->height;
 
-		ret = exaFillRegionTiled(pDst->pDrawable, &region, pSrcPixmap,
+		ret = exaFillRegionTiled(pDst->pDrawable, &region,
+					 (PixmapPtr)pSrc->pDrawable,
 					 &srcOrg, FB_ALLONES, GXcopy);
 
 		REGION_UNINIT(pDst->pDrawable->pScreen, &region);


More information about the xorg-commit mailing list