From b329d8eb423d91eb282f423aed9649a2578b71f4 Mon Sep 17 00:00:00 2001 From: CamilleLaVey Date: Tue, 17 Feb 2026 00:59:10 -0400 Subject: [PATCH] [vulkan] Added flag to detect last mode from provokingVertex --- src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp | 3 ++- src/video_core/vulkan_common/vulkan_device.h | 5 +++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp b/src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp index 706feaa34f..421311467b 100644 --- a/src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp +++ b/src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp @@ -795,7 +795,8 @@ void GraphicsPipeline::MakePipeline(VkRenderPass render_pass) { const bool preserve_provoking_vertex_for_xfb = !key.state.xfb_enabled || device.IsTransformFeedbackProvokingVertexPreserved(); const bool use_last_provoking_vertex = - key.state.provoking_vertex_last != 0 && preserve_provoking_vertex_for_xfb; + key.state.provoking_vertex_last != 0 && preserve_provoking_vertex_for_xfb && + device.IsProvokingVertexLastSupported(); VkPipelineRasterizationProvokingVertexStateCreateInfoEXT provoking_vertex{ .sType = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT, diff --git a/src/video_core/vulkan_common/vulkan_device.h b/src/video_core/vulkan_common/vulkan_device.h index 5b1000f053..67ab01752d 100644 --- a/src/video_core/vulkan_common/vulkan_device.h +++ b/src/video_core/vulkan_common/vulkan_device.h @@ -700,6 +700,11 @@ public: return extensions.provoking_vertex; } + /// Returns true if the device supports provoking-vertex LAST mode. + bool IsProvokingVertexLastSupported() const { + return features.provoking_vertex.provokingVertexLast; + } + /// Returns true if the device supports VK_KHR_shader_atomic_int64. bool IsExtShaderAtomicInt64Supported() const { return extensions.shader_atomic_int64;