From ef7f6eb67de9d05522b05ac520ef3184250fcbd4 Mon Sep 17 00:00:00 2001 From: ReinUsesLisp Date: Fri, 21 Feb 2020 03:29:24 -0300 Subject: [PATCH] renderer_opengl: Fix edge-case where alpha testing might cull presentation --- src/video_core/renderer_opengl/gl_state_tracker.h | 5 +++++ src/video_core/renderer_opengl/renderer_opengl.cpp | 2 ++ 2 files changed, 7 insertions(+) diff --git a/src/video_core/renderer_opengl/gl_state_tracker.h b/src/video_core/renderer_opengl/gl_state_tracker.h index 38b38c4a7e..e084829111 100644 --- a/src/video_core/renderer_opengl/gl_state_tracker.h +++ b/src/video_core/renderer_opengl/gl_state_tracker.h @@ -190,6 +190,11 @@ public: flags[OpenGL::Dirty::ClipControl] = true; } + void NotifyAlphaTest() { + auto& flags = system.GPU().Maxwell3D().dirty.flags; + flags[OpenGL::Dirty::AlphaTest] = true; + } + private: Core::System& system; diff --git a/src/video_core/renderer_opengl/renderer_opengl.cpp b/src/video_core/renderer_opengl/renderer_opengl.cpp index 7b4c2b80c7..a51410660d 100644 --- a/src/video_core/renderer_opengl/renderer_opengl.cpp +++ b/src/video_core/renderer_opengl/renderer_opengl.cpp @@ -591,6 +591,7 @@ void RendererOpenGL::DrawScreen(const Layout::FramebufferLayout& layout) { state_tracker.NotifyFramebufferSRGB(); state_tracker.NotifyLogicOp(); state_tracker.NotifyClipControl(); + state_tracker.NotifyAlphaTest(); program_manager.UseVertexShader(vertex_program.handle); program_manager.UseGeometryShader(0); @@ -608,6 +609,7 @@ void RendererOpenGL::DrawScreen(const Layout::FramebufferLayout& layout) { glDisable(GL_STENCIL_TEST); glDisable(GL_POLYGON_OFFSET_FILL); glDisable(GL_RASTERIZER_DISCARD); + glDisable(GL_ALPHA_TEST); glDisablei(GL_BLEND, 0); glDisablei(GL_SCISSOR_TEST, 0); glCullFace(GL_BACK);