xf86-video-intel: src/i830_render.c

Carl Worth cworth at kemper.freedesktop.org
Mon Sep 21 15:46:59 PDT 2009


 src/i830_render.c |   11 +++++++++++
 1 file changed, 11 insertions(+)

New commits:
commit 505025053d66d415e1c23ac858b9238fa8541d37
Author: Carl Worth <cworth at cworth.org>
Date:   Mon Sep 21 13:50:09 2009 -0700

    8xx: Fallback for any non-affine transformation.
    
    There are definitely bugs in the 8xx code dealing with non-affine
    transformations. Disable that code for now to get things working.
    
    Fixes bug #22947 ([855GM, xf86-video-intel-2.8.0] "Freeze" when RENDER extension is being used)

diff --git a/src/i830_render.c b/src/i830_render.c
index b9bbbdb..8213e29 100644
--- a/src/i830_render.c
+++ b/src/i830_render.c
@@ -390,6 +390,17 @@ i830_check_composite(int op, PicturePtr pSrcPicture, PicturePtr pMaskPicture,
     if (!i830_get_dest_format(pDstPicture, &tmp1))
 	I830FALLBACK("Get Color buffer format\n");
 
+    /* There exists some code to handle non-affine transformations for
+     * 8xx, but from what we can tell, it just isn't correct. (An easy
+     * testcase is to run enlightenemt (e17), click the "e", then
+     * "settings", "settings panel", "advanced", "engine", and finally
+     * "XRender" and "Apply". After doing that, moving any window causes
+     * a GPU hang. */
+    if (!i830_transform_is_affine(pSrcPicture->transform) ||
+	!i830_transform_is_affine(pDstPicture->transform) ||
+	(pMaskPicture && !i830_transform_is_affine (pMaskPicture->transform)))
+	I830FALLBACK("Non-affine transformation\n");
+
     return TRUE;
 }
 


More information about the xorg-commit mailing list