diff options
| author | 2019-12-26 02:11:01 -0300 | |
|---|---|---|
| committer | 2020-02-28 17:25:28 -0300 | |
| commit | e8125af8dd8efac3f7171e234b5aee6edfadc626 (patch) | |
| tree | 04e380f33cf0cb5faa5f0476f16ba0b333c42ac6 /src | |
| parent | gl_state: Remove viewport and depth range tracking (diff) | |
| download | yuzu-e8125af8dd8efac3f7171e234b5aee6edfadc626.tar.gz yuzu-e8125af8dd8efac3f7171e234b5aee6edfadc626.tar.xz yuzu-e8125af8dd8efac3f7171e234b5aee6edfadc626.zip | |
gl_state: Remove rasterizer disable tracking
Diffstat (limited to 'src')
| -rw-r--r-- | src/video_core/renderer_opengl/gl_rasterizer.cpp | 8 | ||||
| -rw-r--r-- | src/video_core/renderer_opengl/gl_rasterizer.h | 2 | ||||
| -rw-r--r-- | src/video_core/renderer_opengl/gl_state.cpp | 5 | ||||
| -rw-r--r-- | src/video_core/renderer_opengl/gl_state.h | 3 | ||||
| -rw-r--r-- | src/video_core/renderer_opengl/gl_texture_cache.cpp | 2 | ||||
| -rw-r--r-- | src/video_core/renderer_opengl/renderer_opengl.cpp | 1 |
6 files changed, 8 insertions, 13 deletions
diff --git a/src/video_core/renderer_opengl/gl_rasterizer.cpp b/src/video_core/renderer_opengl/gl_rasterizer.cpp index 63295761a..cb3c81398 100644 --- a/src/video_core/renderer_opengl/gl_rasterizer.cpp +++ b/src/video_core/renderer_opengl/gl_rasterizer.cpp | |||
| @@ -462,7 +462,7 @@ void RasterizerOpenGL::Clear() { | |||
| 462 | 462 | ||
| 463 | ConfigureClearFramebuffer(clear_state, use_color, use_depth, use_stencil); | 463 | ConfigureClearFramebuffer(clear_state, use_color, use_depth, use_stencil); |
| 464 | 464 | ||
| 465 | SyncRasterizeEnable(clear_state); | 465 | SyncRasterizeEnable(); |
| 466 | if (regs.clear_flags.scissor) { | 466 | if (regs.clear_flags.scissor) { |
| 467 | SyncScissorTest(); | 467 | SyncScissorTest(); |
| 468 | } | 468 | } |
| @@ -494,7 +494,7 @@ void RasterizerOpenGL::Draw(bool is_indexed, bool is_instanced) { | |||
| 494 | query_cache.UpdateCounters(); | 494 | query_cache.UpdateCounters(); |
| 495 | 495 | ||
| 496 | SyncViewport(); | 496 | SyncViewport(); |
| 497 | SyncRasterizeEnable(state); | 497 | SyncRasterizeEnable(); |
| 498 | SyncColorMask(); | 498 | SyncColorMask(); |
| 499 | SyncFragmentColorClampState(); | 499 | SyncFragmentColorClampState(); |
| 500 | SyncMultiSampleState(); | 500 | SyncMultiSampleState(); |
| @@ -1048,9 +1048,9 @@ void RasterizerOpenGL::SyncStencilTestState() { | |||
| 1048 | } | 1048 | } |
| 1049 | } | 1049 | } |
| 1050 | 1050 | ||
| 1051 | void RasterizerOpenGL::SyncRasterizeEnable(OpenGLState& current_state) { | 1051 | void RasterizerOpenGL::SyncRasterizeEnable() { |
| 1052 | const auto& regs = system.GPU().Maxwell3D().regs; | 1052 | const auto& regs = system.GPU().Maxwell3D().regs; |
| 1053 | current_state.rasterizer_discard = regs.rasterize_enable == 0; | 1053 | oglEnable(GL_RASTERIZER_DISCARD, regs.rasterize_enable == 0); |
| 1054 | } | 1054 | } |
| 1055 | 1055 | ||
| 1056 | void RasterizerOpenGL::SyncColorMask() { | 1056 | void RasterizerOpenGL::SyncColorMask() { |
diff --git a/src/video_core/renderer_opengl/gl_rasterizer.h b/src/video_core/renderer_opengl/gl_rasterizer.h index d1d0aec32..de21a3511 100644 --- a/src/video_core/renderer_opengl/gl_rasterizer.h +++ b/src/video_core/renderer_opengl/gl_rasterizer.h | |||
| @@ -176,7 +176,7 @@ private: | |||
| 176 | void SyncPointState(); | 176 | void SyncPointState(); |
| 177 | 177 | ||
| 178 | /// Syncs the rasterizer enable state to match the guest state | 178 | /// Syncs the rasterizer enable state to match the guest state |
| 179 | void SyncRasterizeEnable(OpenGLState& current_state); | 179 | void SyncRasterizeEnable(); |
| 180 | 180 | ||
| 181 | /// Syncs Color Mask | 181 | /// Syncs Color Mask |
| 182 | void SyncColorMask(); | 182 | void SyncColorMask(); |
diff --git a/src/video_core/renderer_opengl/gl_state.cpp b/src/video_core/renderer_opengl/gl_state.cpp index 7c08cc3c2..96c3f40f4 100644 --- a/src/video_core/renderer_opengl/gl_state.cpp +++ b/src/video_core/renderer_opengl/gl_state.cpp | |||
| @@ -113,10 +113,6 @@ void OpenGLState::ApplyClipDistances() { | |||
| 113 | } | 113 | } |
| 114 | } | 114 | } |
| 115 | 115 | ||
| 116 | void OpenGLState::ApplyRasterizerDiscard() { | ||
| 117 | Enable(GL_RASTERIZER_DISCARD, cur_state.rasterizer_discard, rasterizer_discard); | ||
| 118 | } | ||
| 119 | |||
| 120 | void OpenGLState::ApplyStencilTest() { | 116 | void OpenGLState::ApplyStencilTest() { |
| 121 | Enable(GL_STENCIL_TEST, cur_state.stencil.test_enabled, stencil.test_enabled); | 117 | Enable(GL_STENCIL_TEST, cur_state.stencil.test_enabled, stencil.test_enabled); |
| 122 | 118 | ||
| @@ -254,7 +250,6 @@ void OpenGLState::Apply() { | |||
| 254 | ApplyShaderProgram(); | 250 | ApplyShaderProgram(); |
| 255 | ApplyProgramPipeline(); | 251 | ApplyProgramPipeline(); |
| 256 | ApplyClipDistances(); | 252 | ApplyClipDistances(); |
| 257 | ApplyRasterizerDiscard(); | ||
| 258 | ApplyStencilTest(); | 253 | ApplyStencilTest(); |
| 259 | ApplyBlending(); | 254 | ApplyBlending(); |
| 260 | ApplyTextures(); | 255 | ApplyTextures(); |
diff --git a/src/video_core/renderer_opengl/gl_state.h b/src/video_core/renderer_opengl/gl_state.h index b4c957c0d..6520c88d2 100644 --- a/src/video_core/renderer_opengl/gl_state.h +++ b/src/video_core/renderer_opengl/gl_state.h | |||
| @@ -13,8 +13,6 @@ namespace OpenGL { | |||
| 13 | 13 | ||
| 14 | class OpenGLState { | 14 | class OpenGLState { |
| 15 | public: | 15 | public: |
| 16 | bool rasterizer_discard = false; // GL_RASTERIZER_DISCARD | ||
| 17 | |||
| 18 | struct { | 16 | struct { |
| 19 | bool test_enabled = false; // GL_STENCIL_TEST | 17 | bool test_enabled = false; // GL_STENCIL_TEST |
| 20 | struct { | 18 | struct { |
| @@ -79,7 +77,6 @@ public: | |||
| 79 | void ApplyShaderProgram(); | 77 | void ApplyShaderProgram(); |
| 80 | void ApplyProgramPipeline(); | 78 | void ApplyProgramPipeline(); |
| 81 | void ApplyClipDistances(); | 79 | void ApplyClipDistances(); |
| 82 | void ApplyRasterizerDiscard(); | ||
| 83 | void ApplyStencilTest(); | 80 | void ApplyStencilTest(); |
| 84 | void ApplyTargetBlending(std::size_t target, bool force); | 81 | void ApplyTargetBlending(std::size_t target, bool force); |
| 85 | void ApplyGlobalBlending(); | 82 | void ApplyGlobalBlending(); |
diff --git a/src/video_core/renderer_opengl/gl_texture_cache.cpp b/src/video_core/renderer_opengl/gl_texture_cache.cpp index f6cb02c53..ed2daf74c 100644 --- a/src/video_core/renderer_opengl/gl_texture_cache.cpp +++ b/src/video_core/renderer_opengl/gl_texture_cache.cpp | |||
| @@ -536,6 +536,8 @@ void TextureCacheOpenGL::ImageBlit(View& src_view, View& dst_view, | |||
| 536 | } else { | 536 | } else { |
| 537 | glDisable(GL_FRAMEBUFFER_SRGB); | 537 | glDisable(GL_FRAMEBUFFER_SRGB); |
| 538 | } | 538 | } |
| 539 | // TODO(Rodrigo): Find out if rasterizer discard affects blits | ||
| 540 | glDisable(GL_RASTERIZER_DISCARD); | ||
| 539 | glDisablei(GL_SCISSOR_TEST, 0); | 541 | glDisablei(GL_SCISSOR_TEST, 0); |
| 540 | 542 | ||
| 541 | u32 buffers{}; | 543 | u32 buffers{}; |
diff --git a/src/video_core/renderer_opengl/renderer_opengl.cpp b/src/video_core/renderer_opengl/renderer_opengl.cpp index 12e820979..d18adaddc 100644 --- a/src/video_core/renderer_opengl/renderer_opengl.cpp +++ b/src/video_core/renderer_opengl/renderer_opengl.cpp | |||
| @@ -580,6 +580,7 @@ void RendererOpenGL::DrawScreen(const Layout::FramebufferLayout& layout) { | |||
| 580 | glDisable(GL_ALPHA_TEST); | 580 | glDisable(GL_ALPHA_TEST); |
| 581 | glDisable(GL_DEPTH_TEST); | 581 | glDisable(GL_DEPTH_TEST); |
| 582 | glDisable(GL_POLYGON_OFFSET_FILL); | 582 | glDisable(GL_POLYGON_OFFSET_FILL); |
| 583 | glDisable(GL_RASTERIZER_DISCARD); | ||
| 583 | glDisablei(GL_SCISSOR_TEST, 0); | 584 | glDisablei(GL_SCISSOR_TEST, 0); |
| 584 | glCullFace(GL_BACK); | 585 | glCullFace(GL_BACK); |
| 585 | glFrontFace(GL_CW); | 586 | glFrontFace(GL_CW); |