[Xorg-driver-geode] [PATCH] lx_exa: fallback in case of server-side gradients and solid fill

Mart Raudsepp leio at gentoo.org
Sun Jun 13 16:50:21 PDT 2010

RENDER extension version 0.10 added support for doing server-side
gradients and solid fills, which we were not handling at all.
cairo-1.9 started making use of server-side gradients, and we are
crashing on those, as the source pixmap (pxSrc in lx_prepare_composite)
doesn't have a drawable in this case, and we were not expecting such
a possibility.
So, as the first measure, fallback (three years late) all server-side
gradients and solid fills instead of crashing, until we have no code
that tries to accelerate cases of these or aren't sure if we even
can accelerate any cases.

pSourcePict member was added to xserver in 2005, so no compatibility
wrapping needed.

Signed-off-by: Mart Raudsepp <leio at gentoo.org>
 src/lx_exa.c |    4 ++++
 1 files changed, 4 insertions(+), 0 deletions(-)

diff --git a/src/lx_exa.c b/src/lx_exa.c
index b267cc0..1b08391 100644
--- a/src/lx_exa.c
+++ b/src/lx_exa.c
@@ -568,6 +568,10 @@ lx_check_composite(int op, PicturePtr pSrc, PicturePtr pMsk, PicturePtr pDst)
     if (pMsk && pMsk->transform)
 	return FALSE;
+    /* XXX - don't know if we can do any hwaccel on solid fills or gradient types */
+    if (pSrc->pSourcePict || (pMsk && pMsk->pSourcePict))
+	return FALSE;
     /* Keep an eye out for source rotation transforms - those we can
      * do something about */

More information about the Xorg-driver-geode mailing list