Browse Source

[vk] Adjusting VIDS

pull/3168/head
CamilleLaVey 1 month ago
committed by Caio Oliveira
parent
commit
fd0666f3b2
No known key found for this signature in database GPG Key ID: 362DA3DC1901E080
  1. 6
      src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp
  2. 8
      src/video_core/vulkan_common/vulkan_device.cpp

6
src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp

@ -825,13 +825,15 @@ void GraphicsPipeline::MakePipeline(VkRenderPass render_pass) {
};
dynamic_states.insert(dynamic_states.end(), extended.begin(), extended.end());
// VERTEX_INPUT_BINDING_STRIDE is part of EDS1, not VIDS
// VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT is part of EDS1
// Only use it if VIDS is not active (VIDS replaces it with full vertex input control)
if (!key.state.dynamic_vertex_input) {
dynamic_states.push_back(VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT);
}
}
// Vertex Input Dynamic State (replaces VERTEX_INPUT_BINDING_STRIDE)
// VK_DYNAMIC_STATE_VERTEX_INPUT_EXT (VIDS) - Independent from EDS
// Provides full dynamic vertex input control, replaces VERTEX_INPUT_BINDING_STRIDE
if (key.state.dynamic_vertex_input) {
dynamic_states.push_back(VK_DYNAMIC_STATE_VERTEX_INPUT_EXT);
}

8
src/video_core/vulkan_common/vulkan_device.cpp

@ -671,7 +671,9 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR
break;
}
if (!Settings::values.vertex_input_dynamic_state.GetValue() || !extensions.extended_dynamic_state) {
// VK_EXT_vertex_input_dynamic_state is independent from EDS
// It can be enabled even without extended_dynamic_state
if (!Settings::values.vertex_input_dynamic_state.GetValue()) {
RemoveExtensionFeature(extensions.vertex_input_dynamic_state, features.vertex_input_dynamic_state, VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_EXTENSION_NAME);
}
@ -1143,7 +1145,9 @@ bool Device::GetSuitability(bool requires_swapchain) {
if (version < VK_MAKE_API_VERSION(27, 20, 100, 0)) {
LOG_WARNING(Render_Vulkan,
"Intel Windows < 27.20.100.0: Disabling broken VK_EXT_vertex_input_dynamic_state");
features.vertex_input_dynamic_state.vertexInputDynamicState = false;
RemoveExtensionFeature(extensions.vertex_input_dynamic_state,
features.vertex_input_dynamic_state,
VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_EXTENSION_NAME);
}
}

Loading…
Cancel
Save