From 07180ad265a1123f5293ca247b2f8f483b7fc6d5 Mon Sep 17 00:00:00 2001 From: Zephyron Date: Wed, 21 Jan 2026 18:51:17 +1000 Subject: [PATCH] fix(vulkan): add fallback for unsupported line rasterization modes - Check for rectangularLines and smoothLines feature support - Fall back to VK_LINE_RASTERIZATION_MODE_DEFAULT when unavailable - Fixes validation errors on GPUs without rectangular line support --- .../renderer_vulkan/vk_graphics_pipeline.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp b/src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp index d92af0ece..400da3a6b 100644 --- a/src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp +++ b/src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp @@ -690,12 +690,17 @@ void GraphicsPipeline::MakePipeline(VkRenderPass render_pass) { .depthBiasSlopeFactor = 0.0f, .lineWidth = 1.0f, }; + // Determine line rasterization mode based on available features + VkLineRasterizationModeEXT line_mode = VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT; + if (key.state.smooth_lines != 0 && device.IsSmoothLinesSupported()) { + line_mode = VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT; + } else if (device.IsRectangularLinesSupported()) { + line_mode = VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT; + } VkPipelineRasterizationLineStateCreateInfoEXT line_state{ .sType = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT, .pNext = nullptr, - .lineRasterizationMode = key.state.smooth_lines != 0 - ? VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT - : VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT, + .lineRasterizationMode = line_mode, .stippledLineEnable = VK_FALSE, // TODO .lineStippleFactor = 0, .lineStipplePattern = 0,