Merge pull request #3560 from ReinUsesLisp/fix-stencil

gl_rasterizer: Synchronize stencil testing on clears
This commit is contained in:
bunnei 2020-03-30 17:03:07 -04:00 committed by GitHub
commit 4c72190a06
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -444,6 +444,7 @@ void RasterizerOpenGL::Clear() {
} }
SyncRasterizeEnable(); SyncRasterizeEnable();
SyncStencilTestState();
if (regs.clear_flags.scissor) { if (regs.clear_flags.scissor) {
SyncScissorTest(); SyncScissorTest();
@ -1052,12 +1053,8 @@ void RasterizerOpenGL::SyncStencilTestState() {
flags[Dirty::StencilTest] = false; flags[Dirty::StencilTest] = false;
const auto& regs = gpu.regs; const auto& regs = gpu.regs;
if (!regs.stencil_enable) { oglEnable(GL_STENCIL_TEST, regs.stencil_enable);
glDisable(GL_STENCIL_TEST);
return;
}
glEnable(GL_STENCIL_TEST);
glStencilFuncSeparate(GL_FRONT, MaxwellToGL::ComparisonOp(regs.stencil_front_func_func), glStencilFuncSeparate(GL_FRONT, MaxwellToGL::ComparisonOp(regs.stencil_front_func_func),
regs.stencil_front_func_ref, regs.stencil_front_func_mask); regs.stencil_front_func_ref, regs.stencil_front_func_mask);
glStencilOpSeparate(GL_FRONT, MaxwellToGL::StencilOp(regs.stencil_front_op_fail), glStencilOpSeparate(GL_FRONT, MaxwellToGL::StencilOp(regs.stencil_front_op_fail),