summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/gallium/state_trackers/xorg/xorg_exa.c44
1 files changed, 28 insertions, 16 deletions
diff --git a/src/gallium/state_trackers/xorg/xorg_exa.c b/src/gallium/state_trackers/xorg/xorg_exa.c
index 8920b243079..279b551db28 100644
--- a/src/gallium/state_trackers/xorg/xorg_exa.c
+++ b/src/gallium/state_trackers/xorg/xorg_exa.c
@@ -215,8 +215,12 @@ ExaPrepareAccess(PixmapPtr pPix, int index)
#endif
PIPE_TRANSFER_READ_WRITE,
0, 0, priv->tex->width[0], priv->tex->height[0]);
- if (!priv->map_transfer)
+ if (!priv->map_transfer)
+#ifdef EXA_MIXED_PIXMAPS
return FALSE;
+#else
+ FatalError("failed to create transfer\n");
+#endif
pPix->devPrivate.ptr =
exa->scrn->transfer_map(exa->scrn, priv->map_transfer);
@@ -318,7 +322,10 @@ ExaPrepareSolid(PixmapPtr pPixmap, int alu, Pixel planeMask, Pixel fg)
#if DISABLE_ACCEL
return FALSE;
#else
- return xorg_solid_bind_state(exa, priv, fg);
+ if (xorg_solid_bind_state(exa, priv, fg))
+ return TRUE;
+ else
+ XORG_FALLBACK("xorg_solid_bind_state failed\n");
#endif
}
@@ -496,11 +503,14 @@ ExaPrepareComposite(int op, PicturePtr pSrcPicture,
(void) exa;
return FALSE;
#else
- return xorg_composite_bind_state(exa, op, pSrcPicture, pMaskPicture,
- pDstPicture,
- pSrc ? exaGetPixmapDriverPrivate(pSrc) : NULL,
- pMask ? exaGetPixmapDriverPrivate(pMask) : NULL,
- exaGetPixmapDriverPrivate(pDst));
+ if (xorg_composite_bind_state(exa, op, pSrcPicture, pMaskPicture,
+ pDstPicture,
+ pSrc ? exaGetPixmapDriverPrivate(pSrc) : NULL,
+ pMask ? exaGetPixmapDriverPrivate(pMask) : NULL,
+ exaGetPixmapDriverPrivate(pDst)))
+ return TRUE;
+ else
+ XORG_FALLBACK("xorg_composite_bind_state failed");
#endif
}
@@ -526,15 +536,17 @@ ExaCheckComposite(int op,
PicturePtr pSrcPicture, PicturePtr pMaskPicture,
PicturePtr pDstPicture)
{
- boolean accelerated = xorg_composite_accelerated(op,
- pSrcPicture,
- pMaskPicture,
- pDstPicture);
-#if DEBUG_PRINT
- debug_printf("ExaCheckComposite(%d, %p, %p, %p) = %d\n",
- op, pSrcPicture, pMaskPicture, pDstPicture, accelerated);
-#endif
- return accelerated;
+ ScreenPtr pScreen = pDstPicture->pDrawable->pScreen;
+ ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ modesettingPtr ms = modesettingPTR(pScrn);
+
+ if (xorg_composite_accelerated(op,
+ pSrcPicture,
+ pMaskPicture,
+ pDstPicture))
+ return TRUE;
+ else
+ XORG_FALLBACK("xorg_composite_accelerated failed");
}
static void *