2 #define VULKAN_BETA_H_ 1
5 ** Copyright (c) 2015-2020 The Khronos Group Inc.
7 ** SPDX-License-Identifier: Apache-2.0
11 ** This header is generated from the Khronos Vulkan XML API Registry.
22 #define VK_KHR_portability_subset 1
23 #define VK_KHR_PORTABILITY_SUBSET_SPEC_VERSION 1
24 #define VK_KHR_PORTABILITY_SUBSET_EXTENSION_NAME "VK_KHR_portability_subset"
25 typedef struct VkPhysicalDevicePortabilitySubsetFeaturesKHR {
26 VkStructureType sType;
28 VkBool32 constantAlphaColorBlendFactors;
30 VkBool32 imageViewFormatReinterpretation;
31 VkBool32 imageViewFormatSwizzle;
32 VkBool32 imageView2DOn3DImage;
33 VkBool32 multisampleArrayImage;
34 VkBool32 mutableComparisonSamplers;
35 VkBool32 pointPolygons;
36 VkBool32 samplerMipLodBias;
37 VkBool32 separateStencilMaskRef;
38 VkBool32 shaderSampleRateInterpolationFunctions;
39 VkBool32 tessellationIsolines;
40 VkBool32 tessellationPointMode;
41 VkBool32 triangleFans;
42 VkBool32 vertexAttributeAccessBeyondStride;
43 } VkPhysicalDevicePortabilitySubsetFeaturesKHR;
45 typedef struct VkPhysicalDevicePortabilitySubsetPropertiesKHR {
46 VkStructureType sType;
48 uint32_t minVertexInputBindingStrideAlignment;
49 } VkPhysicalDevicePortabilitySubsetPropertiesKHR;
53 #define VK_KHR_deferred_host_operations 1
54 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDeferredOperationKHR)
55 #define VK_KHR_DEFERRED_HOST_OPERATIONS_SPEC_VERSION 3
56 #define VK_KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME "VK_KHR_deferred_host_operations"
57 typedef struct VkDeferredOperationInfoKHR {
58 VkStructureType sType;
60 VkDeferredOperationKHR operationHandle;
61 } VkDeferredOperationInfoKHR;
63 typedef VkResult (VKAPI_PTR *PFN_vkCreateDeferredOperationKHR)(VkDevice device, const VkAllocationCallbacks* pAllocator, VkDeferredOperationKHR* pDeferredOperation);
64 typedef void (VKAPI_PTR *PFN_vkDestroyDeferredOperationKHR)(VkDevice device, VkDeferredOperationKHR operation, const VkAllocationCallbacks* pAllocator);
65 typedef uint32_t (VKAPI_PTR *PFN_vkGetDeferredOperationMaxConcurrencyKHR)(VkDevice device, VkDeferredOperationKHR operation);
66 typedef VkResult (VKAPI_PTR *PFN_vkGetDeferredOperationResultKHR)(VkDevice device, VkDeferredOperationKHR operation);
67 typedef VkResult (VKAPI_PTR *PFN_vkDeferredOperationJoinKHR)(VkDevice device, VkDeferredOperationKHR operation);
69 #ifndef VK_NO_PROTOTYPES
70 VKAPI_ATTR VkResult VKAPI_CALL vkCreateDeferredOperationKHR(
72 const VkAllocationCallbacks* pAllocator,
73 VkDeferredOperationKHR* pDeferredOperation);
75 VKAPI_ATTR void VKAPI_CALL vkDestroyDeferredOperationKHR(
77 VkDeferredOperationKHR operation,
78 const VkAllocationCallbacks* pAllocator);
80 VKAPI_ATTR uint32_t VKAPI_CALL vkGetDeferredOperationMaxConcurrencyKHR(
82 VkDeferredOperationKHR operation);
84 VKAPI_ATTR VkResult VKAPI_CALL vkGetDeferredOperationResultKHR(
86 VkDeferredOperationKHR operation);
88 VKAPI_ATTR VkResult VKAPI_CALL vkDeferredOperationJoinKHR(
90 VkDeferredOperationKHR operation);
94 #define VK_KHR_pipeline_library 1
95 #define VK_KHR_PIPELINE_LIBRARY_SPEC_VERSION 1
96 #define VK_KHR_PIPELINE_LIBRARY_EXTENSION_NAME "VK_KHR_pipeline_library"
97 typedef struct VkPipelineLibraryCreateInfoKHR {
98 VkStructureType sType;
100 uint32_t libraryCount;
101 const VkPipeline* pLibraries;
102 } VkPipelineLibraryCreateInfoKHR;
106 #define VK_KHR_ray_tracing 1
107 #define VK_KHR_RAY_TRACING_SPEC_VERSION 8
108 #define VK_KHR_RAY_TRACING_EXTENSION_NAME "VK_KHR_ray_tracing"
110 typedef enum VkAccelerationStructureBuildTypeKHR {
111 VK_ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHR = 0,
112 VK_ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR = 1,
113 VK_ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_OR_DEVICE_KHR = 2,
114 VK_ACCELERATION_STRUCTURE_BUILD_TYPE_MAX_ENUM_KHR = 0x7FFFFFFF
115 } VkAccelerationStructureBuildTypeKHR;
116 typedef union VkDeviceOrHostAddressKHR {
117 VkDeviceAddress deviceAddress;
119 } VkDeviceOrHostAddressKHR;
121 typedef union VkDeviceOrHostAddressConstKHR {
122 VkDeviceAddress deviceAddress;
123 const void* hostAddress;
124 } VkDeviceOrHostAddressConstKHR;
126 typedef struct VkAccelerationStructureBuildOffsetInfoKHR {
127 uint32_t primitiveCount;
128 uint32_t primitiveOffset;
129 uint32_t firstVertex;
130 uint32_t transformOffset;
131 } VkAccelerationStructureBuildOffsetInfoKHR;
133 typedef struct VkRayTracingShaderGroupCreateInfoKHR {
134 VkStructureType sType;
136 VkRayTracingShaderGroupTypeKHR type;
137 uint32_t generalShader;
138 uint32_t closestHitShader;
139 uint32_t anyHitShader;
140 uint32_t intersectionShader;
141 const void* pShaderGroupCaptureReplayHandle;
142 } VkRayTracingShaderGroupCreateInfoKHR;
144 typedef struct VkRayTracingPipelineInterfaceCreateInfoKHR {
145 VkStructureType sType;
147 uint32_t maxPayloadSize;
148 uint32_t maxAttributeSize;
149 uint32_t maxCallableSize;
150 } VkRayTracingPipelineInterfaceCreateInfoKHR;
152 typedef struct VkRayTracingPipelineCreateInfoKHR {
153 VkStructureType sType;
155 VkPipelineCreateFlags flags;
157 const VkPipelineShaderStageCreateInfo* pStages;
159 const VkRayTracingShaderGroupCreateInfoKHR* pGroups;
160 uint32_t maxRecursionDepth;
161 VkPipelineLibraryCreateInfoKHR libraries;
162 const VkRayTracingPipelineInterfaceCreateInfoKHR* pLibraryInterface;
163 VkPipelineLayout layout;
164 VkPipeline basePipelineHandle;
165 int32_t basePipelineIndex;
166 } VkRayTracingPipelineCreateInfoKHR;
168 typedef struct VkAccelerationStructureGeometryTrianglesDataKHR {
169 VkStructureType sType;
171 VkFormat vertexFormat;
172 VkDeviceOrHostAddressConstKHR vertexData;
173 VkDeviceSize vertexStride;
174 VkIndexType indexType;
175 VkDeviceOrHostAddressConstKHR indexData;
176 VkDeviceOrHostAddressConstKHR transformData;
177 } VkAccelerationStructureGeometryTrianglesDataKHR;
179 typedef struct VkAccelerationStructureGeometryAabbsDataKHR {
180 VkStructureType sType;
182 VkDeviceOrHostAddressConstKHR data;
184 } VkAccelerationStructureGeometryAabbsDataKHR;
186 typedef struct VkAccelerationStructureGeometryInstancesDataKHR {
187 VkStructureType sType;
189 VkBool32 arrayOfPointers;
190 VkDeviceOrHostAddressConstKHR data;
191 } VkAccelerationStructureGeometryInstancesDataKHR;
193 typedef union VkAccelerationStructureGeometryDataKHR {
194 VkAccelerationStructureGeometryTrianglesDataKHR triangles;
195 VkAccelerationStructureGeometryAabbsDataKHR aabbs;
196 VkAccelerationStructureGeometryInstancesDataKHR instances;
197 } VkAccelerationStructureGeometryDataKHR;
199 typedef struct VkAccelerationStructureGeometryKHR {
200 VkStructureType sType;
202 VkGeometryTypeKHR geometryType;
203 VkAccelerationStructureGeometryDataKHR geometry;
204 VkGeometryFlagsKHR flags;
205 } VkAccelerationStructureGeometryKHR;
207 typedef struct VkAccelerationStructureBuildGeometryInfoKHR {
208 VkStructureType sType;
210 VkAccelerationStructureTypeKHR type;
211 VkBuildAccelerationStructureFlagsKHR flags;
213 VkAccelerationStructureKHR srcAccelerationStructure;
214 VkAccelerationStructureKHR dstAccelerationStructure;
215 VkBool32 geometryArrayOfPointers;
216 uint32_t geometryCount;
217 const VkAccelerationStructureGeometryKHR* const* ppGeometries;
218 VkDeviceOrHostAddressKHR scratchData;
219 } VkAccelerationStructureBuildGeometryInfoKHR;
221 typedef struct VkAccelerationStructureCreateGeometryTypeInfoKHR {
222 VkStructureType sType;
224 VkGeometryTypeKHR geometryType;
225 uint32_t maxPrimitiveCount;
226 VkIndexType indexType;
227 uint32_t maxVertexCount;
228 VkFormat vertexFormat;
229 VkBool32 allowsTransforms;
230 } VkAccelerationStructureCreateGeometryTypeInfoKHR;
232 typedef struct VkAccelerationStructureCreateInfoKHR {
233 VkStructureType sType;
235 VkDeviceSize compactedSize;
236 VkAccelerationStructureTypeKHR type;
237 VkBuildAccelerationStructureFlagsKHR flags;
238 uint32_t maxGeometryCount;
239 const VkAccelerationStructureCreateGeometryTypeInfoKHR* pGeometryInfos;
240 VkDeviceAddress deviceAddress;
241 } VkAccelerationStructureCreateInfoKHR;
243 typedef struct VkAccelerationStructureMemoryRequirementsInfoKHR {
244 VkStructureType sType;
246 VkAccelerationStructureMemoryRequirementsTypeKHR type;
247 VkAccelerationStructureBuildTypeKHR buildType;
248 VkAccelerationStructureKHR accelerationStructure;
249 } VkAccelerationStructureMemoryRequirementsInfoKHR;
251 typedef struct VkPhysicalDeviceRayTracingFeaturesKHR {
252 VkStructureType sType;
255 VkBool32 rayTracingShaderGroupHandleCaptureReplay;
256 VkBool32 rayTracingShaderGroupHandleCaptureReplayMixed;
257 VkBool32 rayTracingAccelerationStructureCaptureReplay;
258 VkBool32 rayTracingIndirectTraceRays;
259 VkBool32 rayTracingIndirectAccelerationStructureBuild;
260 VkBool32 rayTracingHostAccelerationStructureCommands;
262 VkBool32 rayTracingPrimitiveCulling;
263 } VkPhysicalDeviceRayTracingFeaturesKHR;
265 typedef struct VkPhysicalDeviceRayTracingPropertiesKHR {
266 VkStructureType sType;
268 uint32_t shaderGroupHandleSize;
269 uint32_t maxRecursionDepth;
270 uint32_t maxShaderGroupStride;
271 uint32_t shaderGroupBaseAlignment;
272 uint64_t maxGeometryCount;
273 uint64_t maxInstanceCount;
274 uint64_t maxPrimitiveCount;
275 uint32_t maxDescriptorSetAccelerationStructures;
276 uint32_t shaderGroupHandleCaptureReplaySize;
277 } VkPhysicalDeviceRayTracingPropertiesKHR;
279 typedef struct VkAccelerationStructureDeviceAddressInfoKHR {
280 VkStructureType sType;
282 VkAccelerationStructureKHR accelerationStructure;
283 } VkAccelerationStructureDeviceAddressInfoKHR;
285 typedef struct VkAccelerationStructureVersionKHR {
286 VkStructureType sType;
288 const uint8_t* versionData;
289 } VkAccelerationStructureVersionKHR;
291 typedef struct VkStridedBufferRegionKHR {
296 } VkStridedBufferRegionKHR;
298 typedef struct VkTraceRaysIndirectCommandKHR {
302 } VkTraceRaysIndirectCommandKHR;
304 typedef struct VkCopyAccelerationStructureToMemoryInfoKHR {
305 VkStructureType sType;
307 VkAccelerationStructureKHR src;
308 VkDeviceOrHostAddressKHR dst;
309 VkCopyAccelerationStructureModeKHR mode;
310 } VkCopyAccelerationStructureToMemoryInfoKHR;
312 typedef struct VkCopyMemoryToAccelerationStructureInfoKHR {
313 VkStructureType sType;
315 VkDeviceOrHostAddressConstKHR src;
316 VkAccelerationStructureKHR dst;
317 VkCopyAccelerationStructureModeKHR mode;
318 } VkCopyMemoryToAccelerationStructureInfoKHR;
320 typedef struct VkCopyAccelerationStructureInfoKHR {
321 VkStructureType sType;
323 VkAccelerationStructureKHR src;
324 VkAccelerationStructureKHR dst;
325 VkCopyAccelerationStructureModeKHR mode;
326 } VkCopyAccelerationStructureInfoKHR;
328 typedef VkResult (VKAPI_PTR *PFN_vkCreateAccelerationStructureKHR)(VkDevice device, const VkAccelerationStructureCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkAccelerationStructureKHR* pAccelerationStructure);
329 typedef void (VKAPI_PTR *PFN_vkGetAccelerationStructureMemoryRequirementsKHR)(VkDevice device, const VkAccelerationStructureMemoryRequirementsInfoKHR* pInfo, VkMemoryRequirements2* pMemoryRequirements);
330 typedef void (VKAPI_PTR *PFN_vkCmdBuildAccelerationStructureKHR)(VkCommandBuffer commandBuffer, uint32_t infoCount, const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, const VkAccelerationStructureBuildOffsetInfoKHR* const* ppOffsetInfos);
331 typedef void (VKAPI_PTR *PFN_vkCmdBuildAccelerationStructureIndirectKHR)(VkCommandBuffer commandBuffer, const VkAccelerationStructureBuildGeometryInfoKHR* pInfo, VkBuffer indirectBuffer, VkDeviceSize indirectOffset, uint32_t indirectStride);
332 typedef VkResult (VKAPI_PTR *PFN_vkBuildAccelerationStructureKHR)(VkDevice device, uint32_t infoCount, const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, const VkAccelerationStructureBuildOffsetInfoKHR* const* ppOffsetInfos);
333 typedef VkResult (VKAPI_PTR *PFN_vkCopyAccelerationStructureKHR)(VkDevice device, const VkCopyAccelerationStructureInfoKHR* pInfo);
334 typedef VkResult (VKAPI_PTR *PFN_vkCopyAccelerationStructureToMemoryKHR)(VkDevice device, const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo);
335 typedef VkResult (VKAPI_PTR *PFN_vkCopyMemoryToAccelerationStructureKHR)(VkDevice device, const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo);
336 typedef VkResult (VKAPI_PTR *PFN_vkWriteAccelerationStructuresPropertiesKHR)(VkDevice device, uint32_t accelerationStructureCount, const VkAccelerationStructureKHR* pAccelerationStructures, VkQueryType queryType, size_t dataSize, void* pData, size_t stride);
337 typedef void (VKAPI_PTR *PFN_vkCmdCopyAccelerationStructureKHR)(VkCommandBuffer commandBuffer, const VkCopyAccelerationStructureInfoKHR* pInfo);
338 typedef void (VKAPI_PTR *PFN_vkCmdCopyAccelerationStructureToMemoryKHR)(VkCommandBuffer commandBuffer, const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo);
339 typedef void (VKAPI_PTR *PFN_vkCmdCopyMemoryToAccelerationStructureKHR)(VkCommandBuffer commandBuffer, const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo);
340 typedef void (VKAPI_PTR *PFN_vkCmdTraceRaysKHR)(VkCommandBuffer commandBuffer, const VkStridedBufferRegionKHR* pRaygenShaderBindingTable, const VkStridedBufferRegionKHR* pMissShaderBindingTable, const VkStridedBufferRegionKHR* pHitShaderBindingTable, const VkStridedBufferRegionKHR* pCallableShaderBindingTable, uint32_t width, uint32_t height, uint32_t depth);
341 typedef VkResult (VKAPI_PTR *PFN_vkCreateRayTracingPipelinesKHR)(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkRayTracingPipelineCreateInfoKHR* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines);
342 typedef VkDeviceAddress (VKAPI_PTR *PFN_vkGetAccelerationStructureDeviceAddressKHR)(VkDevice device, const VkAccelerationStructureDeviceAddressInfoKHR* pInfo);
343 typedef VkResult (VKAPI_PTR *PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR)(VkDevice device, VkPipeline pipeline, uint32_t firstGroup, uint32_t groupCount, size_t dataSize, void* pData);
344 typedef void (VKAPI_PTR *PFN_vkCmdTraceRaysIndirectKHR)(VkCommandBuffer commandBuffer, const VkStridedBufferRegionKHR* pRaygenShaderBindingTable, const VkStridedBufferRegionKHR* pMissShaderBindingTable, const VkStridedBufferRegionKHR* pHitShaderBindingTable, const VkStridedBufferRegionKHR* pCallableShaderBindingTable, VkBuffer buffer, VkDeviceSize offset);
345 typedef VkResult (VKAPI_PTR *PFN_vkGetDeviceAccelerationStructureCompatibilityKHR)(VkDevice device, const VkAccelerationStructureVersionKHR* version);
347 #ifndef VK_NO_PROTOTYPES
348 VKAPI_ATTR VkResult VKAPI_CALL vkCreateAccelerationStructureKHR(
350 const VkAccelerationStructureCreateInfoKHR* pCreateInfo,
351 const VkAllocationCallbacks* pAllocator,
352 VkAccelerationStructureKHR* pAccelerationStructure);
354 VKAPI_ATTR void VKAPI_CALL vkGetAccelerationStructureMemoryRequirementsKHR(
356 const VkAccelerationStructureMemoryRequirementsInfoKHR* pInfo,
357 VkMemoryRequirements2* pMemoryRequirements);
359 VKAPI_ATTR void VKAPI_CALL vkCmdBuildAccelerationStructureKHR(
360 VkCommandBuffer commandBuffer,
362 const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
363 const VkAccelerationStructureBuildOffsetInfoKHR* const* ppOffsetInfos);
365 VKAPI_ATTR void VKAPI_CALL vkCmdBuildAccelerationStructureIndirectKHR(
366 VkCommandBuffer commandBuffer,
367 const VkAccelerationStructureBuildGeometryInfoKHR* pInfo,
368 VkBuffer indirectBuffer,
369 VkDeviceSize indirectOffset,
370 uint32_t indirectStride);
372 VKAPI_ATTR VkResult VKAPI_CALL vkBuildAccelerationStructureKHR(
375 const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
376 const VkAccelerationStructureBuildOffsetInfoKHR* const* ppOffsetInfos);
378 VKAPI_ATTR VkResult VKAPI_CALL vkCopyAccelerationStructureKHR(
380 const VkCopyAccelerationStructureInfoKHR* pInfo);
382 VKAPI_ATTR VkResult VKAPI_CALL vkCopyAccelerationStructureToMemoryKHR(
384 const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo);
386 VKAPI_ATTR VkResult VKAPI_CALL vkCopyMemoryToAccelerationStructureKHR(
388 const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo);
390 VKAPI_ATTR VkResult VKAPI_CALL vkWriteAccelerationStructuresPropertiesKHR(
392 uint32_t accelerationStructureCount,
393 const VkAccelerationStructureKHR* pAccelerationStructures,
394 VkQueryType queryType,
399 VKAPI_ATTR void VKAPI_CALL vkCmdCopyAccelerationStructureKHR(
400 VkCommandBuffer commandBuffer,
401 const VkCopyAccelerationStructureInfoKHR* pInfo);
403 VKAPI_ATTR void VKAPI_CALL vkCmdCopyAccelerationStructureToMemoryKHR(
404 VkCommandBuffer commandBuffer,
405 const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo);
407 VKAPI_ATTR void VKAPI_CALL vkCmdCopyMemoryToAccelerationStructureKHR(
408 VkCommandBuffer commandBuffer,
409 const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo);
411 VKAPI_ATTR void VKAPI_CALL vkCmdTraceRaysKHR(
412 VkCommandBuffer commandBuffer,
413 const VkStridedBufferRegionKHR* pRaygenShaderBindingTable,
414 const VkStridedBufferRegionKHR* pMissShaderBindingTable,
415 const VkStridedBufferRegionKHR* pHitShaderBindingTable,
416 const VkStridedBufferRegionKHR* pCallableShaderBindingTable,
421 VKAPI_ATTR VkResult VKAPI_CALL vkCreateRayTracingPipelinesKHR(
423 VkPipelineCache pipelineCache,
424 uint32_t createInfoCount,
425 const VkRayTracingPipelineCreateInfoKHR* pCreateInfos,
426 const VkAllocationCallbacks* pAllocator,
427 VkPipeline* pPipelines);
429 VKAPI_ATTR VkDeviceAddress VKAPI_CALL vkGetAccelerationStructureDeviceAddressKHR(
431 const VkAccelerationStructureDeviceAddressInfoKHR* pInfo);
433 VKAPI_ATTR VkResult VKAPI_CALL vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(
441 VKAPI_ATTR void VKAPI_CALL vkCmdTraceRaysIndirectKHR(
442 VkCommandBuffer commandBuffer,
443 const VkStridedBufferRegionKHR* pRaygenShaderBindingTable,
444 const VkStridedBufferRegionKHR* pMissShaderBindingTable,
445 const VkStridedBufferRegionKHR* pHitShaderBindingTable,
446 const VkStridedBufferRegionKHR* pCallableShaderBindingTable,
448 VkDeviceSize offset);
450 VKAPI_ATTR VkResult VKAPI_CALL vkGetDeviceAccelerationStructureCompatibilityKHR(
452 const VkAccelerationStructureVersionKHR* version);