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_MAX_ENUM_KHR
= 0x7FFFFFFF
94 } VkAccelerationStructureBuildTypeKHR
;
95 typedef union VkDeviceOrHostAddressKHR
{
96 VkDeviceAddress deviceAddress
;
98 } VkDeviceOrHostAddressKHR
;
100 typedef union VkDeviceOrHostAddressConstKHR
{
101 VkDeviceAddress deviceAddress
;
102 const void* hostAddress
;
103 } VkDeviceOrHostAddressConstKHR
;
105 typedef struct VkAccelerationStructureBuildOffsetInfoKHR
{
106 uint32_t primitiveCount
;
107 uint32_t primitiveOffset
;
108 uint32_t firstVertex
;
109 uint32_t transformOffset
;
110 } VkAccelerationStructureBuildOffsetInfoKHR
;
112 typedef struct VkRayTracingShaderGroupCreateInfoKHR
{
113 VkStructureType sType
;
115 VkRayTracingShaderGroupTypeKHR type
;
116 uint32_t generalShader
;
117 uint32_t closestHitShader
;
118 uint32_t anyHitShader
;
119 uint32_t intersectionShader
;
120 const void* pShaderGroupCaptureReplayHandle
;
121 } VkRayTracingShaderGroupCreateInfoKHR
;
123 typedef struct VkRayTracingPipelineInterfaceCreateInfoKHR
{
124 VkStructureType sType
;
126 uint32_t maxPayloadSize
;
127 uint32_t maxAttributeSize
;
128 uint32_t maxCallableSize
;
129 } VkRayTracingPipelineInterfaceCreateInfoKHR
;
131 typedef struct VkRayTracingPipelineCreateInfoKHR
{
132 VkStructureType sType
;
134 VkPipelineCreateFlags flags
;
136 const VkPipelineShaderStageCreateInfo
* pStages
;
138 const VkRayTracingShaderGroupCreateInfoKHR
* pGroups
;
139 uint32_t maxRecursionDepth
;
140 VkPipelineLibraryCreateInfoKHR libraries
;
141 const VkRayTracingPipelineInterfaceCreateInfoKHR
* pLibraryInterface
;
142 VkPipelineLayout layout
;
143 VkPipeline basePipelineHandle
;
144 int32_t basePipelineIndex
;
145 } VkRayTracingPipelineCreateInfoKHR
;
147 typedef struct VkAccelerationStructureGeometryTrianglesDataKHR
{
148 VkStructureType sType
;
150 VkFormat vertexFormat
;
151 VkDeviceOrHostAddressConstKHR vertexData
;
152 VkDeviceSize vertexStride
;
153 VkIndexType indexType
;
154 VkDeviceOrHostAddressConstKHR indexData
;
155 VkDeviceOrHostAddressConstKHR transformData
;
156 } VkAccelerationStructureGeometryTrianglesDataKHR
;
158 typedef struct VkAccelerationStructureGeometryAabbsDataKHR
{
159 VkStructureType sType
;
161 VkDeviceOrHostAddressConstKHR data
;
163 } VkAccelerationStructureGeometryAabbsDataKHR
;
165 typedef struct VkAccelerationStructureGeometryInstancesDataKHR
{
166 VkStructureType sType
;
168 VkBool32 arrayOfPointers
;
169 VkDeviceOrHostAddressConstKHR data
;
170 } VkAccelerationStructureGeometryInstancesDataKHR
;
172 typedef union VkAccelerationStructureGeometryDataKHR
{
173 VkAccelerationStructureGeometryTrianglesDataKHR triangles
;
174 VkAccelerationStructureGeometryAabbsDataKHR aabbs
;
175 VkAccelerationStructureGeometryInstancesDataKHR instances
;
176 } VkAccelerationStructureGeometryDataKHR
;
178 typedef struct VkAccelerationStructureGeometryKHR
{
179 VkStructureType sType
;
181 VkGeometryTypeKHR geometryType
;
182 VkAccelerationStructureGeometryDataKHR geometry
;
183 VkGeometryFlagsKHR flags
;
184 } VkAccelerationStructureGeometryKHR
;
186 typedef struct VkAccelerationStructureBuildGeometryInfoKHR
{
187 VkStructureType sType
;
189 VkAccelerationStructureTypeKHR type
;
190 VkBuildAccelerationStructureFlagsKHR flags
;
192 VkAccelerationStructureKHR srcAccelerationStructure
;
193 VkAccelerationStructureKHR dstAccelerationStructure
;
194 VkBool32 geometryArrayOfPointers
;
195 uint32_t geometryCount
;
196 const VkAccelerationStructureGeometryKHR
* const* ppGeometries
;
197 VkDeviceOrHostAddressKHR scratchData
;
198 } VkAccelerationStructureBuildGeometryInfoKHR
;
200 typedef struct VkAccelerationStructureCreateGeometryTypeInfoKHR
{
201 VkStructureType sType
;
203 VkGeometryTypeKHR geometryType
;
204 uint32_t maxPrimitiveCount
;
205 VkIndexType indexType
;
206 uint32_t maxVertexCount
;
207 VkFormat vertexFormat
;
208 VkBool32 allowsTransforms
;
209 } VkAccelerationStructureCreateGeometryTypeInfoKHR
;
211 typedef struct VkAccelerationStructureCreateInfoKHR
{
212 VkStructureType sType
;
214 VkDeviceSize compactedSize
;
215 VkAccelerationStructureTypeKHR type
;
216 VkBuildAccelerationStructureFlagsKHR flags
;
217 uint32_t maxGeometryCount
;
218 const VkAccelerationStructureCreateGeometryTypeInfoKHR
* pGeometryInfos
;
219 VkDeviceAddress deviceAddress
;
220 } VkAccelerationStructureCreateInfoKHR
;
222 typedef struct VkAccelerationStructureMemoryRequirementsInfoKHR
{
223 VkStructureType sType
;
225 VkAccelerationStructureMemoryRequirementsTypeKHR type
;
226 VkAccelerationStructureBuildTypeKHR buildType
;
227 VkAccelerationStructureKHR accelerationStructure
;
228 } VkAccelerationStructureMemoryRequirementsInfoKHR
;
230 typedef struct VkPhysicalDeviceRayTracingFeaturesKHR
{
231 VkStructureType sType
;
234 VkBool32 rayTracingShaderGroupHandleCaptureReplay
;
235 VkBool32 rayTracingShaderGroupHandleCaptureReplayMixed
;
236 VkBool32 rayTracingAccelerationStructureCaptureReplay
;
237 VkBool32 rayTracingIndirectTraceRays
;
238 VkBool32 rayTracingIndirectAccelerationStructureBuild
;
239 VkBool32 rayTracingHostAccelerationStructureCommands
;
241 VkBool32 rayTracingPrimitiveCulling
;
242 } VkPhysicalDeviceRayTracingFeaturesKHR
;
244 typedef struct VkPhysicalDeviceRayTracingPropertiesKHR
{
245 VkStructureType sType
;
247 uint32_t shaderGroupHandleSize
;
248 uint32_t maxRecursionDepth
;
249 uint32_t maxShaderGroupStride
;
250 uint32_t shaderGroupBaseAlignment
;
251 uint64_t maxGeometryCount
;
252 uint64_t maxInstanceCount
;
253 uint64_t maxPrimitiveCount
;
254 uint32_t maxDescriptorSetAccelerationStructures
;
255 uint32_t shaderGroupHandleCaptureReplaySize
;
256 } VkPhysicalDeviceRayTracingPropertiesKHR
;
258 typedef struct VkAccelerationStructureDeviceAddressInfoKHR
{
259 VkStructureType sType
;
261 VkAccelerationStructureKHR accelerationStructure
;
262 } VkAccelerationStructureDeviceAddressInfoKHR
;
264 typedef struct VkAccelerationStructureVersionKHR
{
265 VkStructureType sType
;
267 const uint8_t* versionData
;
268 } VkAccelerationStructureVersionKHR
;
270 typedef struct VkStridedBufferRegionKHR
{
275 } VkStridedBufferRegionKHR
;
277 typedef struct VkTraceRaysIndirectCommandKHR
{
281 } VkTraceRaysIndirectCommandKHR
;
283 typedef struct VkCopyAccelerationStructureToMemoryInfoKHR
{
284 VkStructureType sType
;
286 VkAccelerationStructureKHR src
;
287 VkDeviceOrHostAddressKHR dst
;
288 VkCopyAccelerationStructureModeKHR mode
;
289 } VkCopyAccelerationStructureToMemoryInfoKHR
;
291 typedef struct VkCopyMemoryToAccelerationStructureInfoKHR
{
292 VkStructureType sType
;
294 VkDeviceOrHostAddressConstKHR src
;
295 VkAccelerationStructureKHR dst
;
296 VkCopyAccelerationStructureModeKHR mode
;
297 } VkCopyMemoryToAccelerationStructureInfoKHR
;
299 typedef struct VkCopyAccelerationStructureInfoKHR
{
300 VkStructureType sType
;
302 VkAccelerationStructureKHR src
;
303 VkAccelerationStructureKHR dst
;
304 VkCopyAccelerationStructureModeKHR mode
;
305 } VkCopyAccelerationStructureInfoKHR
;
307 typedef VkResult (VKAPI_PTR
*PFN_vkCreateAccelerationStructureKHR
)(VkDevice device
, const VkAccelerationStructureCreateInfoKHR
* pCreateInfo
, const VkAllocationCallbacks
* pAllocator
, VkAccelerationStructureKHR
* pAccelerationStructure
);
308 typedef void (VKAPI_PTR
*PFN_vkGetAccelerationStructureMemoryRequirementsKHR
)(VkDevice device
, const VkAccelerationStructureMemoryRequirementsInfoKHR
* pInfo
, VkMemoryRequirements2
* pMemoryRequirements
);
309 typedef void (VKAPI_PTR
*PFN_vkCmdBuildAccelerationStructureKHR
)(VkCommandBuffer commandBuffer
, uint32_t infoCount
, const VkAccelerationStructureBuildGeometryInfoKHR
* pInfos
, const VkAccelerationStructureBuildOffsetInfoKHR
* const* ppOffsetInfos
);
310 typedef void (VKAPI_PTR
*PFN_vkCmdBuildAccelerationStructureIndirectKHR
)(VkCommandBuffer commandBuffer
, const VkAccelerationStructureBuildGeometryInfoKHR
* pInfo
, VkBuffer indirectBuffer
, VkDeviceSize indirectOffset
, uint32_t indirectStride
);
311 typedef VkResult (VKAPI_PTR
*PFN_vkBuildAccelerationStructureKHR
)(VkDevice device
, uint32_t infoCount
, const VkAccelerationStructureBuildGeometryInfoKHR
* pInfos
, const VkAccelerationStructureBuildOffsetInfoKHR
* const* ppOffsetInfos
);
312 typedef VkResult (VKAPI_PTR
*PFN_vkCopyAccelerationStructureKHR
)(VkDevice device
, const VkCopyAccelerationStructureInfoKHR
* pInfo
);
313 typedef VkResult (VKAPI_PTR
*PFN_vkCopyAccelerationStructureToMemoryKHR
)(VkDevice device
, const VkCopyAccelerationStructureToMemoryInfoKHR
* pInfo
);
314 typedef VkResult (VKAPI_PTR
*PFN_vkCopyMemoryToAccelerationStructureKHR
)(VkDevice device
, const VkCopyMemoryToAccelerationStructureInfoKHR
* pInfo
);
315 typedef VkResult (VKAPI_PTR
*PFN_vkWriteAccelerationStructuresPropertiesKHR
)(VkDevice device
, uint32_t accelerationStructureCount
, const VkAccelerationStructureKHR
* pAccelerationStructures
, VkQueryType queryType
, size_t dataSize
, void* pData
, size_t stride
);
316 typedef void (VKAPI_PTR
*PFN_vkCmdCopyAccelerationStructureKHR
)(VkCommandBuffer commandBuffer
, const VkCopyAccelerationStructureInfoKHR
* pInfo
);
317 typedef void (VKAPI_PTR
*PFN_vkCmdCopyAccelerationStructureToMemoryKHR
)(VkCommandBuffer commandBuffer
, const VkCopyAccelerationStructureToMemoryInfoKHR
* pInfo
);
318 typedef void (VKAPI_PTR
*PFN_vkCmdCopyMemoryToAccelerationStructureKHR
)(VkCommandBuffer commandBuffer
, const VkCopyMemoryToAccelerationStructureInfoKHR
* pInfo
);
319 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
);
320 typedef VkResult (VKAPI_PTR
*PFN_vkCreateRayTracingPipelinesKHR
)(VkDevice device
, VkPipelineCache pipelineCache
, uint32_t createInfoCount
, const VkRayTracingPipelineCreateInfoKHR
* pCreateInfos
, const VkAllocationCallbacks
* pAllocator
, VkPipeline
* pPipelines
);
321 typedef VkDeviceAddress (VKAPI_PTR
*PFN_vkGetAccelerationStructureDeviceAddressKHR
)(VkDevice device
, const VkAccelerationStructureDeviceAddressInfoKHR
* pInfo
);
322 typedef VkResult (VKAPI_PTR
*PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR
)(VkDevice device
, VkPipeline pipeline
, uint32_t firstGroup
, uint32_t groupCount
, size_t dataSize
, void* pData
);
323 typedef void (VKAPI_PTR
*PFN_vkCmdTraceRaysIndirectKHR
)(VkCommandBuffer commandBuffer
, const VkStridedBufferRegionKHR
* pRaygenShaderBindingTable
, const VkStridedBufferRegionKHR
* pMissShaderBindingTable
, const VkStridedBufferRegionKHR
* pHitShaderBindingTable
, const VkStridedBufferRegionKHR
* pCallableShaderBindingTable
, VkBuffer buffer
, VkDeviceSize offset
);
324 typedef VkResult (VKAPI_PTR
*PFN_vkGetDeviceAccelerationStructureCompatibilityKHR
)(VkDevice device
, const VkAccelerationStructureVersionKHR
* version
);
326 #ifndef VK_NO_PROTOTYPES
327 VKAPI_ATTR VkResult VKAPI_CALL
vkCreateAccelerationStructureKHR(
329 const VkAccelerationStructureCreateInfoKHR
* pCreateInfo
,
330 const VkAllocationCallbacks
* pAllocator
,
331 VkAccelerationStructureKHR
* pAccelerationStructure
);
333 VKAPI_ATTR
void VKAPI_CALL
vkGetAccelerationStructureMemoryRequirementsKHR(
335 const VkAccelerationStructureMemoryRequirementsInfoKHR
* pInfo
,
336 VkMemoryRequirements2
* pMemoryRequirements
);
338 VKAPI_ATTR
void VKAPI_CALL
vkCmdBuildAccelerationStructureKHR(
339 VkCommandBuffer commandBuffer
,
341 const VkAccelerationStructureBuildGeometryInfoKHR
* pInfos
,
342 const VkAccelerationStructureBuildOffsetInfoKHR
* const* ppOffsetInfos
);
344 VKAPI_ATTR
void VKAPI_CALL
vkCmdBuildAccelerationStructureIndirectKHR(
345 VkCommandBuffer commandBuffer
,
346 const VkAccelerationStructureBuildGeometryInfoKHR
* pInfo
,
347 VkBuffer indirectBuffer
,
348 VkDeviceSize indirectOffset
,
349 uint32_t indirectStride
);
351 VKAPI_ATTR VkResult VKAPI_CALL
vkBuildAccelerationStructureKHR(
354 const VkAccelerationStructureBuildGeometryInfoKHR
* pInfos
,
355 const VkAccelerationStructureBuildOffsetInfoKHR
* const* ppOffsetInfos
);
357 VKAPI_ATTR VkResult VKAPI_CALL
vkCopyAccelerationStructureKHR(
359 const VkCopyAccelerationStructureInfoKHR
* pInfo
);
361 VKAPI_ATTR VkResult VKAPI_CALL
vkCopyAccelerationStructureToMemoryKHR(
363 const VkCopyAccelerationStructureToMemoryInfoKHR
* pInfo
);
365 VKAPI_ATTR VkResult VKAPI_CALL
vkCopyMemoryToAccelerationStructureKHR(
367 const VkCopyMemoryToAccelerationStructureInfoKHR
* pInfo
);
369 VKAPI_ATTR VkResult VKAPI_CALL
vkWriteAccelerationStructuresPropertiesKHR(
371 uint32_t accelerationStructureCount
,
372 const VkAccelerationStructureKHR
* pAccelerationStructures
,
373 VkQueryType queryType
,
378 VKAPI_ATTR
void VKAPI_CALL
vkCmdCopyAccelerationStructureKHR(
379 VkCommandBuffer commandBuffer
,
380 const VkCopyAccelerationStructureInfoKHR
* pInfo
);
382 VKAPI_ATTR
void VKAPI_CALL
vkCmdCopyAccelerationStructureToMemoryKHR(
383 VkCommandBuffer commandBuffer
,
384 const VkCopyAccelerationStructureToMemoryInfoKHR
* pInfo
);
386 VKAPI_ATTR
void VKAPI_CALL
vkCmdCopyMemoryToAccelerationStructureKHR(
387 VkCommandBuffer commandBuffer
,
388 const VkCopyMemoryToAccelerationStructureInfoKHR
* pInfo
);
390 VKAPI_ATTR
void VKAPI_CALL
vkCmdTraceRaysKHR(
391 VkCommandBuffer commandBuffer
,
392 const VkStridedBufferRegionKHR
* pRaygenShaderBindingTable
,
393 const VkStridedBufferRegionKHR
* pMissShaderBindingTable
,
394 const VkStridedBufferRegionKHR
* pHitShaderBindingTable
,
395 const VkStridedBufferRegionKHR
* pCallableShaderBindingTable
,
400 VKAPI_ATTR VkResult VKAPI_CALL
vkCreateRayTracingPipelinesKHR(
402 VkPipelineCache pipelineCache
,
403 uint32_t createInfoCount
,
404 const VkRayTracingPipelineCreateInfoKHR
* pCreateInfos
,
405 const VkAllocationCallbacks
* pAllocator
,
406 VkPipeline
* pPipelines
);
408 VKAPI_ATTR VkDeviceAddress VKAPI_CALL
vkGetAccelerationStructureDeviceAddressKHR(
410 const VkAccelerationStructureDeviceAddressInfoKHR
* pInfo
);
412 VKAPI_ATTR VkResult VKAPI_CALL
vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(
420 VKAPI_ATTR
void VKAPI_CALL
vkCmdTraceRaysIndirectKHR(
421 VkCommandBuffer commandBuffer
,
422 const VkStridedBufferRegionKHR
* pRaygenShaderBindingTable
,
423 const VkStridedBufferRegionKHR
* pMissShaderBindingTable
,
424 const VkStridedBufferRegionKHR
* pHitShaderBindingTable
,
425 const VkStridedBufferRegionKHR
* pCallableShaderBindingTable
,
427 VkDeviceSize offset
);
429 VKAPI_ATTR VkResult VKAPI_CALL
vkGetDeviceAccelerationStructureCompatibilityKHR(
431 const VkAccelerationStructureVersionKHR
* version
);