summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar ReinUsesLisp2019-12-26 01:07:34 -0300
committerGravatar ReinUsesLisp2020-02-28 16:58:30 -0300
commit2392b548bee87553b39f50c1159640b0dabc4b13 (patch)
tree5a1a5046be222eee078acc5f3a5e55d34abfaff6 /src
parentgl_state: Remove multisample tracking (diff)
downloadyuzu-2392b548bee87553b39f50c1159640b0dabc4b13.tar.gz
yuzu-2392b548bee87553b39f50c1159640b0dabc4b13.tar.xz
yuzu-2392b548bee87553b39f50c1159640b0dabc4b13.zip
gl_state: Remove clamp framebuffer color tracking
This commit doesn't reset it for screen draws because clamping doesn't change anything there.
Diffstat (limited to 'src')
-rw-r--r--src/video_core/renderer_opengl/gl_rasterizer.cpp10
-rw-r--r--src/video_core/renderer_opengl/gl_state.cpp8
-rw-r--r--src/video_core/renderer_opengl/gl_state.h5
3 files changed, 6 insertions, 17 deletions
diff --git a/src/video_core/renderer_opengl/gl_rasterizer.cpp b/src/video_core/renderer_opengl/gl_rasterizer.cpp
index dc2d60156..d7971f86f 100644
--- a/src/video_core/renderer_opengl/gl_rasterizer.cpp
+++ b/src/video_core/renderer_opengl/gl_rasterizer.cpp
@@ -415,6 +415,11 @@ void RasterizerOpenGL::Clear() {
415 clear_state.color_mask[0].green_enabled = regs.clear_buffers.G ? GL_TRUE : GL_FALSE; 415 clear_state.color_mask[0].green_enabled = regs.clear_buffers.G ? GL_TRUE : GL_FALSE;
416 clear_state.color_mask[0].blue_enabled = regs.clear_buffers.B ? GL_TRUE : GL_FALSE; 416 clear_state.color_mask[0].blue_enabled = regs.clear_buffers.B ? GL_TRUE : GL_FALSE;
417 clear_state.color_mask[0].alpha_enabled = regs.clear_buffers.A ? GL_TRUE : GL_FALSE; 417 clear_state.color_mask[0].alpha_enabled = regs.clear_buffers.A ? GL_TRUE : GL_FALSE;
418
419 // TODO: Signal state tracker about these changes
420 SyncFramebufferSRGB();
421 // TODO(Rodrigo): Determine if clamping is used on clears
422 SyncFragmentColorClampState();
418 } 423 }
419 if (regs.clear_buffers.Z) { 424 if (regs.clear_buffers.Z) {
420 ASSERT_MSG(regs.zeta_enable != 0, "Tried to clear Z but buffer is not enabled!"); 425 ASSERT_MSG(regs.zeta_enable != 0, "Tried to clear Z but buffer is not enabled!");
@@ -454,9 +459,6 @@ void RasterizerOpenGL::Clear() {
454 } 459 }
455 } 460 }
456 461
457 // TODO: Signal state tracker about these changes
458 SyncFramebufferSRGB();
459
460 if (!use_color && !use_depth && !use_stencil) { 462 if (!use_color && !use_depth && !use_stencil) {
461 // No color surface nor depth/stencil surface are enabled 463 // No color surface nor depth/stencil surface are enabled
462 return; 464 return;
@@ -1089,7 +1091,7 @@ void RasterizerOpenGL::SyncMultiSampleState() {
1089 1091
1090void RasterizerOpenGL::SyncFragmentColorClampState() { 1092void RasterizerOpenGL::SyncFragmentColorClampState() {
1091 const auto& regs = system.GPU().Maxwell3D().regs; 1093 const auto& regs = system.GPU().Maxwell3D().regs;
1092 state.fragment_color_clamp.enabled = regs.frag_color_clamp != 0; 1094 glClampColor(GL_CLAMP_FRAGMENT_COLOR, regs.frag_color_clamp ? GL_TRUE : GL_FALSE);
1093} 1095}
1094 1096
1095void RasterizerOpenGL::SyncBlendState() { 1097void RasterizerOpenGL::SyncBlendState() {
diff --git a/src/video_core/renderer_opengl/gl_state.cpp b/src/video_core/renderer_opengl/gl_state.cpp
index b726adfc7..f8325d6e7 100644
--- a/src/video_core/renderer_opengl/gl_state.cpp
+++ b/src/video_core/renderer_opengl/gl_state.cpp
@@ -117,13 +117,6 @@ void OpenGLState::ApplyClipDistances() {
117 } 117 }
118} 118}
119 119
120void OpenGLState::ApplyFragmentColorClamp() {
121 if (UpdateValue(cur_state.fragment_color_clamp.enabled, fragment_color_clamp.enabled)) {
122 glClampColor(GL_CLAMP_FRAGMENT_COLOR_ARB,
123 fragment_color_clamp.enabled ? GL_TRUE : GL_FALSE);
124 }
125}
126
127void OpenGLState::ApplyRasterizerDiscard() { 120void OpenGLState::ApplyRasterizerDiscard() {
128 Enable(GL_RASTERIZER_DISCARD, cur_state.rasterizer_discard, rasterizer_discard); 121 Enable(GL_RASTERIZER_DISCARD, cur_state.rasterizer_discard, rasterizer_discard);
129} 122}
@@ -317,7 +310,6 @@ void OpenGLState::Apply() {
317 ApplyShaderProgram(); 310 ApplyShaderProgram();
318 ApplyProgramPipeline(); 311 ApplyProgramPipeline();
319 ApplyClipDistances(); 312 ApplyClipDistances();
320 ApplyFragmentColorClamp();
321 ApplyRasterizerDiscard(); 313 ApplyRasterizerDiscard();
322 ApplyColorMask(); 314 ApplyColorMask();
323 ApplyViewport(); 315 ApplyViewport();
diff --git a/src/video_core/renderer_opengl/gl_state.h b/src/video_core/renderer_opengl/gl_state.h
index 5a8a728f2..89eb30dfc 100644
--- a/src/video_core/renderer_opengl/gl_state.h
+++ b/src/video_core/renderer_opengl/gl_state.h
@@ -13,10 +13,6 @@ namespace OpenGL {
13 13
14class OpenGLState { 14class OpenGLState {
15public: 15public:
16 struct {
17 bool enabled = false; // GL_CLAMP_FRAGMENT_COLOR_ARB
18 } fragment_color_clamp;
19
20 bool rasterizer_discard = false; // GL_RASTERIZER_DISCARD 16 bool rasterizer_discard = false; // GL_RASTERIZER_DISCARD
21 17
22 struct ColorMask { 18 struct ColorMask {
@@ -110,7 +106,6 @@ public:
110 void ApplyShaderProgram(); 106 void ApplyShaderProgram();
111 void ApplyProgramPipeline(); 107 void ApplyProgramPipeline();
112 void ApplyClipDistances(); 108 void ApplyClipDistances();
113 void ApplyFragmentColorClamp();
114 void ApplyRasterizerDiscard(); 109 void ApplyRasterizerDiscard();
115 void ApplyColorMask(); 110 void ApplyColorMask();
116 void ApplyStencilTest(); 111 void ApplyStencilTest();