diff options
| -rw-r--r-- | src/video_core/engines/maxwell_3d.cpp | 6 | ||||
| -rw-r--r-- | src/video_core/engines/maxwell_3d.h | 30 | ||||
| -rw-r--r-- | src/video_core/renderer_opengl/gl_rasterizer.cpp | 6 | ||||
| -rw-r--r-- | src/video_core/renderer_opengl/maxwell_to_gl.h | 14 | ||||
| -rw-r--r-- | src/video_core/renderer_vulkan/fixed_pipeline_state.cpp | 15 | ||||
| -rw-r--r-- | src/video_core/renderer_vulkan/fixed_pipeline_state.h | 8 | ||||
| -rw-r--r-- | src/video_core/renderer_vulkan/maxwell_to_vk.cpp | 14 | ||||
| -rw-r--r-- | src/video_core/renderer_vulkan/maxwell_to_vk.h | 4 | 
8 files changed, 47 insertions, 50 deletions
| diff --git a/src/video_core/engines/maxwell_3d.cpp b/src/video_core/engines/maxwell_3d.cpp index db710bf35..89050361e 100644 --- a/src/video_core/engines/maxwell_3d.cpp +++ b/src/video_core/engines/maxwell_3d.cpp @@ -76,8 +76,8 @@ void Maxwell3D::InitializeRegisterDefaults() {      regs.stencil_back_mask = 0xFFFFFFFF;      regs.depth_test_func = Regs::ComparisonOp::Always; -    regs.cull.front_face = Regs::Cull::FrontFace::CounterClockWise; -    regs.cull.cull_face = Regs::Cull::CullFace::Back; +    regs.front_face = Regs::FrontFace::CounterClockWise; +    regs.cull_face = Regs::CullFace::Back;      // TODO(Rodrigo): Most games do not set a point size. I think this is a case of a      // register carrying a default value. Assume it's OpenGL's default (1). @@ -96,7 +96,7 @@ void Maxwell3D::InitializeRegisterDefaults() {      regs.rasterize_enable = 1;      regs.rt_separate_frag_data = 1;      regs.framebuffer_srgb = 1; -    regs.cull.front_face = Maxwell3D::Regs::Cull::FrontFace::ClockWise; +    regs.front_face = Maxwell3D::Regs::FrontFace::ClockWise;      mme_inline[MAXWELL3D_REG_INDEX(draw.vertex_end_gl)] = true;      mme_inline[MAXWELL3D_REG_INDEX(draw.vertex_begin_gl)] = true; diff --git a/src/video_core/engines/maxwell_3d.h b/src/video_core/engines/maxwell_3d.h index 72848b1e8..8edfa6a34 100644 --- a/src/video_core/engines/maxwell_3d.h +++ b/src/video_core/engines/maxwell_3d.h @@ -432,21 +432,15 @@ public:              GeneratedPrimitives = 0x1F,          }; -        struct Cull { -            enum class FrontFace : u32 { -                ClockWise = 0x0900, -                CounterClockWise = 0x0901, -            }; - -            enum class CullFace : u32 { -                Front = 0x0404, -                Back = 0x0405, -                FrontAndBack = 0x0408, -            }; +        enum class FrontFace : u32 { +            ClockWise = 0x0900, +            CounterClockWise = 0x0901, +        }; -            u32 enabled; -            FrontFace front_face; -            CullFace cull_face; +        enum class CullFace : u32 { +            Front = 0x0404, +            Back = 0x0405, +            FrontAndBack = 0x0408,          };          struct Blend { @@ -1052,7 +1046,9 @@ public:                  INSERT_UNION_PADDING_WORDS(1); -                Cull cull; +                u32 cull_test_enabled; +                FrontFace front_face; +                CullFace cull_face;                  u32 pixel_center_integer; @@ -1491,7 +1487,9 @@ ASSERT_REG_POSITION(index_array, 0x5F2);  ASSERT_REG_POSITION(polygon_offset_clamp, 0x61F);  ASSERT_REG_POSITION(instanced_arrays, 0x620);  ASSERT_REG_POSITION(vp_point_size, 0x644); -ASSERT_REG_POSITION(cull, 0x646); +ASSERT_REG_POSITION(cull_test_enabled, 0x646); +ASSERT_REG_POSITION(front_face, 0x647); +ASSERT_REG_POSITION(cull_face, 0x648);  ASSERT_REG_POSITION(pixel_center_integer, 0x649);  ASSERT_REG_POSITION(viewport_transform_enabled, 0x64B);  ASSERT_REG_POSITION(view_volume_clip_control, 0x64F); diff --git a/src/video_core/renderer_opengl/gl_rasterizer.cpp b/src/video_core/renderer_opengl/gl_rasterizer.cpp index 3ce2a7124..2fb8ec33b 100644 --- a/src/video_core/renderer_opengl/gl_rasterizer.cpp +++ b/src/video_core/renderer_opengl/gl_rasterizer.cpp @@ -945,10 +945,10 @@ void RasterizerOpenGL::SyncClipCoef() {  void RasterizerOpenGL::SyncCullMode() {      const auto& regs = system.GPU().Maxwell3D().regs; -    oglEnable(GL_CULL_FACE, regs.cull.enabled); -    glCullFace(MaxwellToGL::CullFace(regs.cull.cull_face)); +    oglEnable(GL_CULL_FACE, regs.cull_test_enabled); +    glCullFace(MaxwellToGL::CullFace(regs.cull_face)); -    glFrontFace(MaxwellToGL::FrontFace(regs.cull.front_face)); +    glFrontFace(MaxwellToGL::FrontFace(regs.front_face));  }  void RasterizerOpenGL::SyncPrimitiveRestart() { diff --git a/src/video_core/renderer_opengl/maxwell_to_gl.h b/src/video_core/renderer_opengl/maxwell_to_gl.h index 7ed505628..4c8db7cc8 100644 --- a/src/video_core/renderer_opengl/maxwell_to_gl.h +++ b/src/video_core/renderer_opengl/maxwell_to_gl.h @@ -401,24 +401,24 @@ inline GLenum StencilOp(Maxwell::StencilOp stencil) {      return GL_KEEP;  } -inline GLenum FrontFace(Maxwell::Cull::FrontFace front_face) { +inline GLenum FrontFace(Maxwell::FrontFace front_face) {      switch (front_face) { -    case Maxwell::Cull::FrontFace::ClockWise: +    case Maxwell::FrontFace::ClockWise:          return GL_CW; -    case Maxwell::Cull::FrontFace::CounterClockWise: +    case Maxwell::FrontFace::CounterClockWise:          return GL_CCW;      }      LOG_ERROR(Render_OpenGL, "Unimplemented front face cull={}", static_cast<u32>(front_face));      return GL_CCW;  } -inline GLenum CullFace(Maxwell::Cull::CullFace cull_face) { +inline GLenum CullFace(Maxwell::CullFace cull_face) {      switch (cull_face) { -    case Maxwell::Cull::CullFace::Front: +    case Maxwell::CullFace::Front:          return GL_FRONT; -    case Maxwell::Cull::CullFace::Back: +    case Maxwell::CullFace::Back:          return GL_BACK; -    case Maxwell::Cull::CullFace::FrontAndBack: +    case Maxwell::CullFace::FrontAndBack:          return GL_FRONT_AND_BACK;      }      LOG_ERROR(Render_OpenGL, "Unimplemented cull face={}", static_cast<u32>(cull_face)); diff --git a/src/video_core/renderer_vulkan/fixed_pipeline_state.cpp b/src/video_core/renderer_vulkan/fixed_pipeline_state.cpp index 4e3ff231e..2bb376555 100644 --- a/src/video_core/renderer_vulkan/fixed_pipeline_state.cpp +++ b/src/video_core/renderer_vulkan/fixed_pipeline_state.cpp @@ -112,19 +112,18 @@ constexpr FixedPipelineState::Rasterizer GetRasterizerState(const Maxwell& regs)      const auto& clip = regs.view_volume_clip_control;      const bool depth_clamp_enabled = clip.depth_clamp_near == 1 || clip.depth_clamp_far == 1; -    Maxwell::Cull::FrontFace front_face = regs.cull.front_face; +    Maxwell::FrontFace front_face = regs.front_face;      if (regs.screen_y_control.triangle_rast_flip != 0 &&          regs.viewport_transform[0].scale_y > 0.0f) { -        if (front_face == Maxwell::Cull::FrontFace::CounterClockWise) -            front_face = Maxwell::Cull::FrontFace::ClockWise; -        else if (front_face == Maxwell::Cull::FrontFace::ClockWise) -            front_face = Maxwell::Cull::FrontFace::CounterClockWise; +        if (front_face == Maxwell::FrontFace::CounterClockWise) +            front_face = Maxwell::FrontFace::ClockWise; +        else if (front_face == Maxwell::FrontFace::ClockWise) +            front_face = Maxwell::FrontFace::CounterClockWise;      }      const bool gl_ndc = regs.depth_mode == Maxwell::DepthMode::MinusOneToOne; -    return FixedPipelineState::Rasterizer(regs.cull.enabled, depth_bias_enabled, -                                          depth_clamp_enabled, gl_ndc, regs.cull.cull_face, -                                          front_face); +    return FixedPipelineState::Rasterizer(regs.cull_test_enabled, depth_bias_enabled, +                                          depth_clamp_enabled, gl_ndc, regs.cull_face, front_face);  }  } // Anonymous namespace diff --git a/src/video_core/renderer_vulkan/fixed_pipeline_state.h b/src/video_core/renderer_vulkan/fixed_pipeline_state.h index 87056ef37..4c8ba7f90 100644 --- a/src/video_core/renderer_vulkan/fixed_pipeline_state.h +++ b/src/video_core/renderer_vulkan/fixed_pipeline_state.h @@ -171,8 +171,8 @@ struct FixedPipelineState {      struct Rasterizer {          constexpr Rasterizer(bool cull_enable, bool depth_bias_enable, bool depth_clamp_enable, -                             bool ndc_minus_one_to_one, Maxwell::Cull::CullFace cull_face, -                             Maxwell::Cull::FrontFace front_face) +                             bool ndc_minus_one_to_one, Maxwell::CullFace cull_face, +                             Maxwell::FrontFace front_face)              : cull_enable{cull_enable}, depth_bias_enable{depth_bias_enable},                depth_clamp_enable{depth_clamp_enable}, ndc_minus_one_to_one{ndc_minus_one_to_one},                cull_face{cull_face}, front_face{front_face} {} @@ -182,8 +182,8 @@ struct FixedPipelineState {          bool depth_bias_enable;          bool depth_clamp_enable;          bool ndc_minus_one_to_one; -        Maxwell::Cull::CullFace cull_face; -        Maxwell::Cull::FrontFace front_face; +        Maxwell::CullFace cull_face; +        Maxwell::FrontFace front_face;          std::size_t Hash() const noexcept; diff --git a/src/video_core/renderer_vulkan/maxwell_to_vk.cpp b/src/video_core/renderer_vulkan/maxwell_to_vk.cpp index ef66dd141..088b072ef 100644 --- a/src/video_core/renderer_vulkan/maxwell_to_vk.cpp +++ b/src/video_core/renderer_vulkan/maxwell_to_vk.cpp @@ -572,24 +572,24 @@ vk::BlendFactor BlendFactor(Maxwell::Blend::Factor factor) {      return {};  } -vk::FrontFace FrontFace(Maxwell::Cull::FrontFace front_face) { +vk::FrontFace FrontFace(Maxwell::FrontFace front_face) {      switch (front_face) { -    case Maxwell::Cull::FrontFace::ClockWise: +    case Maxwell::FrontFace::ClockWise:          return vk::FrontFace::eClockwise; -    case Maxwell::Cull::FrontFace::CounterClockWise: +    case Maxwell::FrontFace::CounterClockWise:          return vk::FrontFace::eCounterClockwise;      }      UNIMPLEMENTED_MSG("Unimplemented front face={}", static_cast<u32>(front_face));      return {};  } -vk::CullModeFlags CullFace(Maxwell::Cull::CullFace cull_face) { +vk::CullModeFlags CullFace(Maxwell::CullFace cull_face) {      switch (cull_face) { -    case Maxwell::Cull::CullFace::Front: +    case Maxwell::CullFace::Front:          return vk::CullModeFlagBits::eFront; -    case Maxwell::Cull::CullFace::Back: +    case Maxwell::CullFace::Back:          return vk::CullModeFlagBits::eBack; -    case Maxwell::Cull::CullFace::FrontAndBack: +    case Maxwell::CullFace::FrontAndBack:          return vk::CullModeFlagBits::eFrontAndBack;      }      UNIMPLEMENTED_MSG("Unimplemented cull face={}", static_cast<u32>(cull_face)); diff --git a/src/video_core/renderer_vulkan/maxwell_to_vk.h b/src/video_core/renderer_vulkan/maxwell_to_vk.h index 7e9678b7b..24f6ab544 100644 --- a/src/video_core/renderer_vulkan/maxwell_to_vk.h +++ b/src/video_core/renderer_vulkan/maxwell_to_vk.h @@ -54,9 +54,9 @@ vk::BlendOp BlendEquation(Maxwell::Blend::Equation equation);  vk::BlendFactor BlendFactor(Maxwell::Blend::Factor factor); -vk::FrontFace FrontFace(Maxwell::Cull::FrontFace front_face); +vk::FrontFace FrontFace(Maxwell::FrontFace front_face); -vk::CullModeFlags CullFace(Maxwell::Cull::CullFace cull_face); +vk::CullModeFlags CullFace(Maxwell::CullFace cull_face);  vk::ComponentSwizzle SwizzleSource(Tegra::Texture::SwizzleSource swizzle); | 
