st/xorg: Add debug for fallbacks
This commit is contained in:
@@ -558,6 +558,7 @@ ScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
|
||||
xf86SetBlackWhitePixels(pScreen);
|
||||
|
||||
ms->exa = xorg_exa_init(pScrn);
|
||||
ms->debug_fallback = debug_get_option_bool("XORG_DEBUG_FALLBACK", TRUE);
|
||||
|
||||
miInitializeBackingStore(pScreen);
|
||||
xf86SetBackingStore(pScreen);
|
||||
|
||||
@@ -286,23 +286,23 @@ ExaPrepareSolid(PixmapPtr pPixmap, int alu, Pixel planeMask, Pixel fg)
|
||||
#if DEBUG_PRINT
|
||||
debug_printf("ExaPrepareSolid(0x%x)\n", fg);
|
||||
#endif
|
||||
if (!EXA_PM_IS_SOLID(&pPixmap->drawable, planeMask))
|
||||
return FALSE;
|
||||
if (!exa->pipe)
|
||||
XORG_FALLBACK("solid accle not enabled");
|
||||
|
||||
if (!priv || !priv->tex)
|
||||
return FALSE;
|
||||
XORG_FALLBACK("solid !priv || !priv->tex");
|
||||
|
||||
if (!EXA_PM_IS_SOLID(&pPixmap->drawable, planeMask))
|
||||
XORG_FALLBACK("solid planeMask is not solid");
|
||||
|
||||
if (alu != GXcopy)
|
||||
XORG_FALLBACK("solid not GXcopy");
|
||||
|
||||
if (!exa->scrn->is_format_supported(exa->scrn, priv->tex->format,
|
||||
priv->tex->target,
|
||||
PIPE_TEXTURE_USAGE_RENDER_TARGET, 0))
|
||||
return FALSE;
|
||||
|
||||
if (alu != GXcopy)
|
||||
return FALSE;
|
||||
|
||||
if (!exa->pipe)
|
||||
return FALSE;
|
||||
|
||||
PIPE_TEXTURE_USAGE_RENDER_TARGET, 0)) {
|
||||
XORG_FALLBACK("solid bad format %s", pf_name(priv->tex->format));
|
||||
}
|
||||
|
||||
#if DEBUG_SOLID
|
||||
fg = 0xffff0000;
|
||||
@@ -382,29 +382,30 @@ ExaPrepareCopy(PixmapPtr pSrcPixmap, PixmapPtr pDstPixmap, int xdir,
|
||||
#if DEBUG_PRINT
|
||||
debug_printf("ExaPrepareCopy\n");
|
||||
#endif
|
||||
|
||||
if (alu != GXcopy)
|
||||
return FALSE;
|
||||
|
||||
if (!EXA_PM_IS_SOLID(&pSrcPixmap->drawable, planeMask))
|
||||
return FALSE;
|
||||
if (!exa->pipe)
|
||||
XORG_FALLBACK("copy accle not enabled");
|
||||
|
||||
if (!priv || !src_priv)
|
||||
return FALSE;
|
||||
XORG_FALLBACK("copy !priv || !src_priv");
|
||||
|
||||
if (!priv->tex || !src_priv->tex)
|
||||
XORG_FALLBACK("copy !priv->tex || !src_priv->tex");
|
||||
|
||||
if (!EXA_PM_IS_SOLID(&pSrcPixmap->drawable, planeMask))
|
||||
XORG_FALLBACK("copy planeMask is not solid");
|
||||
|
||||
if (alu != GXcopy)
|
||||
XORG_FALLBACK("copy alu not GXcopy");
|
||||
|
||||
if (!exa->scrn->is_format_supported(exa->scrn, priv->tex->format,
|
||||
priv->tex->target,
|
||||
PIPE_TEXTURE_USAGE_RENDER_TARGET, 0) ||
|
||||
!exa->scrn->is_format_supported(exa->scrn, src_priv->tex->format,
|
||||
PIPE_TEXTURE_USAGE_RENDER_TARGET, 0))
|
||||
XORG_FALLBACK("copy pDst format %s", pf_name(priv->tex->format));
|
||||
|
||||
if (!exa->scrn->is_format_supported(exa->scrn, src_priv->tex->format,
|
||||
src_priv->tex->target,
|
||||
PIPE_TEXTURE_USAGE_SAMPLER, 0))
|
||||
return FALSE;
|
||||
|
||||
if (!priv->tex || !src_priv->tex)
|
||||
return FALSE;
|
||||
|
||||
if (!exa->pipe)
|
||||
return FALSE;
|
||||
XORG_FALLBACK("copy pSrc format %s", pf_name(src_priv->tex->format));
|
||||
|
||||
exa->copy.src = src_priv;
|
||||
exa->copy.dst = priv;
|
||||
@@ -450,30 +451,38 @@ ExaPrepareComposite(int op, PicturePtr pSrcPicture,
|
||||
#if DEBUG_PRINT
|
||||
debug_printf("ExaPrepareComposite\n");
|
||||
#endif
|
||||
if (!exa->pipe)
|
||||
XORG_FALLBACK("comp accle not enabled");
|
||||
|
||||
priv = exaGetPixmapDriverPrivate(pDst);
|
||||
if (!priv || !priv->tex ||
|
||||
!exa->scrn->is_format_supported(exa->scrn, priv->tex->format,
|
||||
if (!priv || !priv->tex)
|
||||
XORG_FALLBACK("comp pDst %s", !priv ? "!priv" : "!priv->tex");
|
||||
|
||||
if (!exa->scrn->is_format_supported(exa->scrn, priv->tex->format,
|
||||
priv->tex->target,
|
||||
PIPE_TEXTURE_USAGE_RENDER_TARGET, 0))
|
||||
return FALSE;
|
||||
XORG_FALLBACK("copy pDst format: %s", pf_name(priv->tex->format));
|
||||
|
||||
if (pSrc) {
|
||||
priv = exaGetPixmapDriverPrivate(pSrc);
|
||||
if (!priv || !priv->tex ||
|
||||
!exa->scrn->is_format_supported(exa->scrn, priv->tex->format,
|
||||
if (!priv || !priv->tex)
|
||||
XORG_FALLBACK("comp pSrc %s", !priv ? "!priv" : "!priv->tex");
|
||||
|
||||
if (!exa->scrn->is_format_supported(exa->scrn, priv->tex->format,
|
||||
priv->tex->target,
|
||||
PIPE_TEXTURE_USAGE_SAMPLER, 0))
|
||||
return FALSE;
|
||||
XORG_FALLBACK("copy pSrc format: %s", pf_name(priv->tex->format));
|
||||
}
|
||||
|
||||
if (pMask) {
|
||||
priv = exaGetPixmapDriverPrivate(pMask);
|
||||
if (!priv || !priv->tex ||
|
||||
!exa->scrn->is_format_supported(exa->scrn, priv->tex->format,
|
||||
if (!priv || !priv->tex)
|
||||
XORG_FALLBACK("comp pMask %s", !priv ? "!priv" : "!priv->tex");
|
||||
|
||||
if (!exa->scrn->is_format_supported(exa->scrn, priv->tex->format,
|
||||
priv->tex->target,
|
||||
PIPE_TEXTURE_USAGE_SAMPLER, 0))
|
||||
return FALSE;
|
||||
XORG_FALLBACK("copy pMask format: %s", pf_name(priv->tex->format));
|
||||
}
|
||||
|
||||
#if DISABLE_ACCEL
|
||||
|
||||
@@ -50,6 +50,15 @@ struct exa_pixmap_priv
|
||||
unsigned map_count;
|
||||
};
|
||||
|
||||
#define XORG_FALLBACK(s, arg...) \
|
||||
do { \
|
||||
if (ms->debug_fallback) { \
|
||||
xf86DrvMsg(pScrn->scrnIndex, X_INFO, \
|
||||
"fallback: " s "\n", ##arg); \
|
||||
} \
|
||||
return FALSE; \
|
||||
} while(0)
|
||||
|
||||
struct pipe_surface *
|
||||
exa_gpu_surface(struct exa_context *exa, struct exa_pixmap_priv *priv);
|
||||
|
||||
|
||||
@@ -94,6 +94,7 @@ typedef struct _modesettingRec
|
||||
/* exa */
|
||||
void *exa;
|
||||
Bool noEvict;
|
||||
Bool debug_fallback;
|
||||
|
||||
#ifdef DRM_MODE_FEATURE_DIRTYFB
|
||||
DamagePtr damage;
|
||||
|
||||
Reference in New Issue
Block a user