summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar ReinUsesLisp2019-12-26 02:11:01 -0300
committerGravatar ReinUsesLisp2020-02-28 17:25:28 -0300
commite8125af8dd8efac3f7171e234b5aee6edfadc626 (patch)
tree04e380f33cf0cb5faa5f0476f16ba0b333c42ac6 /src
parentgl_state: Remove viewport and depth range tracking (diff)
downloadyuzu-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.cpp8
-rw-r--r--src/video_core/renderer_opengl/gl_rasterizer.h2
-rw-r--r--src/video_core/renderer_opengl/gl_state.cpp5
-rw-r--r--src/video_core/renderer_opengl/gl_state.h3
-rw-r--r--src/video_core/renderer_opengl/gl_texture_cache.cpp2
-rw-r--r--src/video_core/renderer_opengl/renderer_opengl.cpp1
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
1051void RasterizerOpenGL::SyncRasterizeEnable(OpenGLState& current_state) { 1051void 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
1056void RasterizerOpenGL::SyncColorMask() { 1056void 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
116void OpenGLState::ApplyRasterizerDiscard() {
117 Enable(GL_RASTERIZER_DISCARD, cur_state.rasterizer_discard, rasterizer_discard);
118}
119
120void OpenGLState::ApplyStencilTest() { 116void 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
14class OpenGLState { 14class OpenGLState {
15public: 15public:
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);