diff --git a/exa/exa_render.c b/exa/exa_render.c
index 172e2b5..0463b3f 100644
--- a/exa/exa_render.c
+++ b/exa/exa_render.c
@@ -878,8 +878,9 @@ exaComposite(CARD8 op,
Bool saveMaskRepeat = pMask ? pMask->repeat : 0;
RegionRec region;
- if (pExaScr->swappedOut)
- goto fallback;
+ if (pExaScr->swappedOut || pSrc->pDrawable == NULL ||
+ (pMask != NULL && pMask->pDrawable == NULL))
+ goto fallback;
/* Remove repeat in source if useless */
if (pSrc->pDrawable && pSrc->repeat && !pSrc->transform && xSrc >= 0 &&