summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorReinUsesLisp <reinuseslisp@airmail.cc>2019-12-26 06:27:26 +0100
committerReinUsesLisp <reinuseslisp@airmail.cc>2020-02-28 21:31:57 +0100
commit07a954e67f786fad4b6324837489af705788a6b9 (patch)
treec2ba642a02d4f31526854abd679c3b773f67d9f0
parentgl_state: Remove clip distances tracking (diff)
downloadyuzu-07a954e67f786fad4b6324837489af705788a6b9.tar
yuzu-07a954e67f786fad4b6324837489af705788a6b9.tar.gz
yuzu-07a954e67f786fad4b6324837489af705788a6b9.tar.bz2
yuzu-07a954e67f786fad4b6324837489af705788a6b9.tar.lz
yuzu-07a954e67f786fad4b6324837489af705788a6b9.tar.xz
yuzu-07a954e67f786fad4b6324837489af705788a6b9.tar.zst
yuzu-07a954e67f786fad4b6324837489af705788a6b9.zip
-rw-r--r--src/video_core/renderer_opengl/gl_rasterizer.cpp11
-rw-r--r--src/video_core/renderer_opengl/gl_state.cpp8
-rw-r--r--src/video_core/renderer_opengl/gl_state.h6
-rw-r--r--src/video_core/renderer_opengl/gl_texture_cache.cpp1
-rw-r--r--src/video_core/renderer_opengl/renderer_opengl.cpp1
5 files changed, 8 insertions, 19 deletions
diff --git a/src/video_core/renderer_opengl/gl_rasterizer.cpp b/src/video_core/renderer_opengl/gl_rasterizer.cpp
index f4efddcc0..8f9bb4c93 100644
--- a/src/video_core/renderer_opengl/gl_rasterizer.cpp
+++ b/src/video_core/renderer_opengl/gl_rasterizer.cpp
@@ -467,6 +467,9 @@ void RasterizerOpenGL::Clear() {
SyncScissorTest();
}
+ // TODO: Signal state tracker about these changes
+ glClipControl(GL_LOWER_LEFT, GL_ZERO_TO_ONE);
+
UNIMPLEMENTED_IF(regs.clear_flags.viewport);
clear_state.Apply();
@@ -950,11 +953,9 @@ void RasterizerOpenGL::SyncViewport() {
if (regs.screen_y_control.y_negate != 0) {
flip_y = !flip_y;
}
- state.clip_control.origin = flip_y ? GL_UPPER_LEFT : GL_LOWER_LEFT;
- state.clip_control.depth_mode =
- regs.depth_mode == Tegra::Engines::Maxwell3D::Regs::DepthMode::ZeroToOne
- ? GL_ZERO_TO_ONE
- : GL_NEGATIVE_ONE_TO_ONE;
+ glClipControl(flip_y ? GL_UPPER_LEFT : GL_LOWER_LEFT,
+ regs.depth_mode == Maxwell::DepthMode::ZeroToOne ? GL_ZERO_TO_ONE
+ : GL_NEGATIVE_ONE_TO_ONE);
}
void RasterizerOpenGL::SyncDepthClamp() {
diff --git a/src/video_core/renderer_opengl/gl_state.cpp b/src/video_core/renderer_opengl/gl_state.cpp
index 5505fee73..69a8a4eb1 100644
--- a/src/video_core/renderer_opengl/gl_state.cpp
+++ b/src/video_core/renderer_opengl/gl_state.cpp
@@ -195,13 +195,6 @@ void OpenGLState::ApplyBlending() {
cur_state.independant_blend.enabled = independant_blend.enabled;
}
-void OpenGLState::ApplyClipControl() {
- if (UpdateTie(std::tie(cur_state.clip_control.origin, cur_state.clip_control.depth_mode),
- std::tie(clip_control.origin, clip_control.depth_mode))) {
- glClipControl(clip_control.origin, clip_control.depth_mode);
- }
-}
-
void OpenGLState::ApplyRenderBuffer() {
if (cur_state.renderbuffer != renderbuffer) {
cur_state.renderbuffer = renderbuffer;
@@ -247,7 +240,6 @@ void OpenGLState::Apply() {
ApplyTextures();
ApplySamplers();
ApplyImages();
- ApplyClipControl();
ApplyRenderBuffer();
}
diff --git a/src/video_core/renderer_opengl/gl_state.h b/src/video_core/renderer_opengl/gl_state.h
index e0bfd16ad..6ea625c56 100644
--- a/src/video_core/renderer_opengl/gl_state.h
+++ b/src/video_core/renderer_opengl/gl_state.h
@@ -54,11 +54,6 @@ public:
GLuint program_pipeline = 0; // GL_PROGRAM_PIPELINE_BINDING
} draw;
- struct {
- GLenum origin = GL_LOWER_LEFT;
- GLenum depth_mode = GL_NEGATIVE_ONE_TO_ONE;
- } clip_control;
-
GLuint renderbuffer{}; // GL_RENDERBUFFER_BINDING
OpenGLState();
@@ -81,7 +76,6 @@ public:
void ApplyTextures();
void ApplySamplers();
void ApplyImages();
- void ApplyClipControl();
void ApplyRenderBuffer();
/// Resets any references to the given resource
diff --git a/src/video_core/renderer_opengl/gl_texture_cache.cpp b/src/video_core/renderer_opengl/gl_texture_cache.cpp
index ed2daf74c..85d41f826 100644
--- a/src/video_core/renderer_opengl/gl_texture_cache.cpp
+++ b/src/video_core/renderer_opengl/gl_texture_cache.cpp
@@ -539,6 +539,7 @@ void TextureCacheOpenGL::ImageBlit(View& src_view, View& dst_view,
// TODO(Rodrigo): Find out if rasterizer discard affects blits
glDisable(GL_RASTERIZER_DISCARD);
glDisablei(GL_SCISSOR_TEST, 0);
+ glClipControl(GL_LOWER_LEFT, GL_ZERO_TO_ONE);
u32 buffers{};
diff --git a/src/video_core/renderer_opengl/renderer_opengl.cpp b/src/video_core/renderer_opengl/renderer_opengl.cpp
index d18adaddc..a4cf6a489 100644
--- a/src/video_core/renderer_opengl/renderer_opengl.cpp
+++ b/src/video_core/renderer_opengl/renderer_opengl.cpp
@@ -585,6 +585,7 @@ void RendererOpenGL::DrawScreen(const Layout::FramebufferLayout& layout) {
glCullFace(GL_BACK);
glFrontFace(GL_CW);
glColorMaski(0, GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
+ glClipControl(GL_LOWER_LEFT, GL_ZERO_TO_ONE);
glViewport(0, 0, layout.width, layout.height);
glVertexAttribFormat(PositionLocation, 2, GL_FLOAT, GL_FALSE,