From c310cef6153480b4823a070daeb1bc6c06d4001f Mon Sep 17 00:00:00 2001 From: ReinUsesLisp Date: Thu, 26 Mar 2020 00:51:47 -0300 Subject: [PATCH 1/2] gl_rasterizer: Synchronize stencil testing on clears --- src/video_core/renderer_opengl/gl_rasterizer.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/video_core/renderer_opengl/gl_rasterizer.cpp b/src/video_core/renderer_opengl/gl_rasterizer.cpp index 826eee7df8..fd96172eff 100644 --- a/src/video_core/renderer_opengl/gl_rasterizer.cpp +++ b/src/video_core/renderer_opengl/gl_rasterizer.cpp @@ -444,6 +444,7 @@ void RasterizerOpenGL::Clear() { } SyncRasterizeEnable(); + SyncStencilTestState(); if (regs.clear_flags.scissor) { SyncScissorTest(); From 7617e88fb2310b8a05169b699d2fa2a6a3199646 Mon Sep 17 00:00:00 2001 From: ReinUsesLisp Date: Thu, 26 Mar 2020 01:08:11 -0300 Subject: [PATCH 2/2] gl_rasterizer: Update stencil test regardless of it being disabled --- src/video_core/renderer_opengl/gl_rasterizer.cpp | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/video_core/renderer_opengl/gl_rasterizer.cpp b/src/video_core/renderer_opengl/gl_rasterizer.cpp index fd96172eff..31add708f6 100644 --- a/src/video_core/renderer_opengl/gl_rasterizer.cpp +++ b/src/video_core/renderer_opengl/gl_rasterizer.cpp @@ -1053,12 +1053,8 @@ void RasterizerOpenGL::SyncStencilTestState() { flags[Dirty::StencilTest] = false; const auto& regs = gpu.regs; - if (!regs.stencil_enable) { - glDisable(GL_STENCIL_TEST); - return; - } + oglEnable(GL_STENCIL_TEST, regs.stencil_enable); - glEnable(GL_STENCIL_TEST); glStencilFuncSeparate(GL_FRONT, MaxwellToGL::ComparisonOp(regs.stencil_front_func_func), regs.stencil_front_func_ref, regs.stencil_front_func_mask); glStencilOpSeparate(GL_FRONT, MaxwellToGL::StencilOp(regs.stencil_front_op_fail),