diff --git a/src/nouveau/vulkan/nvk_physical_device.c b/src/nouveau/vulkan/nvk_physical_device.c index 9d2cb733750..9409d209190 100644 --- a/src/nouveau/vulkan/nvk_physical_device.c +++ b/src/nouveau/vulkan/nvk_physical_device.c @@ -194,6 +194,12 @@ nvk_GetPhysicalDeviceFeatures2(VkPhysicalDevice physicalDevice, f->sampler2DViewOf3D = true; break; } + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT: { + VkPhysicalDeviceProvokingVertexFeaturesEXT *f = (void *)ext; + f->provokingVertexLast = true; + f->transformFeedbackPreservesProvokingVertex = true; + break; + } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT: { VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT *f = (void *)ext; f->vertexAttributeInstanceRateDivisor = true; @@ -376,6 +382,12 @@ nvk_GetPhysicalDeviceProperties2(VkPhysicalDevice physicalDevice, p->pciFunction = pdev->info.pci_func; break; } + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT: { + VkPhysicalDeviceProvokingVertexPropertiesEXT *p = (void *)ext; + p->provokingVertexModePerPipeline = true; + p->transformFeedbackPreservesTriangleFanProvokingVertex = true; + break; + } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT: { VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT *p = (void *)ext; p->maxVertexAttribDivisor = UINT32_MAX; @@ -433,6 +445,7 @@ nvk_get_device_extensions(const struct nvk_physical_device *pdev, .EXT_inline_uniform_block = true, .EXT_pci_bus_info = true, .EXT_private_data = true, + .EXT_provoking_vertex = true, .EXT_sample_locations = pdev->info.cls_eng3d >= MAXWELL_B, .EXT_vertex_attribute_divisor = true, .EXT_vertex_input_dynamic_state = true,