فهرست منبع

gl_state: Remove cull mode tracking

ReinUsesLisp 6 سال پیش
والد
کامیت
c8f5f54a44

+ 2 - 4
src/video_core/renderer_opengl/gl_rasterizer.cpp

@@ -1020,10 +1020,8 @@ void RasterizerOpenGL::SyncClipCoef() {
 void RasterizerOpenGL::SyncCullMode() {
     const auto& regs = system.GPU().Maxwell3D().regs;
 
-    state.cull.enabled = regs.cull.enabled != 0;
-    if (state.cull.enabled) {
-        state.cull.mode = MaxwellToGL::CullFace(regs.cull.cull_face);
-    }
+    oglEnable(GL_CULL_FACE, regs.cull.enabled);
+    glCullFace(MaxwellToGL::CullFace(regs.cull.cull_face));
 
     glFrontFace(MaxwellToGL::FrontFace(regs.cull.front_face));
 }

+ 0 - 9
src/video_core/renderer_opengl/gl_state.cpp

@@ -164,14 +164,6 @@ void OpenGLState::ApplySRgb() {
     }
 }
 
-void OpenGLState::ApplyCulling() {
-    Enable(GL_CULL_FACE, cur_state.cull.enabled, cull.enabled);
-
-    if (UpdateValue(cur_state.cull.mode, cull.mode)) {
-        glCullFace(cull.mode);
-    }
-}
-
 void OpenGLState::ApplyRasterizerDiscard() {
     Enable(GL_RASTERIZER_DISCARD, cur_state.rasterizer_discard, rasterizer_discard);
 }
@@ -441,7 +433,6 @@ void OpenGLState::Apply() {
     ApplyViewport();
     ApplyStencilTest();
     ApplySRgb();
-    ApplyCulling();
     ApplyDepth();
     ApplyPrimitiveRestart();
     ApplyBlending();

+ 0 - 6
src/video_core/renderer_opengl/gl_state.h

@@ -31,11 +31,6 @@ public:
         bool near_plane = false;
     } depth_clamp; // GL_DEPTH_CLAMP
 
-    struct {
-        bool enabled = false;       // GL_CULL_FACE
-        GLenum mode = GL_BACK;      // GL_CULL_FACE_MODE
-    } cull;
-
     struct {
         bool test_enabled = false;      // GL_DEPTH_TEST
         GLboolean write_mask = GL_TRUE; // GL_DEPTH_WRITEMASK
@@ -172,7 +167,6 @@ public:
     void ApplyFragmentColorClamp();
     void ApplyMultisample();
     void ApplySRgb();
-    void ApplyCulling();
     void ApplyRasterizerDiscard();
     void ApplyColorMask();
     void ApplyDepth();

+ 2 - 0
src/video_core/renderer_opengl/renderer_opengl.cpp

@@ -573,6 +573,8 @@ void RendererOpenGL::DrawScreenTriangles(const ScreenInfo& screen_info, float x,
     state.Apply();
 
     // TODO: Signal state tracker about these changes
+    glEnable(GL_CULL_FACE);
+    glCullFace(GL_BACK);
     glFrontFace(GL_CW);
 
     glNamedBufferSubData(vertex_buffer.handle, 0, sizeof(vertices), std::data(vertices));