summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar ReinUsesLisp2019-12-25 21:52:39 -0300
committerGravatar ReinUsesLisp2020-02-28 16:52:46 -0300
commite1a16a52fa14835efe6ba9b7418be419cdc4e5d5 (patch)
treeeaef33afaba0f9e7c084cf879e65ce68026fb67d /src
parentgl_state: Remove primitive restart tracking (diff)
downloadyuzu-e1a16a52fa14835efe6ba9b7418be419cdc4e5d5.tar.gz
yuzu-e1a16a52fa14835efe6ba9b7418be419cdc4e5d5.tar.xz
yuzu-e1a16a52fa14835efe6ba9b7418be419cdc4e5d5.zip
gl_state: Remove depth tracking
Diffstat (limited to 'src')
-rw-r--r--src/video_core/renderer_opengl/gl_rasterizer.cpp18
-rw-r--r--src/video_core/renderer_opengl/gl_state.cpp15
-rw-r--r--src/video_core/renderer_opengl/gl_state.h7
-rw-r--r--src/video_core/renderer_opengl/renderer_opengl.cpp1
4 files changed, 7 insertions, 34 deletions
diff --git a/src/video_core/renderer_opengl/gl_rasterizer.cpp b/src/video_core/renderer_opengl/gl_rasterizer.cpp
index 975cd2f12..6bb6f9f47 100644
--- a/src/video_core/renderer_opengl/gl_rasterizer.cpp
+++ b/src/video_core/renderer_opengl/gl_rasterizer.cpp
@@ -446,12 +446,8 @@ void RasterizerOpenGL::Clear() {
446 ASSERT_MSG(regs.zeta_enable != 0, "Tried to clear Z but buffer is not enabled!"); 446 ASSERT_MSG(regs.zeta_enable != 0, "Tried to clear Z but buffer is not enabled!");
447 use_depth = true; 447 use_depth = true;
448 448
449 // Always enable the depth write when clearing the depth buffer. The depth write mask is 449 // TODO: Signal state tracker about these changes
450 // ignored when clearing the buffer in the Switch, but OpenGL obeys it so we set it to 450 glDepthMask(GL_TRUE);
451 // true.
452 clear_state.depth.test_enabled = true;
453 clear_state.depth.test_func = GL_ALWAYS;
454 clear_state.depth.write_mask = GL_TRUE;
455 } 451 }
456 if (regs.clear_buffers.S) { 452 if (regs.clear_buffers.S) {
457 ASSERT_MSG(regs.zeta_enable != 0, "Tried to clear stencil but buffer is not enabled!"); 453 ASSERT_MSG(regs.zeta_enable != 0, "Tried to clear stencil but buffer is not enabled!");
@@ -1036,14 +1032,12 @@ void RasterizerOpenGL::SyncPrimitiveRestart() {
1036void RasterizerOpenGL::SyncDepthTestState() { 1032void RasterizerOpenGL::SyncDepthTestState() {
1037 const auto& regs = system.GPU().Maxwell3D().regs; 1033 const auto& regs = system.GPU().Maxwell3D().regs;
1038 1034
1039 state.depth.test_enabled = regs.depth_test_enable != 0; 1035 glDepthMask(regs.depth_write_enabled ? GL_TRUE : GL_FALSE);
1040 state.depth.write_mask = regs.depth_write_enabled ? GL_TRUE : GL_FALSE;
1041 1036
1042 if (!state.depth.test_enabled) { 1037 oglEnable(GL_DEPTH_TEST, regs.depth_test_enable);
1043 return; 1038 if (regs.depth_test_enable) {
1039 glDepthFunc(MaxwellToGL::ComparisonOp(regs.depth_test_func));
1044 } 1040 }
1045
1046 state.depth.test_func = MaxwellToGL::ComparisonOp(regs.depth_test_func);
1047} 1041}
1048 1042
1049void RasterizerOpenGL::SyncStencilTestState() { 1043void RasterizerOpenGL::SyncStencilTestState() {
diff --git a/src/video_core/renderer_opengl/gl_state.cpp b/src/video_core/renderer_opengl/gl_state.cpp
index 49a15f82f..45fa3042d 100644
--- a/src/video_core/renderer_opengl/gl_state.cpp
+++ b/src/video_core/renderer_opengl/gl_state.cpp
@@ -183,20 +183,6 @@ void OpenGLState::ApplyColorMask() {
183 } 183 }
184} 184}
185 185
186void OpenGLState::ApplyDepth() {
187 Enable(GL_DEPTH_TEST, cur_state.depth.test_enabled, depth.test_enabled);
188
189 if (cur_state.depth.test_func != depth.test_func) {
190 cur_state.depth.test_func = depth.test_func;
191 glDepthFunc(depth.test_func);
192 }
193
194 if (cur_state.depth.write_mask != depth.write_mask) {
195 cur_state.depth.write_mask = depth.write_mask;
196 glDepthMask(depth.write_mask);
197 }
198}
199
200void OpenGLState::ApplyStencilTest() { 186void OpenGLState::ApplyStencilTest() {
201 Enable(GL_STENCIL_TEST, cur_state.stencil.test_enabled, stencil.test_enabled); 187 Enable(GL_STENCIL_TEST, cur_state.stencil.test_enabled, stencil.test_enabled);
202 188
@@ -380,7 +366,6 @@ void OpenGLState::Apply() {
380 ApplyViewport(); 366 ApplyViewport();
381 ApplyStencilTest(); 367 ApplyStencilTest();
382 ApplySRgb(); 368 ApplySRgb();
383 ApplyDepth();
384 ApplyBlending(); 369 ApplyBlending();
385 ApplyTextures(); 370 ApplyTextures();
386 ApplySamplers(); 371 ApplySamplers();
diff --git a/src/video_core/renderer_opengl/gl_state.h b/src/video_core/renderer_opengl/gl_state.h
index 938222d38..036eeae97 100644
--- a/src/video_core/renderer_opengl/gl_state.h
+++ b/src/video_core/renderer_opengl/gl_state.h
@@ -31,12 +31,6 @@ public:
31 bool near_plane = false; 31 bool near_plane = false;
32 } depth_clamp; // GL_DEPTH_CLAMP 32 } depth_clamp; // GL_DEPTH_CLAMP
33 33
34 struct {
35 bool test_enabled = false; // GL_DEPTH_TEST
36 GLboolean write_mask = GL_TRUE; // GL_DEPTH_WRITEMASK
37 GLenum test_func = GL_LESS; // GL_DEPTH_FUNC
38 } depth;
39
40 bool rasterizer_discard = false; // GL_RASTERIZER_DISCARD 34 bool rasterizer_discard = false; // GL_RASTERIZER_DISCARD
41 35
42 struct ColorMask { 36 struct ColorMask {
@@ -137,7 +131,6 @@ public:
137 void ApplySRgb(); 131 void ApplySRgb();
138 void ApplyRasterizerDiscard(); 132 void ApplyRasterizerDiscard();
139 void ApplyColorMask(); 133 void ApplyColorMask();
140 void ApplyDepth();
141 void ApplyStencilTest(); 134 void ApplyStencilTest();
142 void ApplyViewport(); 135 void ApplyViewport();
143 void ApplyTargetBlending(std::size_t target, bool force); 136 void ApplyTargetBlending(std::size_t target, bool force);
diff --git a/src/video_core/renderer_opengl/renderer_opengl.cpp b/src/video_core/renderer_opengl/renderer_opengl.cpp
index 104b11b0d..9cd67e05e 100644
--- a/src/video_core/renderer_opengl/renderer_opengl.cpp
+++ b/src/video_core/renderer_opengl/renderer_opengl.cpp
@@ -576,6 +576,7 @@ void RendererOpenGL::DrawScreenTriangles(const ScreenInfo& screen_info, float x,
576 glEnable(GL_CULL_FACE); 576 glEnable(GL_CULL_FACE);
577 glDisable(GL_COLOR_LOGIC_OP); 577 glDisable(GL_COLOR_LOGIC_OP);
578 glDisable(GL_ALPHA_TEST); 578 glDisable(GL_ALPHA_TEST);
579 glDisable(GL_DEPTH_TEST);
579 glDisable(GL_POLYGON_OFFSET_FILL); 580 glDisable(GL_POLYGON_OFFSET_FILL);
580 glCullFace(GL_BACK); 581 glCullFace(GL_BACK);
581 glFrontFace(GL_CW); 582 glFrontFace(GL_CW);