From a6d4903aaff4633bcd5a39ca79ea368f86bc3ce5 Mon Sep 17 00:00:00 2001 From: Subv Date: Mon, 2 Jul 2018 13:33:41 -0500 Subject: GPU: Set up the culling configuration on each draw. --- src/video_core/renderer_opengl/gl_rasterizer.cpp | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) (limited to 'src/video_core') 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 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() { -- cgit v1.2.3