diff options
| author | Subv <subv2112@gmail.com> | 2018-07-02 13:33:41 -0500 | 
|---|---|---|
| committer | Subv <subv2112@gmail.com> | 2018-07-02 19:51:29 -0500 | 
| commit | a6d4903aaff4633bcd5a39ca79ea368f86bc3ce5 (patch) | |
| tree | 2414a4c2f301e3b4bc3e5f1e746639e748d2c3d8 | |
| parent | 18c8ae7750d0dac42c94ef41be041aeea6eb2e9e (diff) | |
GPU: Set up the culling configuration on each draw.
| -rw-r--r-- | src/video_core/renderer_opengl/gl_rasterizer.cpp | 14 | 
1 files changed, 8 insertions, 6 deletions
diff --git a/src/video_core/renderer_opengl/gl_rasterizer.cpp b/src/video_core/renderer_opengl/gl_rasterizer.cpp index 0d0e0653d..a3c5ad2a9 100644 --- a/src/video_core/renderer_opengl/gl_rasterizer.cpp +++ b/src/video_core/renderer_opengl/gl_rasterizer.cpp @@ -307,10 +307,10 @@ void RasterizerOpenGL::DrawArrays() {      // Sync the depth test state before configuring the framebuffer surfaces.      SyncDepthTestState(); -    // TODO(bunnei): Implement these +    // TODO(bunnei): Implement this      const bool has_stencil = false; -    const bool using_color_fb = true; +    const bool using_color_fb = true;      const bool using_depth_fb = regs.zeta.Address() != 0;      const MathUtil::Rectangle<s32> viewport_rect{regs.viewport_transform[0].GetRect()}; @@ -343,11 +343,9 @@ void RasterizerOpenGL::DrawArrays() {      // Bind the framebuffer surfaces      BindFramebufferSurfaces(color_surface, depth_surface, has_stencil); -    // Sync the viewport      SyncViewport(surfaces_rect); - -    // Sync the blend state registers      SyncBlendState(); +    SyncCullMode();      // TODO(bunnei): Sync framebuffer_scale uniform here      // TODO(bunnei): Sync scissorbox uniform(s) here @@ -711,7 +709,11 @@ void RasterizerOpenGL::SyncClipCoef() {  }  void RasterizerOpenGL::SyncCullMode() { -    UNREACHABLE(); +    const auto& regs = Core::System().GetInstance().GPU().Maxwell3D().regs; + +    state.cull.enabled = regs.cull.enabled != 0; +    state.cull.front_face = MaxwellToGL::FrontFace(regs.cull.front_face); +    state.cull.mode = MaxwellToGL::CullFace(regs.cull.cull_face);  }  void RasterizerOpenGL::SyncDepthScale() {  | 
