summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/video_core/renderer_opengl/gl_rasterizer.cpp10
-rw-r--r--src/video_core/renderer_opengl/gl_rasterizer.h7
-rw-r--r--src/video_core/renderer_opengl/gl_state.cpp8
-rw-r--r--src/video_core/renderer_opengl/gl_state.h8
4 files changed, 20 insertions, 13 deletions
diff --git a/src/video_core/renderer_opengl/gl_rasterizer.cpp b/src/video_core/renderer_opengl/gl_rasterizer.cpp
index be51c5215..b472f421f 100644
--- a/src/video_core/renderer_opengl/gl_rasterizer.cpp
+++ b/src/video_core/renderer_opengl/gl_rasterizer.cpp
@@ -570,6 +570,7 @@ void RasterizerOpenGL::DrawArrays() {
570 SyncBlendState(); 570 SyncBlendState();
571 SyncLogicOpState(); 571 SyncLogicOpState();
572 SyncCullMode(); 572 SyncCullMode();
573 SyncDepthRange();
573 SyncScissorTest(); 574 SyncScissorTest();
574 // Alpha Testing is synced on shaders. 575 // Alpha Testing is synced on shaders.
575 SyncTransformFeedback(); 576 SyncTransformFeedback();
@@ -923,12 +924,11 @@ void RasterizerOpenGL::SyncCullMode() {
923 } 924 }
924} 925}
925 926
926void RasterizerOpenGL::SyncDepthScale() { 927void RasterizerOpenGL::SyncDepthRange() {
927 UNREACHABLE(); 928 const auto& regs = Core::System::GetInstance().GPU().Maxwell3D().regs;
928}
929 929
930void RasterizerOpenGL::SyncDepthOffset() { 930 state.depth.depth_range_near = regs.viewport->depth_range_near;
931 UNREACHABLE(); 931 state.depth.depth_range_far = regs.viewport->depth_range_far;
932} 932}
933 933
934void RasterizerOpenGL::SyncDepthTestState() { 934void RasterizerOpenGL::SyncDepthTestState() {
diff --git a/src/video_core/renderer_opengl/gl_rasterizer.h b/src/video_core/renderer_opengl/gl_rasterizer.h
index 0e90a31f5..731a336d5 100644
--- a/src/video_core/renderer_opengl/gl_rasterizer.h
+++ b/src/video_core/renderer_opengl/gl_rasterizer.h
@@ -144,11 +144,8 @@ private:
144 /// Syncs the cull mode to match the guest state 144 /// Syncs the cull mode to match the guest state
145 void SyncCullMode(); 145 void SyncCullMode();
146 146
147 /// Syncs the depth scale to match the guest state 147 /// Syncs the depth range to match the guest state
148 void SyncDepthScale(); 148 void SyncDepthRange();
149
150 /// Syncs the depth offset to match the guest state
151 void SyncDepthOffset();
152 149
153 /// Syncs the depth test state to match the guest state 150 /// Syncs the depth test state to match the guest state
154 void SyncDepthTestState(); 151 void SyncDepthTestState();
diff --git a/src/video_core/renderer_opengl/gl_state.cpp b/src/video_core/renderer_opengl/gl_state.cpp
index 1fe26a2a9..ba6c6919a 100644
--- a/src/video_core/renderer_opengl/gl_state.cpp
+++ b/src/video_core/renderer_opengl/gl_state.cpp
@@ -21,6 +21,8 @@ OpenGLState::OpenGLState() {
21 depth.test_enabled = false; 21 depth.test_enabled = false;
22 depth.test_func = GL_LESS; 22 depth.test_func = GL_LESS;
23 depth.write_mask = GL_TRUE; 23 depth.write_mask = GL_TRUE;
24 depth.depth_range_near = 0.0f;
25 depth.depth_range_far = 1.0f;
24 26
25 color_mask.red_enabled = GL_TRUE; 27 color_mask.red_enabled = GL_TRUE;
26 color_mask.green_enabled = GL_TRUE; 28 color_mask.green_enabled = GL_TRUE;
@@ -119,6 +121,12 @@ void OpenGLState::Apply() const {
119 glDepthMask(depth.write_mask); 121 glDepthMask(depth.write_mask);
120 } 122 }
121 123
124 // Depth range
125 if (depth.depth_range_near != cur_state.depth.depth_range_near ||
126 depth.depth_range_far != cur_state.depth.depth_range_far) {
127 glDepthRange(depth.depth_range_near, depth.depth_range_far);
128 }
129
122 // Color mask 130 // Color mask
123 if (color_mask.red_enabled != cur_state.color_mask.red_enabled || 131 if (color_mask.red_enabled != cur_state.color_mask.red_enabled ||
124 color_mask.green_enabled != cur_state.color_mask.green_enabled || 132 color_mask.green_enabled != cur_state.color_mask.green_enabled ||
diff --git a/src/video_core/renderer_opengl/gl_state.h b/src/video_core/renderer_opengl/gl_state.h
index dc21a2ee3..daf7eb533 100644
--- a/src/video_core/renderer_opengl/gl_state.h
+++ b/src/video_core/renderer_opengl/gl_state.h
@@ -42,9 +42,11 @@ public:
42 } cull; 42 } cull;
43 43
44 struct { 44 struct {
45 bool test_enabled; // GL_DEPTH_TEST 45 bool test_enabled; // GL_DEPTH_TEST
46 GLenum test_func; // GL_DEPTH_FUNC 46 GLenum test_func; // GL_DEPTH_FUNC
47 GLboolean write_mask; // GL_DEPTH_WRITEMASK 47 GLboolean write_mask; // GL_DEPTH_WRITEMASK
48 GLfloat depth_range_near; // GL_DEPTH_RANGE
49 GLfloat depth_range_far; // GL_DEPTH_RANGE
48 } depth; 50 } depth;
49 51
50 struct { 52 struct {