Explorar o código

gl_rasterizer: Notify depth mask changes on clear

ReinUsesLisp %!s(int64=6) %!d(string=hai) anos
pai
achega
35bb9239ca

+ 1 - 1
src/video_core/renderer_opengl/gl_rasterizer.cpp

@@ -435,7 +435,7 @@ void RasterizerOpenGL::Clear() {
         ASSERT_MSG(regs.zeta_enable != 0, "Tried to clear Z but buffer is not enabled!");
         ASSERT_MSG(regs.zeta_enable != 0, "Tried to clear Z but buffer is not enabled!");
         use_depth = true;
         use_depth = true;
 
 
-        // TODO: Signal state tracker about these changes
+        state_tracker.NotifyDepthMask();
         glDepthMask(GL_TRUE);
         glDepthMask(GL_TRUE);
     }
     }
     if (regs.clear_buffers.S) {
     if (regs.clear_buffers.S) {

+ 5 - 0
src/video_core/renderer_opengl/gl_state_tracker.h

@@ -149,6 +149,11 @@ public:
         flags[OpenGL::Dirty::CullTest] = true;
         flags[OpenGL::Dirty::CullTest] = true;
     }
     }
 
 
+    void NotifyDepthMask() {
+        auto& flags = system.GPU().Maxwell3D().dirty.flags;
+        flags[OpenGL::Dirty::DepthMask] = true;
+    }
+
     void NotifyDepthTest() {
     void NotifyDepthTest() {
         auto& flags = system.GPU().Maxwell3D().dirty.flags;
         auto& flags = system.GPU().Maxwell3D().dirty.flags;
         flags[OpenGL::Dirty::DepthTest] = true;
         flags[OpenGL::Dirty::DepthTest] = true;