1 | #ifndef VULKAN_BETA_H_ |
2 | #define VULKAN_BETA_H_ 1 |
3 | |
4 | /* |
5 | ** Copyright 2015-2024 The Khronos Group Inc. |
6 | ** |
7 | ** SPDX-License-Identifier: Apache-2.0 |
8 | */ |
9 | |
10 | /* |
11 | ** This header is generated from the Khronos Vulkan XML API Registry. |
12 | ** |
13 | */ |
14 | |
15 | |
16 | #ifdef __cplusplus |
17 | extern "C" { |
18 | #endif |
19 | |
20 | |
21 | |
22 | // VK_KHR_portability_subset is a preprocessor guard. Do not pass it to API calls. |
23 | #define VK_KHR_portability_subset 1 |
24 | #define VK_KHR_PORTABILITY_SUBSET_SPEC_VERSION 1 |
25 | #define VK_KHR_PORTABILITY_SUBSET_EXTENSION_NAME "VK_KHR_portability_subset" |
26 | typedef struct VkPhysicalDevicePortabilitySubsetFeaturesKHR { |
27 | VkStructureType sType; |
28 | void* pNext; |
29 | VkBool32 constantAlphaColorBlendFactors; |
30 | VkBool32 events; |
31 | VkBool32 imageViewFormatReinterpretation; |
32 | VkBool32 imageViewFormatSwizzle; |
33 | VkBool32 imageView2DOn3DImage; |
34 | VkBool32 multisampleArrayImage; |
35 | VkBool32 mutableComparisonSamplers; |
36 | VkBool32 pointPolygons; |
37 | VkBool32 samplerMipLodBias; |
38 | VkBool32 separateStencilMaskRef; |
39 | VkBool32 shaderSampleRateInterpolationFunctions; |
40 | VkBool32 tessellationIsolines; |
41 | VkBool32 tessellationPointMode; |
42 | VkBool32 triangleFans; |
43 | VkBool32 vertexAttributeAccessBeyondStride; |
44 | } VkPhysicalDevicePortabilitySubsetFeaturesKHR; |
45 | |
46 | typedef struct VkPhysicalDevicePortabilitySubsetPropertiesKHR { |
47 | VkStructureType sType; |
48 | void* pNext; |
49 | uint32_t minVertexInputBindingStrideAlignment; |
50 | } VkPhysicalDevicePortabilitySubsetPropertiesKHR; |
51 | |
52 | |
53 | |
54 | // VK_AMDX_shader_enqueue is a preprocessor guard. Do not pass it to API calls. |
55 | #define VK_AMDX_shader_enqueue 1 |
56 | #define VK_AMDX_SHADER_ENQUEUE_SPEC_VERSION 1 |
57 | #define VK_AMDX_SHADER_ENQUEUE_EXTENSION_NAME "VK_AMDX_shader_enqueue" |
58 | #define VK_SHADER_INDEX_UNUSED_AMDX (~0U) |
59 | typedef struct VkPhysicalDeviceShaderEnqueueFeaturesAMDX { |
60 | VkStructureType sType; |
61 | void* pNext; |
62 | VkBool32 shaderEnqueue; |
63 | } VkPhysicalDeviceShaderEnqueueFeaturesAMDX; |
64 | |
65 | typedef struct VkPhysicalDeviceShaderEnqueuePropertiesAMDX { |
66 | VkStructureType sType; |
67 | void* pNext; |
68 | uint32_t maxExecutionGraphDepth; |
69 | uint32_t maxExecutionGraphShaderOutputNodes; |
70 | uint32_t maxExecutionGraphShaderPayloadSize; |
71 | uint32_t maxExecutionGraphShaderPayloadCount; |
72 | uint32_t executionGraphDispatchAddressAlignment; |
73 | } VkPhysicalDeviceShaderEnqueuePropertiesAMDX; |
74 | |
75 | typedef struct VkExecutionGraphPipelineScratchSizeAMDX { |
76 | VkStructureType sType; |
77 | void* pNext; |
78 | VkDeviceSize size; |
79 | } VkExecutionGraphPipelineScratchSizeAMDX; |
80 | |
81 | typedef struct VkExecutionGraphPipelineCreateInfoAMDX { |
82 | VkStructureType sType; |
83 | const void* pNext; |
84 | VkPipelineCreateFlags flags; |
85 | uint32_t stageCount; |
86 | const VkPipelineShaderStageCreateInfo* pStages; |
87 | const VkPipelineLibraryCreateInfoKHR* pLibraryInfo; |
88 | VkPipelineLayout layout; |
89 | VkPipeline basePipelineHandle; |
90 | int32_t basePipelineIndex; |
91 | } VkExecutionGraphPipelineCreateInfoAMDX; |
92 | |
93 | typedef union VkDeviceOrHostAddressConstAMDX { |
94 | VkDeviceAddress deviceAddress; |
95 | const void* hostAddress; |
96 | } VkDeviceOrHostAddressConstAMDX; |
97 | |
98 | typedef struct VkDispatchGraphInfoAMDX { |
99 | uint32_t nodeIndex; |
100 | uint32_t payloadCount; |
101 | VkDeviceOrHostAddressConstAMDX payloads; |
102 | uint64_t payloadStride; |
103 | } VkDispatchGraphInfoAMDX; |
104 | |
105 | typedef struct VkDispatchGraphCountInfoAMDX { |
106 | uint32_t count; |
107 | VkDeviceOrHostAddressConstAMDX infos; |
108 | uint64_t stride; |
109 | } VkDispatchGraphCountInfoAMDX; |
110 | |
111 | typedef struct VkPipelineShaderStageNodeCreateInfoAMDX { |
112 | VkStructureType sType; |
113 | const void* pNext; |
114 | const char* pName; |
115 | uint32_t index; |
116 | } VkPipelineShaderStageNodeCreateInfoAMDX; |
117 | |
118 | typedef VkResult (VKAPI_PTR *PFN_vkCreateExecutionGraphPipelinesAMDX)(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkExecutionGraphPipelineCreateInfoAMDX* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines); |
119 | typedef VkResult (VKAPI_PTR *PFN_vkGetExecutionGraphPipelineScratchSizeAMDX)(VkDevice device, VkPipeline executionGraph, VkExecutionGraphPipelineScratchSizeAMDX* pSizeInfo); |
120 | typedef VkResult (VKAPI_PTR *PFN_vkGetExecutionGraphPipelineNodeIndexAMDX)(VkDevice device, VkPipeline executionGraph, const VkPipelineShaderStageNodeCreateInfoAMDX* pNodeInfo, uint32_t* pNodeIndex); |
121 | typedef void (VKAPI_PTR *PFN_vkCmdInitializeGraphScratchMemoryAMDX)(VkCommandBuffer commandBuffer, VkDeviceAddress scratch); |
122 | typedef void (VKAPI_PTR *PFN_vkCmdDispatchGraphAMDX)(VkCommandBuffer commandBuffer, VkDeviceAddress scratch, const VkDispatchGraphCountInfoAMDX* pCountInfo); |
123 | typedef void (VKAPI_PTR *PFN_vkCmdDispatchGraphIndirectAMDX)(VkCommandBuffer commandBuffer, VkDeviceAddress scratch, const VkDispatchGraphCountInfoAMDX* pCountInfo); |
124 | typedef void (VKAPI_PTR *PFN_vkCmdDispatchGraphIndirectCountAMDX)(VkCommandBuffer commandBuffer, VkDeviceAddress scratch, VkDeviceAddress countInfo); |
125 | |
126 | #ifndef VK_NO_PROTOTYPES |
127 | VKAPI_ATTR VkResult VKAPI_CALL vkCreateExecutionGraphPipelinesAMDX( |
128 | VkDevice device, |
129 | VkPipelineCache pipelineCache, |
130 | uint32_t createInfoCount, |
131 | const VkExecutionGraphPipelineCreateInfoAMDX* pCreateInfos, |
132 | const VkAllocationCallbacks* pAllocator, |
133 | VkPipeline* pPipelines); |
134 | |
135 | VKAPI_ATTR VkResult VKAPI_CALL vkGetExecutionGraphPipelineScratchSizeAMDX( |
136 | VkDevice device, |
137 | VkPipeline executionGraph, |
138 | VkExecutionGraphPipelineScratchSizeAMDX* pSizeInfo); |
139 | |
140 | VKAPI_ATTR VkResult VKAPI_CALL vkGetExecutionGraphPipelineNodeIndexAMDX( |
141 | VkDevice device, |
142 | VkPipeline executionGraph, |
143 | const VkPipelineShaderStageNodeCreateInfoAMDX* pNodeInfo, |
144 | uint32_t* pNodeIndex); |
145 | |
146 | VKAPI_ATTR void VKAPI_CALL vkCmdInitializeGraphScratchMemoryAMDX( |
147 | VkCommandBuffer commandBuffer, |
148 | VkDeviceAddress scratch); |
149 | |
150 | VKAPI_ATTR void VKAPI_CALL vkCmdDispatchGraphAMDX( |
151 | VkCommandBuffer commandBuffer, |
152 | VkDeviceAddress scratch, |
153 | const VkDispatchGraphCountInfoAMDX* pCountInfo); |
154 | |
155 | VKAPI_ATTR void VKAPI_CALL vkCmdDispatchGraphIndirectAMDX( |
156 | VkCommandBuffer commandBuffer, |
157 | VkDeviceAddress scratch, |
158 | const VkDispatchGraphCountInfoAMDX* pCountInfo); |
159 | |
160 | VKAPI_ATTR void VKAPI_CALL vkCmdDispatchGraphIndirectCountAMDX( |
161 | VkCommandBuffer commandBuffer, |
162 | VkDeviceAddress scratch, |
163 | VkDeviceAddress countInfo); |
164 | #endif |
165 | |
166 | |
167 | // VK_NV_displacement_micromap is a preprocessor guard. Do not pass it to API calls. |
168 | #define VK_NV_displacement_micromap 1 |
169 | #define VK_NV_DISPLACEMENT_MICROMAP_SPEC_VERSION 2 |
170 | #define VK_NV_DISPLACEMENT_MICROMAP_EXTENSION_NAME "VK_NV_displacement_micromap" |
171 | |
172 | typedef enum VkDisplacementMicromapFormatNV { |
173 | VK_DISPLACEMENT_MICROMAP_FORMAT_64_TRIANGLES_64_BYTES_NV = 1, |
174 | VK_DISPLACEMENT_MICROMAP_FORMAT_256_TRIANGLES_128_BYTES_NV = 2, |
175 | VK_DISPLACEMENT_MICROMAP_FORMAT_1024_TRIANGLES_128_BYTES_NV = 3, |
176 | VK_DISPLACEMENT_MICROMAP_FORMAT_MAX_ENUM_NV = 0x7FFFFFFF |
177 | } VkDisplacementMicromapFormatNV; |
178 | typedef struct VkPhysicalDeviceDisplacementMicromapFeaturesNV { |
179 | VkStructureType sType; |
180 | void* pNext; |
181 | VkBool32 displacementMicromap; |
182 | } VkPhysicalDeviceDisplacementMicromapFeaturesNV; |
183 | |
184 | typedef struct VkPhysicalDeviceDisplacementMicromapPropertiesNV { |
185 | VkStructureType sType; |
186 | void* pNext; |
187 | uint32_t maxDisplacementMicromapSubdivisionLevel; |
188 | } VkPhysicalDeviceDisplacementMicromapPropertiesNV; |
189 | |
190 | typedef struct VkAccelerationStructureTrianglesDisplacementMicromapNV { |
191 | VkStructureType sType; |
192 | void* pNext; |
193 | VkFormat displacementBiasAndScaleFormat; |
194 | VkFormat displacementVectorFormat; |
195 | VkDeviceOrHostAddressConstKHR displacementBiasAndScaleBuffer; |
196 | VkDeviceSize displacementBiasAndScaleStride; |
197 | VkDeviceOrHostAddressConstKHR displacementVectorBuffer; |
198 | VkDeviceSize displacementVectorStride; |
199 | VkDeviceOrHostAddressConstKHR displacedMicromapPrimitiveFlags; |
200 | VkDeviceSize displacedMicromapPrimitiveFlagsStride; |
201 | VkIndexType indexType; |
202 | VkDeviceOrHostAddressConstKHR indexBuffer; |
203 | VkDeviceSize indexStride; |
204 | uint32_t baseTriangle; |
205 | uint32_t usageCountsCount; |
206 | const VkMicromapUsageEXT* pUsageCounts; |
207 | const VkMicromapUsageEXT* const* ppUsageCounts; |
208 | VkMicromapEXT micromap; |
209 | } VkAccelerationStructureTrianglesDisplacementMicromapNV; |
210 | |
211 | |
212 | #ifdef __cplusplus |
213 | } |
214 | #endif |
215 | |
216 | #endif |
217 | |