diff --git a/exa/exa_render.c b/exa/exa_render.c index 9909d7f46..5bfb07c4b 100644 --- a/exa/exa_render.c +++ b/exa/exa_render.c @@ -469,6 +469,23 @@ exaComposite(CARD8 op, return; } + /* simplify the drivers by reducing here */ + switch (op) { + case PictOpDisjointClear: + case PictOpConjointClear: + op = PictOpClear; + break; + case PictOpDisjointSrc: + case PictOpConjointSrc: + op = PictOpSrc; + break; + case PictOpDisjointDst: + case PictOpConjointDst: + case PictOpDst: + return; + default: + break; + } if (!pMask && pSrc->pDrawable) { diff --git a/hw/xfree86/exa/exa_render.c b/hw/xfree86/exa/exa_render.c index 9909d7f46..5bfb07c4b 100644 --- a/hw/xfree86/exa/exa_render.c +++ b/hw/xfree86/exa/exa_render.c @@ -469,6 +469,23 @@ exaComposite(CARD8 op, return; } + /* simplify the drivers by reducing here */ + switch (op) { + case PictOpDisjointClear: + case PictOpConjointClear: + op = PictOpClear; + break; + case PictOpDisjointSrc: + case PictOpConjointSrc: + op = PictOpSrc; + break; + case PictOpDisjointDst: + case PictOpConjointDst: + case PictOpDst: + return; + default: + break; + } if (!pMask && pSrc->pDrawable) { diff --git a/hw/xfree86/exa/exapict.c b/hw/xfree86/exa/exapict.c index 9909d7f46..5bfb07c4b 100644 --- a/hw/xfree86/exa/exapict.c +++ b/hw/xfree86/exa/exapict.c @@ -469,6 +469,23 @@ exaComposite(CARD8 op, return; } + /* simplify the drivers by reducing here */ + switch (op) { + case PictOpDisjointClear: + case PictOpConjointClear: + op = PictOpClear; + break; + case PictOpDisjointSrc: + case PictOpConjointSrc: + op = PictOpSrc; + break; + case PictOpDisjointDst: + case PictOpConjointDst: + case PictOpDst: + return; + default: + break; + } if (!pMask && pSrc->pDrawable) {