1// Copyright 2019 The SwiftShader Authors. All Rights Reserved.
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7// http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15#include "vulkan.h"
16
17// THIS FILE SHOULD BE DELETED IF VK_EXT_provoking_vertex IS EVER ADDED TO THE VULKAN HEADERS
18#ifdef VK_EXT_provoking_vertex
19#error "VK_EXT_provoking_vertex is already defined in the Vulkan headers, you can delete this file"
20#endif
21
22static constexpr VkStructureType VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT = static_cast<VkStructureType>(1000254000);
23static constexpr VkStructureType VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT = static_cast<VkStructureType>(1000254001);
24static constexpr VkStructureType VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT = static_cast<VkStructureType>(1000254002);
25
26#define VK_EXT_provoking_vertex 1
27#define VK_EXT_PROVOKING_VERTEX_SPEC_VERSION 1
28#define VK_EXT_PROVOKING_VERTEX_EXTENSION_NAME "VK_EXT_provoking_vertex"
29
30typedef enum VkProvokingVertexModeEXT {
31 VK_PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT = 0,
32 VK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT = 1,
33 VK_PROVOKING_VERTEX_MODE_BEGIN_RANGE_EXT = VK_PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT,
34 VK_PROVOKING_VERTEX_MODE_END_RANGE_EXT = VK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT,
35 VK_PROVOKING_VERTEX_MODE_RANGE_SIZE_EXT = (VK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT - VK_PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT + 1),
36 VK_PROVOKING_VERTEX_MODE_MAX_ENUM_EXT = 0x7FFFFFFF
37} VkProvokingVertexModeEXT;
38
39typedef struct VkPhysicalDeviceProvokingVertexFeaturesEXT {
40 VkStructureType sType;
41 void* pNext;
42 VkBool32 provokingVertexLast;
43} VkPhysicalDeviceProvokingVertexFeaturesEXT;
44
45typedef struct VkPhysicalDeviceProvokingVertexPropertiesEXT {
46 VkStructureType sType;
47 void* pNext;
48 VkBool32 provokingVertexModePerPipeline;
49} VkPhysicalDeviceProvokingVertexPropertiesEXT;
50
51typedef struct VkPipelineRasterizationProvokingVertexStateCreateInfoEXT {
52 VkStructureType sType;
53 const void* pNext;
54 VkProvokingVertexModeEXT provokingVertexMode;
55} VkPipelineRasterizationProvokingVertexStateCreateInfoEXT;
56
57