Browse Source

Add VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT just if VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_EXTENSION_NAME is not defined

pull/3070/head
MaranBr 3 months ago
committed by crueter
parent
commit
216c397220
  1. 23
      src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp
  2. 4
      src/video_core/renderer_vulkan/vk_rasterizer.cpp

23
src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp

@ -845,17 +845,18 @@ void GraphicsPipeline::MakePipeline(VkRenderPass render_pass) {
VK_DYNAMIC_STATE_LINE_WIDTH,
};
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,
VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT,
VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT,
VK_DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT,
VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT,
VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT,
VK_DYNAMIC_STATE_STENCIL_OP_EXT,
};
std::vector<VkDynamicState> extended;
extended.push_back(VK_DYNAMIC_STATE_CULL_MODE_EXT);
extended.push_back(VK_DYNAMIC_STATE_FRONT_FACE_EXT);
extended.push_back(VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT);
extended.push_back(VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT);
extended.push_back(VK_DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT);
extended.push_back(VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT);
extended.push_back(VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT);
extended.push_back(VK_DYNAMIC_STATE_STENCIL_OP_EXT);
if (!device.IsExtVertexInputDynamicStateSupported()) {
extended.push_back(VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT);
}
if (key.state.dynamic_vertex_input) {
dynamic_states.push_back(VK_DYNAMIC_STATE_VERTEX_INPUT_EXT);
}

4
src/video_core/renderer_vulkan/vk_rasterizer.cpp

@ -991,6 +991,10 @@ void RasterizerVulkan::UpdateDynamicStates() {
if (device.IsExtExtendedDynamicState3BlendingSupported()) {
UpdateBlending(regs);
}
if (device.IsExtExtendedDynamicState3EnablesSupported()) {
UpdateLineStippleEnable(regs);
UpdateConservativeRasterizationMode(regs);
}
}
if (device.IsExtVertexInputDynamicStateSupported()) {
if (auto* gp = pipeline_cache.CurrentGraphicsPipeline(); gp && gp->HasDynamicVertexInput()) {

Loading…
Cancel
Save