aboutsummaryrefslogtreecommitdiff
path: root/src/video_core/renderer_vulkan/vk_rasterizer.cpp
diff options
context:
space:
mode:
authorMaranBr <maranbr@outlook.com>2025-11-13 03:04:00 +0100
committercrueter <crueter@eden-emu.dev>2025-11-13 03:04:00 +0100
commitd89df63a287b75ed4402cfac43c23261d778a9bb (patch)
tree550a978b25ec233af3815585199f79674ec81ecf /src/video_core/renderer_vulkan/vk_rasterizer.cpp
parent87c4f658ce7e471c6b7ce33c92d1973460af6091 (diff)
[video_core] Clean up the code and fix some inconsistences (#3015)
This cleans up the code and fixes some inconsistencies in the EDS settings. Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3015 Co-authored-by: MaranBr <maranbr@outlook.com> Co-committed-by: MaranBr <maranbr@outlook.com>
Diffstat (limited to 'src/video_core/renderer_vulkan/vk_rasterizer.cpp')
-rw-r--r--src/video_core/renderer_vulkan/vk_rasterizer.cpp47
1 files changed, 14 insertions, 33 deletions
diff --git a/src/video_core/renderer_vulkan/vk_rasterizer.cpp b/src/video_core/renderer_vulkan/vk_rasterizer.cpp
index 6bad5eca0b..530c7e8e41 100644
--- a/src/video_core/renderer_vulkan/vk_rasterizer.cpp
+++ b/src/video_core/renderer_vulkan/vk_rasterizer.cpp
@@ -956,38 +956,24 @@ void RasterizerVulkan::UpdateDynamicStates() {
const u8 dynamic_state = Settings::values.dyna_state.GetValue();
- auto features = DynamicFeatures{
- .has_extended_dynamic_state = device.IsExtExtendedDynamicStateSupported() && dynamic_state > 0,
- .has_extended_dynamic_state_2 = device.IsExtExtendedDynamicState2Supported() && dynamic_state > 1,
- .has_extended_dynamic_state_2_extra = device.IsExtExtendedDynamicState2ExtrasSupported() && dynamic_state > 1,
- .has_extended_dynamic_state_3_blend = device.IsExtExtendedDynamicState3BlendingSupported() && dynamic_state > 2,
- .has_extended_dynamic_state_3_enables = device.IsExtExtendedDynamicState3EnablesSupported() && dynamic_state > 2,
- .has_dynamic_vertex_input = device.IsExtVertexInputDynamicStateSupported(),
- };
-
- if (features.has_extended_dynamic_state) {
+ if (device.IsExtExtendedDynamicStateSupported() && dynamic_state > 0) {
UpdateCullMode(regs);
UpdateDepthCompareOp(regs);
UpdateFrontFace(regs);
UpdateStencilOp(regs);
-
if (state_tracker.TouchStateEnable()) {
UpdateDepthBoundsTestEnable(regs);
UpdateDepthTestEnable(regs);
UpdateDepthWriteEnable(regs);
UpdateStencilTestEnable(regs);
-
- if (features.has_extended_dynamic_state_2) {
+ if (device.IsExtExtendedDynamicState2Supported() && dynamic_state > 1) {
UpdatePrimitiveRestartEnable(regs);
UpdateRasterizerDiscardEnable(regs);
UpdateDepthBiasEnable(regs);
}
-
- if (features.has_extended_dynamic_state_3_enables) {
+ if (device.IsExtExtendedDynamicState3EnablesSupported() && dynamic_state > 2) {
using namespace Tegra::Engines;
-
- if (device.GetDriverID() == VkDriverIdKHR::VK_DRIVER_ID_AMD_OPEN_SOURCE ||
- device.GetDriverID() == VkDriverIdKHR::VK_DRIVER_ID_AMD_PROPRIETARY) {
+ if (device.GetDriverID() == VkDriverIdKHR::VK_DRIVER_ID_AMD_OPEN_SOURCE || device.GetDriverID() == VkDriverIdKHR::VK_DRIVER_ID_AMD_PROPRIETARY) {
struct In {
const Maxwell3D::Regs::VertexAttribute::Type d;
In(Maxwell3D::Regs::VertexAttribute::Type n) : d(n) {}
@@ -995,33 +981,28 @@ void RasterizerVulkan::UpdateDynamicStates() {
return n.type == d;
}
};
-
- auto has_float = std::any_of(regs.vertex_attrib_format.begin(),
- regs.vertex_attrib_format.end(),
- In(Maxwell3D::Regs::VertexAttribute::Type::Float));
-
- if (regs.logic_op.enable)
+ auto has_float = std::any_of(regs.vertex_attrib_format.begin(), regs.vertex_attrib_format.end(), In(Maxwell3D::Regs::VertexAttribute::Type::Float));
+ if (regs.logic_op.enable) {
regs.logic_op.enable = static_cast<u32>(!has_float);
-
+ }
UpdateLogicOpEnable(regs);
} else {
UpdateLogicOpEnable(regs);
- }
+ }
UpdateDepthClampEnable(regs);
+ UpdateLineStippleEnable(regs);
+ UpdateConservativeRasterizationMode(regs);
}
}
- if (features.has_extended_dynamic_state_2_extra) {
+ if (device.IsExtExtendedDynamicState2ExtrasSupported() && dynamic_state > 1) {
UpdateLogicOp(regs);
}
- if (features.has_extended_dynamic_state_3_enables) {
+ if (device.IsExtExtendedDynamicState3BlendingSupported() && dynamic_state > 2) {
UpdateBlending(regs);
- UpdateLineStippleEnable(regs);
- UpdateConservativeRasterizationMode(regs);
}
}
- if (features.has_dynamic_vertex_input) {
- if (auto* gp = pipeline_cache.CurrentGraphicsPipeline();
- gp && gp->HasDynamicVertexInput()) {
+ if (device.IsExtVertexInputDynamicStateSupported() && dynamic_state > 2) {
+ if (auto* gp = pipeline_cache.CurrentGraphicsPipeline(); gp && gp->HasDynamicVertexInput()) {
UpdateVertexInput(regs);
}
}