From 3189073d6459320eb078d0343f91aa854b4e312c Mon Sep 17 00:00:00 2001 From: Carl Worth Date: Mon, 21 Sep 2009 13:50:09 -0700 Subject: [PATCH] 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) --- src/i830_render.c | 11 +++++++++++ 1 files changed, 11 insertions(+), 0 deletions(-) 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; } -- 1.6.4.3