xf86-video-intel: 2 commits - src/i830_render.c

Chris Wilson ickle at kemper.freedesktop.org
Fri Sep 4 17:59:10 PDT 2009


 src/i830_render.c |   23 +++++------------------
 1 file changed, 5 insertions(+), 18 deletions(-)

New commits:
commit a9b12111f9787950ad6b8f295a70a872c5933c93
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Sat Sep 5 00:57:39 2009 +0100

    i830: remove padding NOOPs from composite
    
    Bumps aa10text up from 249k to 260k!
    
    These NOOPs have existed uncommented since
    04d1584737fd0d14e99608a97281fd7b1549ae0e.
    
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/src/i830_render.c b/src/i830_render.c
index 1419043..5046ad4 100644
--- a/src/i830_render.c
+++ b/src/i830_render.c
@@ -673,13 +673,7 @@ i830_emit_composite_primitive(PixmapPtr pDst, int srcX, int srcY,
 
     num_floats = 3 * per_vertex;
 
-    BEGIN_BATCH(6 + num_floats);
-
-    OUT_BATCH(MI_NOOP);
-    OUT_BATCH(MI_NOOP);
-    OUT_BATCH(MI_NOOP);
-    OUT_BATCH(MI_NOOP);
-    OUT_BATCH(MI_NOOP);
+    BEGIN_BATCH(1 + num_floats);
 
     OUT_BATCH(PRIM3D_INLINE | PRIM3D_RECTLIST | (num_floats-1));
     OUT_BATCH_F(pI830->coord_adjust + dstX + w);
commit 9c1bf6d01ca307b7a9b91e181ad7f341862e5e1c
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Fri Sep 4 23:31:44 2009 +0100

    i830: do not use stale mask transform
    
    Not only were incorrectly falling back if we had non-affine
    transformations, but we made the decision based on a stale transformation
    matrix.
    
    Related bug 22877:
       batch_start_atomic horribly breaks performance after a while
       https://bugs.freedesktop.org/show_bug.cgi?id=22877
    
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
    Tested-by: Maximilian Grothusmann <maxi at own-hero.net>

diff --git a/src/i830_render.c b/src/i830_render.c
index e4c4623..1419043 100644
--- a/src/i830_render.c
+++ b/src/i830_render.c
@@ -395,7 +395,6 @@ i830_prepare_composite(int op, PicturePtr pSrcPicture,
 {
     ScrnInfoPtr pScrn = xf86Screens[pSrcPicture->pDrawable->pScreen->myNum];
     I830Ptr pI830 = I830PTR(pScrn);
-    Bool is_affine_src, is_affine_mask;
     Bool is_nearest = FALSE;
 
     pI830->render_src_picture = pSrcPicture;
@@ -424,17 +423,11 @@ i830_prepare_composite(int op, PicturePtr pSrcPicture,
 	pI830->scale_units[1][1] = -1;
     }
 
-    is_affine_src = i830_transform_is_affine (pI830->transform[0]);
-    is_affine_mask = i830_transform_is_affine (pI830->transform[1]);
-
     if (is_nearest)
 	pI830->coord_adjust = -0.125;
     else
 	pI830->coord_adjust = 0;
 
-    if (!is_affine_src || !is_affine_mask)
-	I830FALLBACK("non-affine transform unsupported on 8xx hardware\n");
-
     {
 	uint32_t cblend, ablend, blendctl;
 
@@ -602,14 +595,13 @@ i830_emit_composite_primitive(PixmapPtr pDst, int srcX, int srcY,
 {
     ScrnInfoPtr pScrn = xf86Screens[pDst->drawable.pScreen->myNum];
     I830Ptr pI830 = I830PTR(pScrn);
-    Bool is_affine_src, is_affine_mask;
+    Bool is_affine_src, is_affine_mask = TRUE;
     int per_vertex, num_floats;
     float src_x[3], src_y[3], src_w[3], mask_x[3], mask_y[3], mask_w[3];
 
-    is_affine_src = i830_transform_is_affine (pI830->transform[0]);
-    is_affine_mask = i830_transform_is_affine (pI830->transform[1]);
-
     per_vertex = 2; /* dest x/y */
+
+    is_affine_src = i830_transform_is_affine (pI830->transform[0]);
     if (is_affine_src)
     {
 	if (!i830_get_transformed_coordinates(srcX, srcY,
@@ -644,6 +636,7 @@ i830_emit_composite_primitive(PixmapPtr pDst, int srcX, int srcY,
 	per_vertex += 4;    /* src x/y/z/w */
     }
     if (pI830->render_mask) {
+	is_affine_mask = i830_transform_is_affine (pI830->transform[1]);
 	if (is_affine_mask) {
 	    if (!i830_get_transformed_coordinates(maskX, maskY,
 						  pI830->transform[1],


More information about the xorg-commit mailing list