From 3c93eaf16441639aeaee4a715dd30d18a407e78c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Rydg=C3=A5rd?= Date: Sat, 10 Feb 2018 17:18:18 +0100 Subject: [PATCH] GL: Fix clearing alpha on stencil uploads. --- GPU/Common/FramebufferCommon.h | 2 +- GPU/GLES/FramebufferManagerGLES.cpp | 4 ++-- GPU/GLES/StencilBufferGLES.cpp | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/GPU/Common/FramebufferCommon.h b/GPU/Common/FramebufferCommon.h index 89db174c8e..b6febf7fa3 100644 --- a/GPU/Common/FramebufferCommon.h +++ b/GPU/Common/FramebufferCommon.h @@ -150,7 +150,7 @@ enum DrawTextureFlags { DRAWTEX_NEAREST = 0, DRAWTEX_LINEAR = 1, DRAWTEX_KEEP_TEX = 2, - DRAWTEX_KEEP_STENCIL = 4, + DRAWTEX_KEEP_STENCIL_ALPHA = 4, }; inline Draw::DataFormat GEFormatToThin3D(int geFormat) { diff --git a/GPU/GLES/FramebufferManagerGLES.cpp b/GPU/GLES/FramebufferManagerGLES.cpp index e951ec2467..dd0a0c2473 100644 --- a/GPU/GLES/FramebufferManagerGLES.cpp +++ b/GPU/GLES/FramebufferManagerGLES.cpp @@ -420,10 +420,10 @@ void FramebufferManagerGLES::DrawActiveTexture(float x, float y, float w, float } // We always want a plain state here, well, except for when it's used by the stencil stuff... - render_->SetNoBlendAndMask(0xF); render_->SetDepth(false, false, GL_ALWAYS); render_->SetRaster(false, GL_CCW, GL_FRONT, GL_FALSE); - if (!(flags & DRAWTEX_KEEP_STENCIL)) { + if (!(flags & DRAWTEX_KEEP_STENCIL_ALPHA)) { + render_->SetNoBlendAndMask(0xF); render_->SetStencilDisabled(); } diff --git a/GPU/GLES/StencilBufferGLES.cpp b/GPU/GLES/StencilBufferGLES.cpp index 170fb997f4..4b59b60b96 100644 --- a/GPU/GLES/StencilBufferGLES.cpp +++ b/GPU/GLES/StencilBufferGLES.cpp @@ -189,7 +189,7 @@ bool FramebufferManagerGLES::NotifyStencilUpload(u32 addr, int size, bool skipZe render_->SetStencilOp(i, GL_REPLACE, GL_REPLACE, GL_REPLACE); render_->SetUniformF1(&u_stencilValue, i * (1.0f / 255.0f)); } - DrawActiveTexture(0, 0, dstBuffer->width, dstBuffer->height, dstBuffer->bufferWidth, dstBuffer->bufferHeight, 0.0f, 0.0f, u1, v1, ROTATION_LOCKED_HORIZONTAL, DRAWTEX_NEAREST | DRAWTEX_KEEP_STENCIL); + DrawActiveTexture(0, 0, dstBuffer->width, dstBuffer->height, dstBuffer->bufferWidth, dstBuffer->bufferHeight, 0.0f, 0.0f, u1, v1, ROTATION_LOCKED_HORIZONTAL, DRAWTEX_NEAREST | DRAWTEX_KEEP_STENCIL_ALPHA); } if (useBlit) {