From 10b9e833535eeddeb8e4e67f7a5126eed03d706e Mon Sep 17 00:00:00 2001 From: Henrik Rydgard Date: Wed, 4 Dec 2013 13:16:22 +0100 Subject: [PATCH] Dest alpha mask: Try some rules that seem to make sense from what we know now. --- GPU/GLES/StateMapping.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/GPU/GLES/StateMapping.cpp b/GPU/GLES/StateMapping.cpp index 0243b9d167..8d862c5eb4 100644 --- a/GPU/GLES/StateMapping.cpp +++ b/GPU/GLES/StateMapping.cpp @@ -339,6 +339,19 @@ void TransformDrawEngine::ApplyDrawState(int prim) { bool gmask = ((gstate.pmskc >> 8) & 0xFF) < 128; bool bmask = ((gstate.pmskc >> 16) & 0xFF) < 128; bool amask = (gstate.pmska & 0xFF) < 128; + + if (gstate.isModeClear()) { + // Clear mode? Obey the clear mode alpha mask (works opposite) + if (gstate.isClearModeAlphaMask()) { + amask = false; + } + } else { + // Let's not write to alpha if stencil isn't enabled. + if (!gstate.isStencilTestEnabled()) { + amask = false; + } + } + glstate.colorMask.set(rmask, gmask, bmask, amask); // Stencil Test