summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/video_core/renderer_opengl/gl_rasterizer.cpp10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/video_core/renderer_opengl/gl_rasterizer.cpp b/src/video_core/renderer_opengl/gl_rasterizer.cpp
index 063f41327..826eee7df 100644
--- a/src/video_core/renderer_opengl/gl_rasterizer.cpp
+++ b/src/video_core/renderer_opengl/gl_rasterizer.cpp
@@ -933,13 +933,15 @@ void RasterizerOpenGL::SyncViewport() {
933 } 933 }
934 flags[Dirty::Viewport0 + i] = false; 934 flags[Dirty::Viewport0 + i] = false;
935 935
936 const Common::Rectangle<f32> rect{regs.viewport_transform[i].GetRect()}; 936 const auto& src = regs.viewport_transform[i];
937 const Common::Rectangle<f32> rect{src.GetRect()};
937 glViewportIndexedf(static_cast<GLuint>(i), rect.left, rect.bottom, rect.GetWidth(), 938 glViewportIndexedf(static_cast<GLuint>(i), rect.left, rect.bottom, rect.GetWidth(),
938 rect.GetHeight()); 939 rect.GetHeight());
939 940
940 const auto& src = regs.viewports[i]; 941 const GLdouble reduce_z = regs.depth_mode == Maxwell::DepthMode::MinusOneToOne;
941 glDepthRangeIndexed(static_cast<GLuint>(i), static_cast<GLdouble>(src.depth_range_near), 942 const GLdouble near_depth = src.translate_z - src.scale_z * reduce_z;
942 static_cast<GLdouble>(src.depth_range_far)); 943 const GLdouble far_depth = src.translate_z + src.scale_z;
944 glDepthRangeIndexed(static_cast<GLuint>(i), near_depth, far_depth);
943 } 945 }
944 } 946 }
945} 947}