From 1370f2367529e2311223d9ab7be201660a42d53e Mon Sep 17 00:00:00 2001 From: Caio Oliveira Date: Thu, 8 Jan 2026 00:51:26 +0100 Subject: [PATCH] [vk, settings] Disable VIDS on Android and Ungate Advanced EDS (#3281) * the issue fixed by this PR (EDS Disabled) is the same as the one on 3096 (All EDS) Signed-off-by: Caio Oliveira Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3281 Reviewed-by: CamilleLaVey Reviewed-by: Lizzie Co-authored-by: Caio Oliveira Co-committed-by: Caio Oliveira --- src/common/settings.h | 8 +++++++- .../renderer_vulkan/vk_graphics_pipeline.cpp | 19 ++++--------------- .../renderer_vulkan/vk_rasterizer.cpp | 10 ---------- src/video_core/vulkan_common/vulkan_device.h | 5 ----- 4 files changed, 11 insertions(+), 31 deletions(-) diff --git a/src/common/settings.h b/src/common/settings.h index b523fb673b..874ba7aee2 100644 --- a/src/common/settings.h +++ b/src/common/settings.h @@ -536,7 +536,13 @@ struct Values { Category::RendererExtensions, Specialization::Scalar}; - SwitchableSetting vertex_input_dynamic_state{linkage, true, "vertex_input_dynamic_state", Category::RendererExtensions}; + SwitchableSetting vertex_input_dynamic_state{linkage, +#if defined (ANDROID) + false, +#else + true, +#endif + "vertex_input_dynamic_state", Category::RendererExtensions}; SwitchableSetting provoking_vertex{linkage, false, "provoking_vertex", Category::RendererExtensions}; SwitchableSetting descriptor_indexing{linkage, false, "descriptor_indexing", Category::RendererExtensions}; diff --git a/src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp b/src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp index ea6e4b6d72..fca235b58e 100644 --- a/src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp +++ b/src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp @@ -816,23 +816,12 @@ void GraphicsPipeline::MakePipeline(VkRenderPass render_pass) { .blendConstants = {} }; static_vector dynamic_states{ - VK_DYNAMIC_STATE_VIEWPORT, - VK_DYNAMIC_STATE_SCISSOR, - VK_DYNAMIC_STATE_DEPTH_BIAS, + VK_DYNAMIC_STATE_VIEWPORT, VK_DYNAMIC_STATE_SCISSOR, + VK_DYNAMIC_STATE_DEPTH_BIAS, VK_DYNAMIC_STATE_BLEND_CONSTANTS, + VK_DYNAMIC_STATE_DEPTH_BOUNDS, VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK, + VK_DYNAMIC_STATE_STENCIL_WRITE_MASK, VK_DYNAMIC_STATE_STENCIL_REFERENCE, VK_DYNAMIC_STATE_LINE_WIDTH, }; - - if (device.UsesAdvancedCoreDynamicState()) { - static constexpr std::array core_dynamic_states{ - VK_DYNAMIC_STATE_BLEND_CONSTANTS, - VK_DYNAMIC_STATE_DEPTH_BOUNDS, - VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK, - VK_DYNAMIC_STATE_STENCIL_WRITE_MASK, - VK_DYNAMIC_STATE_STENCIL_REFERENCE, - }; - dynamic_states.insert(dynamic_states.end(), core_dynamic_states.begin(), - core_dynamic_states.end()); - } if (key.state.extended_dynamic_state) { static constexpr std::array extended{ VK_DYNAMIC_STATE_CULL_MODE_EXT, diff --git a/src/video_core/renderer_vulkan/vk_rasterizer.cpp b/src/video_core/renderer_vulkan/vk_rasterizer.cpp index 27cbf47bbb..101a884fd7 100644 --- a/src/video_core/renderer_vulkan/vk_rasterizer.cpp +++ b/src/video_core/renderer_vulkan/vk_rasterizer.cpp @@ -1233,9 +1233,6 @@ void RasterizerVulkan::UpdateBlendConstants(Tegra::Engines::Maxwell3D::Regs& reg if (!state_tracker.TouchBlendConstants()) { return; } - if (!device.UsesAdvancedCoreDynamicState()) { - return; - } const std::array blend_color = {regs.blend_color.r, regs.blend_color.g, regs.blend_color.b, regs.blend_color.a}; scheduler.Record( @@ -1246,9 +1243,6 @@ void RasterizerVulkan::UpdateDepthBounds(Tegra::Engines::Maxwell3D::Regs& regs) if (!state_tracker.TouchDepthBounds()) { return; } - if (!device.UsesAdvancedCoreDynamicState() || !device.IsDepthBoundsSupported()) { - return; - } scheduler.Record([min = regs.depth_bounds[0], max = regs.depth_bounds[1]]( vk::CommandBuffer cmdbuf) { cmdbuf.SetDepthBounds(min, max); }); } @@ -1257,10 +1251,6 @@ void RasterizerVulkan::UpdateStencilFaces(Tegra::Engines::Maxwell3D::Regs& regs) if (!state_tracker.TouchStencilProperties()) { return; } - if (!device.UsesAdvancedCoreDynamicState()) { - state_tracker.ClearStencilReset(); - return; - } bool update_references = state_tracker.TouchStencilReference(); bool update_write_mask = state_tracker.TouchStencilWriteMask(); bool update_compare_masks = state_tracker.TouchStencilCompare(); diff --git a/src/video_core/vulkan_common/vulkan_device.h b/src/video_core/vulkan_common/vulkan_device.h index 6c67cc44f8..726b17e47e 100644 --- a/src/video_core/vulkan_common/vulkan_device.h +++ b/src/video_core/vulkan_common/vulkan_device.h @@ -682,11 +682,6 @@ public: return dynamic_state3_alpha_to_one; } - /// Returns true when the user enabled extended core dynamic states (level > 0). - bool UsesAdvancedCoreDynamicState() const { - return u32(Settings::values.dyna_state.GetValue()) > 0; - } - /// Returns true if the device supports VK_EXT_vertex_input_dynamic_state. bool IsExtVertexInputDynamicStateSupported() const { return extensions.vertex_input_dynamic_state;