summaryrefslogtreecommitdiff
path: root/src/video_core/renderer_opengl
diff options
context:
space:
mode:
authorGravatar Rodrigo Locatti2019-12-10 21:20:52 -0300
committerGravatar GitHub2019-12-10 21:20:52 -0300
commitc8db7d1399bf83937debe347e6d214c501afdff6 (patch)
tree82e494fd45cf84d676b1e0b3c88e08bc0ce17300 /src/video_core/renderer_opengl
parentMerge pull request #3208 from ReinUsesLisp/vk-shader-decompiler (diff)
parentMaxwell3D: Implement Depth Mode. (diff)
downloadyuzu-c8db7d1399bf83937debe347e6d214c501afdff6.tar.gz
yuzu-c8db7d1399bf83937debe347e6d214c501afdff6.tar.xz
yuzu-c8db7d1399bf83937debe347e6d214c501afdff6.zip
Merge pull request #3211 from FernandoS27/depth-mode
Maxwell3D: Implement Depth Mode.
Diffstat (limited to 'src/video_core/renderer_opengl')
-rw-r--r--src/video_core/renderer_opengl/gl_rasterizer.cpp4
-rw-r--r--src/video_core/renderer_opengl/gl_state.cpp5
-rw-r--r--src/video_core/renderer_opengl/gl_state.h1
3 files changed, 8 insertions, 2 deletions
diff --git a/src/video_core/renderer_opengl/gl_rasterizer.cpp b/src/video_core/renderer_opengl/gl_rasterizer.cpp
index 9eef7fcd2..88d78d2ad 100644
--- a/src/video_core/renderer_opengl/gl_rasterizer.cpp
+++ b/src/video_core/renderer_opengl/gl_rasterizer.cpp
@@ -1028,6 +1028,10 @@ void RasterizerOpenGL::SyncViewport(OpenGLState& current_state) {
1028 flip_y = !flip_y; 1028 flip_y = !flip_y;
1029 } 1029 }
1030 state.clip_control.origin = flip_y ? GL_UPPER_LEFT : GL_LOWER_LEFT; 1030 state.clip_control.origin = flip_y ? GL_UPPER_LEFT : GL_LOWER_LEFT;
1031 state.clip_control.depth_mode =
1032 regs.depth_mode == Tegra::Engines::Maxwell3D::Regs::DepthMode::ZeroToOne
1033 ? GL_ZERO_TO_ONE
1034 : GL_NEGATIVE_ONE_TO_ONE;
1031} 1035}
1032 1036
1033void RasterizerOpenGL::SyncClipEnabled( 1037void RasterizerOpenGL::SyncClipEnabled(
diff --git a/src/video_core/renderer_opengl/gl_state.cpp b/src/video_core/renderer_opengl/gl_state.cpp
index 39b3986d3..ccc1e050a 100644
--- a/src/video_core/renderer_opengl/gl_state.cpp
+++ b/src/video_core/renderer_opengl/gl_state.cpp
@@ -411,8 +411,9 @@ void OpenGLState::ApplyAlphaTest() {
411} 411}
412 412
413void OpenGLState::ApplyClipControl() { 413void OpenGLState::ApplyClipControl() {
414 if (UpdateValue(cur_state.clip_control.origin, clip_control.origin)) { 414 if (UpdateTie(std::tie(cur_state.clip_control.origin, cur_state.clip_control.depth_mode),
415 glClipControl(clip_control.origin, GL_NEGATIVE_ONE_TO_ONE); 415 std::tie(clip_control.origin, clip_control.depth_mode))) {
416 glClipControl(clip_control.origin, clip_control.depth_mode);
416 } 417 }
417} 418}
418 419
diff --git a/src/video_core/renderer_opengl/gl_state.h b/src/video_core/renderer_opengl/gl_state.h
index e53c2c5f2..0b5895084 100644
--- a/src/video_core/renderer_opengl/gl_state.h
+++ b/src/video_core/renderer_opengl/gl_state.h
@@ -150,6 +150,7 @@ public:
150 150
151 struct { 151 struct {
152 GLenum origin = GL_LOWER_LEFT; 152 GLenum origin = GL_LOWER_LEFT;
153 GLenum depth_mode = GL_NEGATIVE_ONE_TO_ONE;
153 } clip_control; 154 } clip_control;
154 155
155 OpenGLState(); 156 OpenGLState();