Browse Source

[vk] Corrections to VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE

pull/3049/head
CamilleLaVey 1 month ago
parent
commit
370b4c4109
  1. 11
      src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp

11
src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp

@ -868,12 +868,11 @@ void GraphicsPipeline::MakePipeline(VkRenderPass render_pass) {
dynamic_states.push_back(VK_DYNAMIC_STATE_STENCIL_REFERENCE);
}
// EDS1 - Extended Dynamic State (12 states)
// EDS1 - Extended Dynamic State
if (key.state.extended_dynamic_state) {
static constexpr std::array extended{
VK_DYNAMIC_STATE_CULL_MODE_EXT,
VK_DYNAMIC_STATE_FRONT_FACE_EXT,
//VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT, //Disabled for VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_EXTENSION_NAME
VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT,
VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT,
VK_DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT,
@ -882,9 +881,15 @@ void GraphicsPipeline::MakePipeline(VkRenderPass render_pass) {
VK_DYNAMIC_STATE_STENCIL_OP_EXT,
};
dynamic_states.insert(dynamic_states.end(), extended.begin(), extended.end());
// Note: VERTEX_INPUT_BINDING_STRIDE is part of EDS1, not VIDS
// When VIDS is disabled, we still need dynamic stride with BindVertexBuffers2EXT
if (!key.state.dynamic_vertex_input) {
dynamic_states.push_back(VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT);
}
}
// Vertex Input Dynamic State (independent toggle)
// Vertex Input Dynamic State (independent toggle, replaces VERTEX_INPUT_BINDING_STRIDE when enabled)
if (key.state.dynamic_vertex_input) {
dynamic_states.push_back(VK_DYNAMIC_STATE_VERTEX_INPUT_EXT);
}

Loading…
Cancel
Save