diff --git a/src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp b/src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp index d2f314995e..99c6cdac67 100644 --- a/src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp +++ b/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 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); } diff --git a/src/video_core/renderer_vulkan/vk_rasterizer.cpp b/src/video_core/renderer_vulkan/vk_rasterizer.cpp index f716d45a70..b66f5a0502 100644 --- a/src/video_core/renderer_vulkan/vk_rasterizer.cpp +++ b/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()) {