xf86-video-intel: 2 commits - uxa/uxa-render.c

Chris Wilson ickle at kemper.freedesktop.org
Sat May 15 01:13:48 PDT 2010


 uxa/uxa-render.c |   11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

New commits:
commit 58b089febceca1e915607bb723ee658aaa9dbed3
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Sat May 15 09:11:46 2010 +0100

    uxa: Avoid using blits when with PictFilterConvolution
    
    References:
    
      Bug 28098 Compiz renders shadows wrong, garbage line of pixels along left
                and top edge of windows
      https://bugs.freedesktop.org/show_bug.cgi?id=28098
    
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/uxa/uxa-render.c b/uxa/uxa-render.c
index b4b7a97..b83b9dc 100644
--- a/uxa/uxa-render.c
+++ b/uxa/uxa-render.c
@@ -765,7 +765,9 @@ uxa_acquire_drawable(ScreenPtr pScreen,
 	int tx, ty;
 
 	depth = pSrc->pDrawable->depth;
-	if (depth == 1 || !transform_is_integer_translation(pSrc->transform, &tx, &ty)) {
+	if (depth == 1 ||
+	    pSrc->filter == PictFilterConvolution || /* XXX */
+	    !transform_is_integer_translation(pSrc->transform, &tx, &ty)) {
 		/* XXX extract the sample extents and do the transformation on the GPU */
 		pDst = uxa_render_picture(pScreen, pSrc,
 					  pSrc->format | (BitsPerPixel(pSrc->pDrawable->depth) << 24),
@@ -1387,7 +1389,7 @@ uxa_composite(CARD8 op,
 		goto fallback;
 
 	/* Remove repeat in source if useless */
-	if (pSrc->pDrawable && pSrc->repeat &&
+	if (pSrc->pDrawable && pSrc->repeat && pSrc->filter != PictFilterConvolution &&
 	    transform_is_integer_translation(pSrc->transform, &tx, &ty) &&
 	    (pSrc->pDrawable->width > 1 || pSrc->pDrawable->height > 1) &&
 	    drawable_contains(pSrc->pDrawable, xSrc + tx, ySrc + ty, width, height))
@@ -1431,6 +1433,7 @@ uxa_composite(CARD8 op,
 			if (ret == 1)
 				goto done;
 		} else if (compatible_formats (op, pDst, pSrc) &&
+			   pSrc->filter != PictFilterConvolution &&
 			   transform_is_integer_translation(pSrc->transform, &tx, &ty)) {
 			if (!pSrc->repeat &&
 			    drawable_contains(pSrc->pDrawable,
@@ -1509,6 +1512,7 @@ uxa_composite(CARD8 op,
 
 	/* Remove repeat in mask if useless */
 	if (pMask && pMask->pDrawable && pMask->repeat &&
+	    pMask->filter != PictFilterConvolution &&
 	    transform_is_integer_translation(pMask->transform, &tx, &ty) &&
 	    (pMask->pDrawable->width > 1 || pMask->pDrawable->height > 1) &&
 	    drawable_contains(pMask->pDrawable, xMask + tx, yMask + ty, width, height))
commit ef95899f5b21453daeabf81a3015b22456d21fec
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Sat May 15 09:02:07 2010 +0100

    uxa: Check the w-scaling component is 1 for an translation matrix
    
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/uxa/uxa-render.c b/uxa/uxa-render.c
index fbecf00..b4b7a97 100644
--- a/uxa/uxa-render.c
+++ b/uxa/uxa-render.c
@@ -706,7 +706,8 @@ transform_is_integer_translation(PictTransformPtr t, int *tx, int *ty)
 	    t->matrix[1][0] != 0 ||
 	    t->matrix[1][1] != IntToxFixed(1) ||
 	    t->matrix[2][0] != 0 ||
-	    t->matrix[2][1] != 0)
+	    t->matrix[2][1] != 0 ||
+	    t->matrix[2][2] != IntToxFixed(1))
 		return FALSE;
 
 	if (xFixedFrac(t->matrix[0][2]) != 0 ||


More information about the xorg-commit mailing list