diff options
author | ReinUsesLisp <reinuseslisp@airmail.cc> | 2019-12-30 03:08:32 +0100 |
---|---|---|
committer | ReinUsesLisp <reinuseslisp@airmail.cc> | 2020-02-28 21:56:42 +0100 |
commit | 37536d7a4996d0008d8988f50dcbc7c126a99c14 (patch) | |
tree | b64ed591078ed28bb662f100db64de90838d63d5 /src/video_core/renderer_opengl/gl_rasterizer.cpp | |
parent | gl_state_tracker: Implement depth dirty flags (diff) | |
download | yuzu-37536d7a4996d0008d8988f50dcbc7c126a99c14.tar yuzu-37536d7a4996d0008d8988f50dcbc7c126a99c14.tar.gz yuzu-37536d7a4996d0008d8988f50dcbc7c126a99c14.tar.bz2 yuzu-37536d7a4996d0008d8988f50dcbc7c126a99c14.tar.lz yuzu-37536d7a4996d0008d8988f50dcbc7c126a99c14.tar.xz yuzu-37536d7a4996d0008d8988f50dcbc7c126a99c14.tar.zst yuzu-37536d7a4996d0008d8988f50dcbc7c126a99c14.zip |
Diffstat (limited to 'src/video_core/renderer_opengl/gl_rasterizer.cpp')
-rw-r--r-- | src/video_core/renderer_opengl/gl_rasterizer.cpp | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/src/video_core/renderer_opengl/gl_rasterizer.cpp b/src/video_core/renderer_opengl/gl_rasterizer.cpp index d747e29ad..bc4542b69 100644 --- a/src/video_core/renderer_opengl/gl_rasterizer.cpp +++ b/src/video_core/renderer_opengl/gl_rasterizer.cpp @@ -1045,14 +1045,20 @@ void RasterizerOpenGL::SyncDepthTestState() { } void RasterizerOpenGL::SyncStencilTestState() { - auto& maxwell3d = system.GPU().Maxwell3D(); - const auto& regs = maxwell3d.regs; + auto& gpu = system.GPU().Maxwell3D(); + auto& flags = gpu.dirty.flags; + if (!flags[Dirty::StencilTest]) { + return; + } + flags[Dirty::StencilTest] = false; - oglEnable(GL_STENCIL_TEST, regs.stencil_enable); + const auto& regs = gpu.regs; if (!regs.stencil_enable) { + glDisable(GL_STENCIL_TEST); return; } + 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), |