mirror of
https://git.suyu.dev/suyu/suyu
synced 2024-11-01 12:57:52 +00:00
gl_state: Remove clip control tracking
This commit is contained in:
parent
1eee891f6e
commit
07a954e67f
5 changed files with 8 additions and 19 deletions
|
@ -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() {
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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{};
|
||||
|
||||
|
|
|
@ -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,
|
||||
|
|
Loading…
Reference in a new issue