Update Vulkan Extended Dynamic State settings
Some checks failed
eden-license / license-header (pull_request) Failing after 20s
Some checks failed
eden-license / license-header (pull_request) Failing after 20s
This commit is contained in:
parent
0e7203df34
commit
34ca8bd021
6 changed files with 22 additions and 52 deletions
|
@ -518,7 +518,11 @@ struct Values {
|
||||||
Category::RendererAdvanced};
|
Category::RendererAdvanced};
|
||||||
|
|
||||||
SwitchableSetting<u8, true> dyna_state{linkage,
|
SwitchableSetting<u8, true> dyna_state{linkage,
|
||||||
|
#ifdef ANDROID
|
||||||
0,
|
0,
|
||||||
|
#else
|
||||||
|
3,
|
||||||
|
#endif
|
||||||
0,
|
0,
|
||||||
3,
|
3,
|
||||||
"dyna_state",
|
"dyna_state",
|
||||||
|
|
|
@ -409,16 +409,11 @@ PipelineCache::PipelineCache(Tegra::MaxwellDeviceMemoryManager& device_memory_,
|
||||||
LOG_INFO(Render_Vulkan, "DynamicState value is set to {}", (u32) dynamic_state);
|
LOG_INFO(Render_Vulkan, "DynamicState value is set to {}", (u32) dynamic_state);
|
||||||
|
|
||||||
dynamic_features = DynamicFeatures{
|
dynamic_features = DynamicFeatures{
|
||||||
.has_extended_dynamic_state = device.IsExtExtendedDynamicStateSupported()
|
.has_extended_dynamic_state = device.IsExtExtendedDynamicStateSupported() && dynamic_state > 0,
|
||||||
&& dynamic_state > 0,
|
.has_extended_dynamic_state_2 = device.IsExtExtendedDynamicState2Supported() && dynamic_state > 1,
|
||||||
.has_extended_dynamic_state_2 = device.IsExtExtendedDynamicState2Supported()
|
.has_extended_dynamic_state_2_extra = device.IsExtExtendedDynamicState2ExtrasSupported() && dynamic_state > 1,
|
||||||
&& dynamic_state > 1,
|
.has_extended_dynamic_state_3_blend = device.IsExtExtendedDynamicState3BlendingSupported() && dynamic_state > 2,
|
||||||
.has_extended_dynamic_state_2_extra = device.IsExtExtendedDynamicState2ExtrasSupported()
|
.has_extended_dynamic_state_3_enables = device.IsExtExtendedDynamicState3EnablesSupported() && dynamic_state > 2,
|
||||||
&& 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(),
|
.has_dynamic_vertex_input = device.IsExtVertexInputDynamicStateSupported(),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -939,16 +939,11 @@ void RasterizerVulkan::UpdateDynamicStates() {
|
||||||
const u8 dynamic_state = Settings::values.dyna_state.GetValue();
|
const u8 dynamic_state = Settings::values.dyna_state.GetValue();
|
||||||
|
|
||||||
auto features = DynamicFeatures{
|
auto features = DynamicFeatures{
|
||||||
.has_extended_dynamic_state =
|
.has_extended_dynamic_state = device.IsExtExtendedDynamicStateSupported() && dynamic_state > 0,
|
||||||
device.IsExtExtendedDynamicStateSupported() && dynamic_state > 0,
|
.has_extended_dynamic_state_2 = device.IsExtExtendedDynamicState2Supported() && dynamic_state > 1,
|
||||||
.has_extended_dynamic_state_2 =
|
.has_extended_dynamic_state_2_extra = device.IsExtExtendedDynamicState2ExtrasSupported() && dynamic_state > 1,
|
||||||
device.IsExtExtendedDynamicState2Supported() && dynamic_state > 1,
|
.has_extended_dynamic_state_3_blend = device.IsExtExtendedDynamicState3BlendingSupported() && dynamic_state > 2,
|
||||||
.has_extended_dynamic_state_2_extra =
|
.has_extended_dynamic_state_3_enables = device.IsExtExtendedDynamicState3EnablesSupported() && dynamic_state > 2,
|
||||||
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(),
|
.has_dynamic_vertex_input = device.IsExtVertexInputDynamicStateSupported(),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -727,20 +727,11 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR
|
||||||
LOG_INFO(Render_Vulkan, "Dynamic state is disabled (dyna_state = 0), forcing scaled format emulation ON");
|
LOG_INFO(Render_Vulkan, "Dynamic state is disabled (dyna_state = 0), forcing scaled format emulation ON");
|
||||||
|
|
||||||
// Disable dynamic state 1-3 and all extensions
|
// Disable dynamic state 1-3 and all extensions
|
||||||
RemoveExtensionFeature(extensions.custom_border_color, features.custom_border_color,
|
RemoveExtensionFeature(extensions.custom_border_color, features.custom_border_color, VK_EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME);
|
||||||
VK_EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME);
|
RemoveExtensionFeature(extensions.extended_dynamic_state, features.extended_dynamic_state, VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME);
|
||||||
|
RemoveExtensionFeature(extensions.extended_dynamic_state2, features.extended_dynamic_state2, VK_EXT_EXTENDED_DYNAMIC_STATE_2_EXTENSION_NAME);
|
||||||
RemoveExtensionFeature(extensions.extended_dynamic_state, features.extended_dynamic_state,
|
RemoveExtensionFeature(extensions.vertex_input_dynamic_state, features.vertex_input_dynamic_state, VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_EXTENSION_NAME);
|
||||||
VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME);
|
RemoveExtensionFeature(extensions.extended_dynamic_state3, features.extended_dynamic_state3, VK_EXT_EXTENDED_DYNAMIC_STATE_3_EXTENSION_NAME);
|
||||||
|
|
||||||
RemoveExtensionFeature(extensions.extended_dynamic_state2, features.extended_dynamic_state2,
|
|
||||||
VK_EXT_EXTENDED_DYNAMIC_STATE_2_EXTENSION_NAME);
|
|
||||||
|
|
||||||
RemoveExtensionFeature(extensions.vertex_input_dynamic_state, features.vertex_input_dynamic_state,
|
|
||||||
VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_EXTENSION_NAME);
|
|
||||||
|
|
||||||
RemoveExtensionFeature(extensions.extended_dynamic_state3, features.extended_dynamic_state3,
|
|
||||||
VK_EXT_EXTENDED_DYNAMIC_STATE_3_EXTENSION_NAME);
|
|
||||||
dynamic_state3_blending = false;
|
dynamic_state3_blending = false;
|
||||||
dynamic_state3_enables = false;
|
dynamic_state3_enables = false;
|
||||||
|
|
||||||
|
@ -750,8 +741,7 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR
|
||||||
LOG_INFO(Render_Vulkan, "Dynamic state is enabled (dyna_state = 1-3), disabling scaled format emulation");
|
LOG_INFO(Render_Vulkan, "Dynamic state is enabled (dyna_state = 1-3), disabling scaled format emulation");
|
||||||
}
|
}
|
||||||
|
|
||||||
logical = vk::Device::Create(physical, queue_cis, ExtensionListForVulkan(loaded_extensions),
|
logical = vk::Device::Create(physical, queue_cis, ExtensionListForVulkan(loaded_extensions), first_next, dld);
|
||||||
first_next, dld);
|
|
||||||
|
|
||||||
graphics_queue = logical.GetQueue(graphics_family);
|
graphics_queue = logical.GetQueue(graphics_family);
|
||||||
present_queue = logical.GetQueue(present_family);
|
present_queue = logical.GetQueue(present_family);
|
||||||
|
|
|
@ -22,21 +22,9 @@
|
||||||
<item>
|
<item>
|
||||||
<widget class="QGroupBox" name="groupBox_1">
|
<widget class="QGroupBox" name="groupBox_1">
|
||||||
<property name="title">
|
<property name="title">
|
||||||
<string>Vulkan Extension Settings</string>
|
<string>Vulkan Extensions Settings</string>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_3">
|
<layout class="QVBoxLayout" name="verticalLayout_3">
|
||||||
<item>
|
|
||||||
<widget class="QLabel" name="label">
|
|
||||||
<property name="text">
|
|
||||||
<string>While it's recommended to use state 3, some games may perform better on lower states. Setting to 0 (disabled) may also break games.
|
|
||||||
If your GPU is older (i.e. RX570/580 or older), it may not support these features. If this is the case, set the slider to 0 and uncheck all boxes.
|
|
||||||
These settings are experimental, and may cause black screens. If your games fail to boot or are stuck on a black screen, change these settings around.</string>
|
|
||||||
</property>
|
|
||||||
<property name="wordWrap">
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
<item>
|
||||||
<widget class="QWidget" name="populate_target" native="true">
|
<widget class="QWidget" name="populate_target" native="true">
|
||||||
<layout class="QVBoxLayout" name="verticalLayout">
|
<layout class="QVBoxLayout" name="verticalLayout">
|
||||||
|
|
|
@ -346,9 +346,7 @@ std::unique_ptr<TranslationMap> InitializeTranslations(QWidget* parent)
|
||||||
INSERT(Settings,
|
INSERT(Settings,
|
||||||
dyna_state,
|
dyna_state,
|
||||||
tr("Extended Dynamic State"),
|
tr("Extended Dynamic State"),
|
||||||
tr("Enables the VkExtendedDynamicState* extensions.\nHigher dynamic states will "
|
tr("Controls the number of extensions that can be used in Extended Dynamic State.\nHigher numbers allow for more extensions and can increase performance, but may cause issues with some drivers and vendors.\nThe default value is 3, but can be gradually decreased until stability is achieved."));
|
||||||
"generally improve "
|
|
||||||
"performance, but may cause issues on certain games or devices."));
|
|
||||||
|
|
||||||
INSERT(Settings,
|
INSERT(Settings,
|
||||||
provoking_vertex,
|
provoking_vertex,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue