diff options
| author | 2019-12-28 21:41:41 -0300 | |
|---|---|---|
| committer | 2020-02-28 17:56:41 -0300 | |
| commit | 9e74e6988b881c6889074bd2335239eb2e491e91 (patch) | |
| tree | 8e6ab83abf58154f89f9b05f06ceb7b2cecd0764 /src/video_core/renderer_vulkan | |
| parent | video_core: Reintroduce dirty flags infrastructure (diff) | |
| download | yuzu-9e74e6988b881c6889074bd2335239eb2e491e91.tar.gz yuzu-9e74e6988b881c6889074bd2335239eb2e491e91.tar.xz yuzu-9e74e6988b881c6889074bd2335239eb2e491e91.zip | |
maxwell_3d: Flatten cull and front face registers
Diffstat (limited to 'src/video_core/renderer_vulkan')
4 files changed, 20 insertions, 21 deletions
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) | |||
| 112 | const auto& clip = regs.view_volume_clip_control; | 112 | const auto& clip = regs.view_volume_clip_control; |
| 113 | const bool depth_clamp_enabled = clip.depth_clamp_near == 1 || clip.depth_clamp_far == 1; | 113 | const bool depth_clamp_enabled = clip.depth_clamp_near == 1 || clip.depth_clamp_far == 1; |
| 114 | 114 | ||
| 115 | Maxwell::Cull::FrontFace front_face = regs.cull.front_face; | 115 | Maxwell::FrontFace front_face = regs.front_face; |
| 116 | if (regs.screen_y_control.triangle_rast_flip != 0 && | 116 | if (regs.screen_y_control.triangle_rast_flip != 0 && |
| 117 | regs.viewport_transform[0].scale_y > 0.0f) { | 117 | regs.viewport_transform[0].scale_y > 0.0f) { |
| 118 | if (front_face == Maxwell::Cull::FrontFace::CounterClockWise) | 118 | if (front_face == Maxwell::FrontFace::CounterClockWise) |
| 119 | front_face = Maxwell::Cull::FrontFace::ClockWise; | 119 | front_face = Maxwell::FrontFace::ClockWise; |
| 120 | else if (front_face == Maxwell::Cull::FrontFace::ClockWise) | 120 | else if (front_face == Maxwell::FrontFace::ClockWise) |
| 121 | front_face = Maxwell::Cull::FrontFace::CounterClockWise; | 121 | front_face = Maxwell::FrontFace::CounterClockWise; |
| 122 | } | 122 | } |
| 123 | 123 | ||
| 124 | const bool gl_ndc = regs.depth_mode == Maxwell::DepthMode::MinusOneToOne; | 124 | const bool gl_ndc = regs.depth_mode == Maxwell::DepthMode::MinusOneToOne; |
| 125 | return FixedPipelineState::Rasterizer(regs.cull.enabled, depth_bias_enabled, | 125 | return FixedPipelineState::Rasterizer(regs.cull_test_enabled, depth_bias_enabled, |
| 126 | depth_clamp_enabled, gl_ndc, regs.cull.cull_face, | 126 | depth_clamp_enabled, gl_ndc, regs.cull_face, front_face); |
| 127 | front_face); | ||
| 128 | } | 127 | } |
| 129 | 128 | ||
| 130 | } // Anonymous namespace | 129 | } // 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 { | |||
| 171 | 171 | ||
| 172 | struct Rasterizer { | 172 | struct Rasterizer { |
| 173 | constexpr Rasterizer(bool cull_enable, bool depth_bias_enable, bool depth_clamp_enable, | 173 | constexpr Rasterizer(bool cull_enable, bool depth_bias_enable, bool depth_clamp_enable, |
| 174 | bool ndc_minus_one_to_one, Maxwell::Cull::CullFace cull_face, | 174 | bool ndc_minus_one_to_one, Maxwell::CullFace cull_face, |
| 175 | Maxwell::Cull::FrontFace front_face) | 175 | Maxwell::FrontFace front_face) |
| 176 | : cull_enable{cull_enable}, depth_bias_enable{depth_bias_enable}, | 176 | : cull_enable{cull_enable}, depth_bias_enable{depth_bias_enable}, |
| 177 | depth_clamp_enable{depth_clamp_enable}, ndc_minus_one_to_one{ndc_minus_one_to_one}, | 177 | depth_clamp_enable{depth_clamp_enable}, ndc_minus_one_to_one{ndc_minus_one_to_one}, |
| 178 | cull_face{cull_face}, front_face{front_face} {} | 178 | cull_face{cull_face}, front_face{front_face} {} |
| @@ -182,8 +182,8 @@ struct FixedPipelineState { | |||
| 182 | bool depth_bias_enable; | 182 | bool depth_bias_enable; |
| 183 | bool depth_clamp_enable; | 183 | bool depth_clamp_enable; |
| 184 | bool ndc_minus_one_to_one; | 184 | bool ndc_minus_one_to_one; |
| 185 | Maxwell::Cull::CullFace cull_face; | 185 | Maxwell::CullFace cull_face; |
| 186 | Maxwell::Cull::FrontFace front_face; | 186 | Maxwell::FrontFace front_face; |
| 187 | 187 | ||
| 188 | std::size_t Hash() const noexcept; | 188 | std::size_t Hash() const noexcept; |
| 189 | 189 | ||
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) { | |||
| 572 | return {}; | 572 | return {}; |
| 573 | } | 573 | } |
| 574 | 574 | ||
| 575 | vk::FrontFace FrontFace(Maxwell::Cull::FrontFace front_face) { | 575 | vk::FrontFace FrontFace(Maxwell::FrontFace front_face) { |
| 576 | switch (front_face) { | 576 | switch (front_face) { |
| 577 | case Maxwell::Cull::FrontFace::ClockWise: | 577 | case Maxwell::FrontFace::ClockWise: |
| 578 | return vk::FrontFace::eClockwise; | 578 | return vk::FrontFace::eClockwise; |
| 579 | case Maxwell::Cull::FrontFace::CounterClockWise: | 579 | case Maxwell::FrontFace::CounterClockWise: |
| 580 | return vk::FrontFace::eCounterClockwise; | 580 | return vk::FrontFace::eCounterClockwise; |
| 581 | } | 581 | } |
| 582 | UNIMPLEMENTED_MSG("Unimplemented front face={}", static_cast<u32>(front_face)); | 582 | UNIMPLEMENTED_MSG("Unimplemented front face={}", static_cast<u32>(front_face)); |
| 583 | return {}; | 583 | return {}; |
| 584 | } | 584 | } |
| 585 | 585 | ||
| 586 | vk::CullModeFlags CullFace(Maxwell::Cull::CullFace cull_face) { | 586 | vk::CullModeFlags CullFace(Maxwell::CullFace cull_face) { |
| 587 | switch (cull_face) { | 587 | switch (cull_face) { |
| 588 | case Maxwell::Cull::CullFace::Front: | 588 | case Maxwell::CullFace::Front: |
| 589 | return vk::CullModeFlagBits::eFront; | 589 | return vk::CullModeFlagBits::eFront; |
| 590 | case Maxwell::Cull::CullFace::Back: | 590 | case Maxwell::CullFace::Back: |
| 591 | return vk::CullModeFlagBits::eBack; | 591 | return vk::CullModeFlagBits::eBack; |
| 592 | case Maxwell::Cull::CullFace::FrontAndBack: | 592 | case Maxwell::CullFace::FrontAndBack: |
| 593 | return vk::CullModeFlagBits::eFrontAndBack; | 593 | return vk::CullModeFlagBits::eFrontAndBack; |
| 594 | } | 594 | } |
| 595 | UNIMPLEMENTED_MSG("Unimplemented cull face={}", static_cast<u32>(cull_face)); | 595 | 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); | |||
| 54 | 54 | ||
| 55 | vk::BlendFactor BlendFactor(Maxwell::Blend::Factor factor); | 55 | vk::BlendFactor BlendFactor(Maxwell::Blend::Factor factor); |
| 56 | 56 | ||
| 57 | vk::FrontFace FrontFace(Maxwell::Cull::FrontFace front_face); | 57 | vk::FrontFace FrontFace(Maxwell::FrontFace front_face); |
| 58 | 58 | ||
| 59 | vk::CullModeFlags CullFace(Maxwell::Cull::CullFace cull_face); | 59 | vk::CullModeFlags CullFace(Maxwell::CullFace cull_face); |
| 60 | 60 | ||
| 61 | vk::ComponentSwizzle SwizzleSource(Tegra::Texture::SwizzleSource swizzle); | 61 | vk::ComponentSwizzle SwizzleSource(Tegra::Texture::SwizzleSource swizzle); |
| 62 | 62 | ||