diff --git a/src/video_core/vulkan_common/vulkan_device.cpp b/src/video_core/vulkan_common/vulkan_device.cpp index b3be5a7ca8..e976511456 100644 --- a/src/video_core/vulkan_common/vulkan_device.cpp +++ b/src/video_core/vulkan_common/vulkan_device.cpp @@ -494,14 +494,21 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR CollectPhysicalMemoryInfo(); CollectToolingInfo(); - if (!extensions.extended_dynamic_state && extensions.extended_dynamic_state2) { + if (Settings::values.dyna_state.GetValue() == 0) { + LOG_INFO(Render_Vulkan, + "Removing extendedDynamicState due to dyna_state = 0"); + RemoveExtensionFeature(extensions.extended_dynamic_state, features.extended_dynamic_state, + VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME); + } + + if ((!extensions.extended_dynamic_state && extensions.extended_dynamic_state2) || Settings::values.dyna_state.GetValue() < 1) { LOG_INFO(Render_Vulkan, "Removing extendedDynamicState2 due to missing extendedDynamicState"); RemoveExtensionFeature(extensions.extended_dynamic_state2, features.extended_dynamic_state2, VK_EXT_EXTENDED_DYNAMIC_STATE_2_EXTENSION_NAME); } - if (!extensions.extended_dynamic_state2 && extensions.extended_dynamic_state3) { + if ((!extensions.extended_dynamic_state2 && extensions.extended_dynamic_state3) || Settings::values.dyna_state.GetValue() < 2) { LOG_INFO(Render_Vulkan, "Removing extendedDynamicState3 due to missing extendedDynamicState2"); RemoveExtensionFeature(extensions.extended_dynamic_state3, features.extended_dynamic_state3,