diff options
| author | 2019-12-25 21:52:39 -0300 | |
|---|---|---|
| committer | 2020-02-28 16:52:46 -0300 | |
| commit | e1a16a52fa14835efe6ba9b7418be419cdc4e5d5 (patch) | |
| tree | eaef33afaba0f9e7c084cf879e65ce68026fb67d /src | |
| parent | gl_state: Remove primitive restart tracking (diff) | |
| download | yuzu-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.cpp | 18 | ||||
| -rw-r--r-- | src/video_core/renderer_opengl/gl_state.cpp | 15 | ||||
| -rw-r--r-- | src/video_core/renderer_opengl/gl_state.h | 7 | ||||
| -rw-r--r-- | src/video_core/renderer_opengl/renderer_opengl.cpp | 1 |
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() { | |||
| 1036 | void RasterizerOpenGL::SyncDepthTestState() { | 1032 | void 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 | ||
| 1049 | void RasterizerOpenGL::SyncStencilTestState() { | 1043 | void 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 | ||
| 186 | void 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 | |||
| 200 | void OpenGLState::ApplyStencilTest() { | 186 | void 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); |