aboutsummaryrefslogtreecommitdiff
path: root/src/video_core/renderer_opengl/gl_rasterizer.cpp
diff options
context:
space:
mode:
authorSubv <subv2112@gmail.com>2018-07-02 13:33:06 -0500
committerSubv <subv2112@gmail.com>2018-07-02 13:33:06 -0500
commit18c8ae7750d0dac42c94ef41be041aeea6eb2e9e (patch)
treee87502dbc7c76d7f97527b88ba5a5cc9f77f6103 /src/video_core/renderer_opengl/gl_rasterizer.cpp
parentd480b63e0da6c869157117fe2771da258c4e8ea0 (diff)
GPU: Set up the depth test state on every draw.
Diffstat (limited to 'src/video_core/renderer_opengl/gl_rasterizer.cpp')
-rw-r--r--src/video_core/renderer_opengl/gl_rasterizer.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/video_core/renderer_opengl/gl_rasterizer.cpp b/src/video_core/renderer_opengl/gl_rasterizer.cpp
index b80f4336d..0d0e0653d 100644
--- a/src/video_core/renderer_opengl/gl_rasterizer.cpp
+++ b/src/video_core/renderer_opengl/gl_rasterizer.cpp
@@ -304,6 +304,9 @@ void RasterizerOpenGL::DrawArrays() {
MICROPROFILE_SCOPE(OpenGL_Drawing);
const auto& regs = Core::System().GetInstance().GPU().Maxwell3D().regs;
+ // Sync the depth test state before configuring the framebuffer surfaces.
+ SyncDepthTestState();
+
// TODO(bunnei): Implement these
const bool has_stencil = false;
const bool using_color_fb = true;
@@ -719,6 +722,14 @@ void RasterizerOpenGL::SyncDepthOffset() {
UNREACHABLE();
}
+void RasterizerOpenGL::SyncDepthTestState() {
+ const auto& regs = Core::System().GetInstance().GPU().Maxwell3D().regs;
+
+ state.depth.test_enabled = regs.depth_test_enable != 0;
+ state.depth.write_mask = regs.depth_write_enabled ? GL_TRUE : GL_FALSE;
+ state.depth.test_func = MaxwellToGL::ComparisonOp(regs.depth_test_func);
+}
+
void RasterizerOpenGL::SyncBlendState() {
const auto& regs = Core::System().GetInstance().GPU().Maxwell3D().regs;