2 #define VULKAN_BETA_H_ 1
5 ** Copyright (c) 2015-2020 The Khronos Group Inc.
7 ** Licensed under the Apache License, Version 2.0 (the "License");
8 ** you may not use this file except in compliance with the License.
9 ** You may obtain a copy of the License at
11 ** http://www.apache.org/licenses/LICENSE-2.0
13 ** Unless required by applicable law or agreed to in writing, software
14 ** distributed under the License is distributed on an "AS IS" BASIS,
15 ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 ** See the License for the specific language governing permissions and
17 ** limitations under the License.
21 ** This header is generated from the Khronos Vulkan XML API Registry.
32 #define VK_KHR_deferred_host_operations 1
33 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDeferredOperationKHR
)
34 #define VK_KHR_DEFERRED_HOST_OPERATIONS_SPEC_VERSION 2
35 #define VK_KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME "VK_KHR_deferred_host_operations"
36 typedef struct VkDeferredOperationInfoKHR
{
37 VkStructureType sType
;
39 VkDeferredOperationKHR operationHandle
;
40 } VkDeferredOperationInfoKHR
;
42 typedef VkResult (VKAPI_PTR
*PFN_vkCreateDeferredOperationKHR
)(VkDevice device
, const VkAllocationCallbacks
* pAllocator
, VkDeferredOperationKHR
* pDeferredOperation
);
43 typedef void (VKAPI_PTR
*PFN_vkDestroyDeferredOperationKHR
)(VkDevice device
, VkDeferredOperationKHR operation
, const VkAllocationCallbacks
* pAllocator
);
44 typedef uint32_t (VKAPI_PTR
*PFN_vkGetDeferredOperationMaxConcurrencyKHR
)(VkDevice device
, VkDeferredOperationKHR operation
);
45 typedef VkResult (VKAPI_PTR
*PFN_vkGetDeferredOperationResultKHR
)(VkDevice device
, VkDeferredOperationKHR operation
);
46 typedef VkResult (VKAPI_PTR
*PFN_vkDeferredOperationJoinKHR
)(VkDevice device
, VkDeferredOperationKHR operation
);
48 #ifndef VK_NO_PROTOTYPES
49 VKAPI_ATTR VkResult VKAPI_CALL
vkCreateDeferredOperationKHR(
51 const VkAllocationCallbacks
* pAllocator
,
52 VkDeferredOperationKHR
* pDeferredOperation
);
54 VKAPI_ATTR
void VKAPI_CALL
vkDestroyDeferredOperationKHR(
56 VkDeferredOperationKHR operation
,
57 const VkAllocationCallbacks
* pAllocator
);
59 VKAPI_ATTR
uint32_t VKAPI_CALL
vkGetDeferredOperationMaxConcurrencyKHR(
61 VkDeferredOperationKHR operation
);
63 VKAPI_ATTR VkResult VKAPI_CALL
vkGetDeferredOperationResultKHR(
65 VkDeferredOperationKHR operation
);
67 VKAPI_ATTR VkResult VKAPI_CALL
vkDeferredOperationJoinKHR(
69 VkDeferredOperationKHR operation
);
73 #define VK_KHR_pipeline_library 1
74 #define VK_KHR_PIPELINE_LIBRARY_SPEC_VERSION 1
75 #define VK_KHR_PIPELINE_LIBRARY_EXTENSION_NAME "VK_KHR_pipeline_library"
76 typedef struct VkPipelineLibraryCreateInfoKHR
{
77 VkStructureType sType
;
79 uint32_t libraryCount
;
80 const VkPipeline
* pLibraries
;
81 } VkPipelineLibraryCreateInfoKHR
;
85 #define VK_KHR_ray_tracing 1
86 #define VK_KHR_RAY_TRACING_SPEC_VERSION 8
87 #define VK_KHR_RAY_TRACING_EXTENSION_NAME "VK_KHR_ray_tracing"
89 typedef enum VkAccelerationStructureBuildTypeKHR
{
90 VK_ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHR
= 0,
91 VK_ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR
= 1,
92 VK_ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_OR_DEVICE_KHR
= 2,
93 VK_ACCELERATION_STRUCTURE_BUILD_TYPE_BEGIN_RANGE_KHR
= VK_ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHR
,
94 VK_ACCELERATION_STRUCTURE_BUILD_TYPE_END_RANGE_KHR
= VK_ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_OR_DEVICE_KHR
,
95 VK_ACCELERATION_STRUCTURE_BUILD_TYPE_RANGE_SIZE_KHR
= (VK_ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_OR_DEVICE_KHR
- VK_ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHR
+ 1),
96 VK_ACCELERATION_STRUCTURE_BUILD_TYPE_MAX_ENUM_KHR
= 0x7FFFFFFF
97 } VkAccelerationStructureBuildTypeKHR
;
98 typedef union VkDeviceOrHostAddressKHR
{
99 VkDeviceAddress deviceAddress
;
101 } VkDeviceOrHostAddressKHR
;
103 typedef union VkDeviceOrHostAddressConstKHR
{
104 VkDeviceAddress deviceAddress
;
105 const void* hostAddress
;
106 } VkDeviceOrHostAddressConstKHR
;
108 typedef struct VkAccelerationStructureBuildOffsetInfoKHR
{
109 uint32_t primitiveCount
;
110 uint32_t primitiveOffset
;
111 uint32_t firstVertex
;
112 uint32_t transformOffset
;
113 } VkAccelerationStructureBuildOffsetInfoKHR
;
115 typedef struct VkRayTracingShaderGroupCreateInfoKHR
{
116 VkStructureType sType
;
118 VkRayTracingShaderGroupTypeKHR type
;
119 uint32_t generalShader
;
120 uint32_t closestHitShader
;
121 uint32_t anyHitShader
;
122 uint32_t intersectionShader
;
123 const void* pShaderGroupCaptureReplayHandle
;
124 } VkRayTracingShaderGroupCreateInfoKHR
;
126 typedef struct VkRayTracingPipelineInterfaceCreateInfoKHR
{
127 VkStructureType sType
;
129 uint32_t maxPayloadSize
;
130 uint32_t maxAttributeSize
;
131 uint32_t maxCallableSize
;
132 } VkRayTracingPipelineInterfaceCreateInfoKHR
;
134 typedef struct VkRayTracingPipelineCreateInfoKHR
{
135 VkStructureType sType
;
137 VkPipelineCreateFlags flags
;
139 const VkPipelineShaderStageCreateInfo
* pStages
;
141 const VkRayTracingShaderGroupCreateInfoKHR
* pGroups
;
142 uint32_t maxRecursionDepth
;
143 VkPipelineLibraryCreateInfoKHR libraries
;
144 const VkRayTracingPipelineInterfaceCreateInfoKHR
* pLibraryInterface
;
145 VkPipelineLayout layout
;
146 VkPipeline basePipelineHandle
;
147 int32_t basePipelineIndex
;
148 } VkRayTracingPipelineCreateInfoKHR
;
150 typedef struct VkAccelerationStructureGeometryTrianglesDataKHR
{
151 VkStructureType sType
;
153 VkFormat vertexFormat
;
154 VkDeviceOrHostAddressConstKHR vertexData
;
155 VkDeviceSize vertexStride
;
156 VkIndexType indexType
;
157 VkDeviceOrHostAddressConstKHR indexData
;
158 VkDeviceOrHostAddressConstKHR transformData
;
159 } VkAccelerationStructureGeometryTrianglesDataKHR
;
161 typedef struct VkAccelerationStructureGeometryAabbsDataKHR
{
162 VkStructureType sType
;
164 VkDeviceOrHostAddressConstKHR data
;
166 } VkAccelerationStructureGeometryAabbsDataKHR
;
168 typedef struct VkAccelerationStructureGeometryInstancesDataKHR
{
169 VkStructureType sType
;
171 VkBool32 arrayOfPointers
;
172 VkDeviceOrHostAddressConstKHR data
;
173 } VkAccelerationStructureGeometryInstancesDataKHR
;
175 typedef union VkAccelerationStructureGeometryDataKHR
{
176 VkAccelerationStructureGeometryTrianglesDataKHR triangles
;
177 VkAccelerationStructureGeometryAabbsDataKHR aabbs
;
178 VkAccelerationStructureGeometryInstancesDataKHR instances
;
179 } VkAccelerationStructureGeometryDataKHR
;
181 typedef struct VkAccelerationStructureGeometryKHR
{
182 VkStructureType sType
;
184 VkGeometryTypeKHR geometryType
;
185 VkAccelerationStructureGeometryDataKHR geometry
;
186 VkGeometryFlagsKHR flags
;
187 } VkAccelerationStructureGeometryKHR
;
189 typedef struct VkAccelerationStructureBuildGeometryInfoKHR
{
190 VkStructureType sType
;
192 VkAccelerationStructureTypeKHR type
;
193 VkBuildAccelerationStructureFlagsKHR flags
;
195 VkAccelerationStructureKHR srcAccelerationStructure
;
196 VkAccelerationStructureKHR dstAccelerationStructure
;
197 VkBool32 geometryArrayOfPointers
;
198 uint32_t geometryCount
;
199 const VkAccelerationStructureGeometryKHR
* const* ppGeometries
;
200 VkDeviceOrHostAddressKHR scratchData
;
201 } VkAccelerationStructureBuildGeometryInfoKHR
;
203 typedef struct VkAccelerationStructureCreateGeometryTypeInfoKHR
{
204 VkStructureType sType
;
206 VkGeometryTypeKHR geometryType
;
207 uint32_t maxPrimitiveCount
;
208 VkIndexType indexType
;
209 uint32_t maxVertexCount
;
210 VkFormat vertexFormat
;
211 VkBool32 allowsTransforms
;
212 } VkAccelerationStructureCreateGeometryTypeInfoKHR
;
214 typedef struct VkAccelerationStructureCreateInfoKHR
{
215 VkStructureType sType
;
217 VkDeviceSize compactedSize
;
218 VkAccelerationStructureTypeKHR type
;
219 VkBuildAccelerationStructureFlagsKHR flags
;
220 uint32_t maxGeometryCount
;
221 const VkAccelerationStructureCreateGeometryTypeInfoKHR
* pGeometryInfos
;
222 VkDeviceAddress deviceAddress
;
223 } VkAccelerationStructureCreateInfoKHR
;
225 typedef struct VkAccelerationStructureMemoryRequirementsInfoKHR
{
226 VkStructureType sType
;
228 VkAccelerationStructureMemoryRequirementsTypeKHR type
;
229 VkAccelerationStructureBuildTypeKHR buildType
;
230 VkAccelerationStructureKHR accelerationStructure
;
231 } VkAccelerationStructureMemoryRequirementsInfoKHR
;
233 typedef struct VkPhysicalDeviceRayTracingFeaturesKHR
{
234 VkStructureType sType
;
237 VkBool32 rayTracingShaderGroupHandleCaptureReplay
;
238 VkBool32 rayTracingShaderGroupHandleCaptureReplayMixed
;
239 VkBool32 rayTracingAccelerationStructureCaptureReplay
;
240 VkBool32 rayTracingIndirectTraceRays
;
241 VkBool32 rayTracingIndirectAccelerationStructureBuild
;
242 VkBool32 rayTracingHostAccelerationStructureCommands
;
244 VkBool32 rayTracingPrimitiveCulling
;
245 } VkPhysicalDeviceRayTracingFeaturesKHR
;
247 typedef struct VkPhysicalDeviceRayTracingPropertiesKHR
{
248 VkStructureType sType
;
250 uint32_t shaderGroupHandleSize
;
251 uint32_t maxRecursionDepth
;
252 uint32_t maxShaderGroupStride
;
253 uint32_t shaderGroupBaseAlignment
;
254 uint64_t maxGeometryCount
;
255 uint64_t maxInstanceCount
;
256 uint64_t maxPrimitiveCount
;
257 uint32_t maxDescriptorSetAccelerationStructures
;
258 uint32_t shaderGroupHandleCaptureReplaySize
;
259 } VkPhysicalDeviceRayTracingPropertiesKHR
;
261 typedef struct VkAccelerationStructureDeviceAddressInfoKHR
{
262 VkStructureType sType
;
264 VkAccelerationStructureKHR accelerationStructure
;
265 } VkAccelerationStructureDeviceAddressInfoKHR
;
267 typedef struct VkAccelerationStructureVersionKHR
{
268 VkStructureType sType
;
270 const uint8_t* versionData
;
271 } VkAccelerationStructureVersionKHR
;
273 typedef struct VkStridedBufferRegionKHR
{
278 } VkStridedBufferRegionKHR
;
280 typedef struct VkTraceRaysIndirectCommandKHR
{
284 } VkTraceRaysIndirectCommandKHR
;
286 typedef struct VkCopyAccelerationStructureToMemoryInfoKHR
{
287 VkStructureType sType
;
289 VkAccelerationStructureKHR src
;
290 VkDeviceOrHostAddressKHR dst
;
291 VkCopyAccelerationStructureModeKHR mode
;
292 } VkCopyAccelerationStructureToMemoryInfoKHR
;
294 typedef struct VkCopyMemoryToAccelerationStructureInfoKHR
{
295 VkStructureType sType
;
297 VkDeviceOrHostAddressConstKHR src
;
298 VkAccelerationStructureKHR dst
;
299 VkCopyAccelerationStructureModeKHR mode
;
300 } VkCopyMemoryToAccelerationStructureInfoKHR
;
302 typedef struct VkCopyAccelerationStructureInfoKHR
{
303 VkStructureType sType
;
305 VkAccelerationStructureKHR src
;
306 VkAccelerationStructureKHR dst
;
307 VkCopyAccelerationStructureModeKHR mode
;
308 } VkCopyAccelerationStructureInfoKHR
;
310 typedef VkResult (VKAPI_PTR
*PFN_vkCreateAccelerationStructureKHR
)(VkDevice device
, const VkAccelerationStructureCreateInfoKHR
* pCreateInfo
, const VkAllocationCallbacks
* pAllocator
, VkAccelerationStructureKHR
* pAccelerationStructure
);
311 typedef void (VKAPI_PTR
*PFN_vkGetAccelerationStructureMemoryRequirementsKHR
)(VkDevice device
, const VkAccelerationStructureMemoryRequirementsInfoKHR
* pInfo
, VkMemoryRequirements2
* pMemoryRequirements
);
312 typedef void (VKAPI_PTR
*PFN_vkCmdBuildAccelerationStructureKHR
)(VkCommandBuffer commandBuffer
, uint32_t infoCount
, const VkAccelerationStructureBuildGeometryInfoKHR
* pInfos
, const VkAccelerationStructureBuildOffsetInfoKHR
* const* ppOffsetInfos
);
313 typedef void (VKAPI_PTR
*PFN_vkCmdBuildAccelerationStructureIndirectKHR
)(VkCommandBuffer commandBuffer
, const VkAccelerationStructureBuildGeometryInfoKHR
* pInfo
, VkBuffer indirectBuffer
, VkDeviceSize indirectOffset
, uint32_t indirectStride
);
314 typedef VkResult (VKAPI_PTR
*PFN_vkBuildAccelerationStructureKHR
)(VkDevice device
, uint32_t infoCount
, const VkAccelerationStructureBuildGeometryInfoKHR
* pInfos
, const VkAccelerationStructureBuildOffsetInfoKHR
* const* ppOffsetInfos
);
315 typedef VkResult (VKAPI_PTR
*PFN_vkCopyAccelerationStructureKHR
)(VkDevice device
, const VkCopyAccelerationStructureInfoKHR
* pInfo
);
316 typedef VkResult (VKAPI_PTR
*PFN_vkCopyAccelerationStructureToMemoryKHR
)(VkDevice device
, const VkCopyAccelerationStructureToMemoryInfoKHR
* pInfo
);
317 typedef VkResult (VKAPI_PTR
*PFN_vkCopyMemoryToAccelerationStructureKHR
)(VkDevice device
, const VkCopyMemoryToAccelerationStructureInfoKHR
* pInfo
);
318 typedef VkResult (VKAPI_PTR
*PFN_vkWriteAccelerationStructuresPropertiesKHR
)(VkDevice device
, uint32_t accelerationStructureCount
, const VkAccelerationStructureKHR
* pAccelerationStructures
, VkQueryType queryType
, size_t dataSize
, void* pData
, size_t stride
);
319 typedef void (VKAPI_PTR
*PFN_vkCmdCopyAccelerationStructureKHR
)(VkCommandBuffer commandBuffer
, const VkCopyAccelerationStructureInfoKHR
* pInfo
);
320 typedef void (VKAPI_PTR
*PFN_vkCmdCopyAccelerationStructureToMemoryKHR
)(VkCommandBuffer commandBuffer
, const VkCopyAccelerationStructureToMemoryInfoKHR
* pInfo
);
321 typedef void (VKAPI_PTR
*PFN_vkCmdCopyMemoryToAccelerationStructureKHR
)(VkCommandBuffer commandBuffer
, const VkCopyMemoryToAccelerationStructureInfoKHR
* pInfo
);
322 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
);
323 typedef VkResult (VKAPI_PTR
*PFN_vkCreateRayTracingPipelinesKHR
)(VkDevice device
, VkPipelineCache pipelineCache
, uint32_t createInfoCount
, const VkRayTracingPipelineCreateInfoKHR
* pCreateInfos
, const VkAllocationCallbacks
* pAllocator
, VkPipeline
* pPipelines
);
324 typedef VkDeviceAddress (VKAPI_PTR
*PFN_vkGetAccelerationStructureDeviceAddressKHR
)(VkDevice device
, const VkAccelerationStructureDeviceAddressInfoKHR
* pInfo
);
325 typedef VkResult (VKAPI_PTR
*PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR
)(VkDevice device
, VkPipeline pipeline
, uint32_t firstGroup
, uint32_t groupCount
, size_t dataSize
, void* pData
);
326 typedef void (VKAPI_PTR
*PFN_vkCmdTraceRaysIndirectKHR
)(VkCommandBuffer commandBuffer
, const VkStridedBufferRegionKHR
* pRaygenShaderBindingTable
, const VkStridedBufferRegionKHR
* pMissShaderBindingTable
, const VkStridedBufferRegionKHR
* pHitShaderBindingTable
, const VkStridedBufferRegionKHR
* pCallableShaderBindingTable
, VkBuffer buffer
, VkDeviceSize offset
);
327 typedef VkResult (VKAPI_PTR
*PFN_vkGetDeviceAccelerationStructureCompatibilityKHR
)(VkDevice device
, const VkAccelerationStructureVersionKHR
* version
);
329 #ifndef VK_NO_PROTOTYPES
330 VKAPI_ATTR VkResult VKAPI_CALL
vkCreateAccelerationStructureKHR(
332 const VkAccelerationStructureCreateInfoKHR
* pCreateInfo
,
333 const VkAllocationCallbacks
* pAllocator
,
334 VkAccelerationStructureKHR
* pAccelerationStructure
);
336 VKAPI_ATTR
void VKAPI_CALL
vkGetAccelerationStructureMemoryRequirementsKHR(
338 const VkAccelerationStructureMemoryRequirementsInfoKHR
* pInfo
,
339 VkMemoryRequirements2
* pMemoryRequirements
);
341 VKAPI_ATTR
void VKAPI_CALL
vkCmdBuildAccelerationStructureKHR(
342 VkCommandBuffer commandBuffer
,
344 const VkAccelerationStructureBuildGeometryInfoKHR
* pInfos
,
345 const VkAccelerationStructureBuildOffsetInfoKHR
* const* ppOffsetInfos
);
347 VKAPI_ATTR
void VKAPI_CALL
vkCmdBuildAccelerationStructureIndirectKHR(
348 VkCommandBuffer commandBuffer
,
349 const VkAccelerationStructureBuildGeometryInfoKHR
* pInfo
,
350 VkBuffer indirectBuffer
,
351 VkDeviceSize indirectOffset
,
352 uint32_t indirectStride
);
354 VKAPI_ATTR VkResult VKAPI_CALL
vkBuildAccelerationStructureKHR(
357 const VkAccelerationStructureBuildGeometryInfoKHR
* pInfos
,
358 const VkAccelerationStructureBuildOffsetInfoKHR
* const* ppOffsetInfos
);
360 VKAPI_ATTR VkResult VKAPI_CALL
vkCopyAccelerationStructureKHR(
362 const VkCopyAccelerationStructureInfoKHR
* pInfo
);
364 VKAPI_ATTR VkResult VKAPI_CALL
vkCopyAccelerationStructureToMemoryKHR(
366 const VkCopyAccelerationStructureToMemoryInfoKHR
* pInfo
);
368 VKAPI_ATTR VkResult VKAPI_CALL
vkCopyMemoryToAccelerationStructureKHR(
370 const VkCopyMemoryToAccelerationStructureInfoKHR
* pInfo
);
372 VKAPI_ATTR VkResult VKAPI_CALL
vkWriteAccelerationStructuresPropertiesKHR(
374 uint32_t accelerationStructureCount
,
375 const VkAccelerationStructureKHR
* pAccelerationStructures
,
376 VkQueryType queryType
,
381 VKAPI_ATTR
void VKAPI_CALL
vkCmdCopyAccelerationStructureKHR(
382 VkCommandBuffer commandBuffer
,
383 const VkCopyAccelerationStructureInfoKHR
* pInfo
);
385 VKAPI_ATTR
void VKAPI_CALL
vkCmdCopyAccelerationStructureToMemoryKHR(
386 VkCommandBuffer commandBuffer
,
387 const VkCopyAccelerationStructureToMemoryInfoKHR
* pInfo
);
389 VKAPI_ATTR
void VKAPI_CALL
vkCmdCopyMemoryToAccelerationStructureKHR(
390 VkCommandBuffer commandBuffer
,
391 const VkCopyMemoryToAccelerationStructureInfoKHR
* pInfo
);
393 VKAPI_ATTR
void VKAPI_CALL
vkCmdTraceRaysKHR(
394 VkCommandBuffer commandBuffer
,
395 const VkStridedBufferRegionKHR
* pRaygenShaderBindingTable
,
396 const VkStridedBufferRegionKHR
* pMissShaderBindingTable
,
397 const VkStridedBufferRegionKHR
* pHitShaderBindingTable
,
398 const VkStridedBufferRegionKHR
* pCallableShaderBindingTable
,
403 VKAPI_ATTR VkResult VKAPI_CALL
vkCreateRayTracingPipelinesKHR(
405 VkPipelineCache pipelineCache
,
406 uint32_t createInfoCount
,
407 const VkRayTracingPipelineCreateInfoKHR
* pCreateInfos
,
408 const VkAllocationCallbacks
* pAllocator
,
409 VkPipeline
* pPipelines
);
411 VKAPI_ATTR VkDeviceAddress VKAPI_CALL
vkGetAccelerationStructureDeviceAddressKHR(
413 const VkAccelerationStructureDeviceAddressInfoKHR
* pInfo
);
415 VKAPI_ATTR VkResult VKAPI_CALL
vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(
423 VKAPI_ATTR
void VKAPI_CALL
vkCmdTraceRaysIndirectKHR(
424 VkCommandBuffer commandBuffer
,
425 const VkStridedBufferRegionKHR
* pRaygenShaderBindingTable
,
426 const VkStridedBufferRegionKHR
* pMissShaderBindingTable
,
427 const VkStridedBufferRegionKHR
* pHitShaderBindingTable
,
428 const VkStridedBufferRegionKHR
* pCallableShaderBindingTable
,
430 VkDeviceSize offset
);
432 VKAPI_ATTR VkResult VKAPI_CALL
vkGetDeviceAccelerationStructureCompatibilityKHR(
434 const VkAccelerationStructureVersionKHR
* version
);