vsg: include/vsg/vk/vulkan.h Source File

vsg 1.1.8 VulkanSceneGraph library

Loading...
Searching...
No Matches
vulkan.h
1#pragma once
2// clang-format off
3
4/* <editor-fold desc="Apache-2.0 License">
5
6** Copyright (c) 2015-2020 The Khronos Group Inc.
7**
8** SPDX-License-Identifier: Apache-2.0
9
10</editor-fold> */
11
12//
13// Include Vulkan headers that are available in the system.
14//
15#include <vulkan/vulkan.h>
16//
17// Then add definitions not provided by older headers below.
18//
19
20// Workaround for cppcheck
21#ifndef VK_DEFINE_NON_DISPATCHABLE_HANDLE
22 #if (VK_USE_64_BIT_PTR_DEFINES==1)
23 #define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef struct object##_T *object;
24 #else
25 #define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef uint64_t object;
26 #endif
27#endif
28
29
31//
32// Definitions not provided prior to 1.1.77
33//
34#if VK_HEADER_VERSION < 77
35# define VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME "VK_EXT_descriptor_indexing"
36#endif
37
39//
40// Definitions not provided prior to 1.1.82
41//
42#if VK_HEADER_VERSION < 82
43# define VK_KHR_create_renderpass2 1
44# define VK_KHR_CREATE_RENDERPASS_2_SPEC_VERSION 1
45# define VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME "VK_KHR_create_renderpass2"
46
47 typedef struct VkAttachmentDescription2KHR
48{
49 VkStructureType sType;
50 const void* pNext;
51 VkAttachmentDescriptionFlags flags;
52 VkFormat format;
53 VkSampleCountFlagBits samples;
54 VkAttachmentLoadOp loadOp;
55 VkAttachmentStoreOp storeOp;
56 VkAttachmentLoadOp stencilLoadOp;
57 VkAttachmentStoreOp stencilStoreOp;
58 VkImageLayout initialLayout;
59 VkImageLayout finalLayout;
60} VkAttachmentDescription2KHR;
61
62 typedef struct VkAttachmentReference2KHR
63{
64 VkStructureType sType;
65 const void* pNext;
66 uint32_t attachment;
67 VkImageLayout layout;
68 VkImageAspectFlags aspectMask;
69} VkAttachmentReference2KHR;
70
71 typedef struct VkSubpassDescription2KHR
72{
73 VkStructureType sType;
74 const void* pNext;
75 VkSubpassDescriptionFlags flags;
76 VkPipelineBindPoint pipelineBindPoint;
77 uint32_t viewMask;
78 uint32_t inputAttachmentCount;
79 const VkAttachmentReference2KHR* pInputAttachments;
80 uint32_t colorAttachmentCount;
81 const VkAttachmentReference2KHR* pColorAttachments;
82 const VkAttachmentReference2KHR* pResolveAttachments;
83 const VkAttachmentReference2KHR* pDepthStencilAttachment;
84 uint32_t preserveAttachmentCount;
85 const uint32_t* pPreserveAttachments;
86} VkSubpassDescription2KHR;
87
88 typedef struct VkSubpassDependency2KHR
89{
90 VkStructureType sType;
91 const void* pNext;
92 uint32_t srcSubpass;
93 uint32_t dstSubpass;
94 VkPipelineStageFlags srcStageMask;
95 VkPipelineStageFlags dstStageMask;
96 VkAccessFlags srcAccessMask;
97 VkAccessFlags dstAccessMask;
98 VkDependencyFlags dependencyFlags;
99 int32_t viewOffset;
100} VkSubpassDependency2KHR;
101
102 typedef struct VkRenderPassCreateInfo2KHR
103{
104 VkStructureType sType;
105 const void* pNext;
106 VkRenderPassCreateFlags flags;
107 uint32_t attachmentCount;
108 const VkAttachmentDescription2KHR* pAttachments;
109 uint32_t subpassCount;
110 const VkSubpassDescription2KHR* pSubpasses;
111 uint32_t dependencyCount;
112 const VkSubpassDependency2KHR* pDependencies;
113 uint32_t correlatedViewMaskCount;
114 const uint32_t* pCorrelatedViewMasks;
115} VkRenderPassCreateInfo2KHR;
116
117#endif
118
120//
121// Definitions not provided prior to 1.3.215
122//
123
124#if VK_HEADER_VERSION < 215
125
126# define VK_KHR_fragment_shader_barycentric 1
127# define VK_KHR_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION 1
128# define VK_KHR_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME "VK_KHR_fragment_shader_barycentric"
129
130# define VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_KHR VkStructureType(1000203000)
131# define VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_EXT VkStructureType(1000203000)
132
133 typedef struct VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR
134{
135 VkStructureType sType;
136 void* pNext;
137 VkBool32 fragmentShaderBarycentric;
138} VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR;
139#endif
140
142//
143// Definitions not provided prior to 1.3.231
144//
145
146#if VK_HEADER_VERSION < 231
147
148# define VK_EXT_mesh_shader 1
149# define VK_EXT_MESH_SHADER_SPEC_VERSION 1
150# define VK_EXT_MESH_SHADER_EXTENSION_NAME "VK_EXT_mesh_shader"
151
152# define VK_SHADER_STAGE_TASK_BIT_EXT VkShaderStageFlagBits(0x00000040)
153# define VK_SHADER_STAGE_MESH_BIT_EXT VkShaderStageFlagBits(0x00000080)
154
155# define VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_EXT VkStructureType(1000202000)
156# define VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_EXT VkStructureType(1000202001)
157
158 typedef struct VkPhysicalDeviceMeshShaderFeaturesEXT {
159 VkStructureType sType;
160 void* pNext;
161 VkBool32 taskShader;
162 VkBool32 meshShader;
163 VkBool32 multiviewMeshShader;
164 VkBool32 primitiveFragmentShadingRateMeshShader;
165 VkBool32 meshShaderQueries;
166} VkPhysicalDeviceMeshShaderFeaturesEXT;
167
168 typedef struct VkPhysicalDeviceMeshShaderPropertiesEXT {
169 VkStructureType sType;
170 void* pNext;
171 uint32_t maxTaskWorkGroupTotalCount;
172 uint32_t maxTaskWorkGroupCount[3];
173 uint32_t maxTaskWorkGroupInvocations;
174 uint32_t maxTaskWorkGroupSize[3];
175 uint32_t maxTaskPayloadSize;
176 uint32_t maxTaskSharedMemorySize;
177 uint32_t maxTaskPayloadAndSharedMemorySize;
178 uint32_t maxMeshWorkGroupTotalCount;
179 uint32_t maxMeshWorkGroupCount[3];
180 uint32_t maxMeshWorkGroupInvocations;
181 uint32_t maxMeshWorkGroupSize[3];
182 uint32_t maxMeshSharedMemorySize;
183 uint32_t maxMeshPayloadAndSharedMemorySize;
184 uint32_t maxMeshOutputMemorySize;
185 uint32_t maxMeshPayloadAndOutputMemorySize;
186 uint32_t maxMeshOutputComponents;
187 uint32_t maxMeshOutputVertices;
188 uint32_t maxMeshOutputPrimitives;
189 uint32_t maxMeshOutputLayers;
190 uint32_t maxMeshMultiviewViewCount;
191 uint32_t meshOutputPerVertexGranularity;
192 uint32_t meshOutputPerPrimitiveGranularity;
193 uint32_t maxPreferredTaskWorkGroupInvocations;
194 uint32_t maxPreferredMeshWorkGroupInvocations;
195 VkBool32 prefersLocalInvocationVertexOutput;
196 VkBool32 prefersLocalInvocationPrimitiveOutput;
197 VkBool32 prefersCompactVertexOutput;
198 VkBool32 prefersCompactPrimitiveOutput;
199} VkPhysicalDeviceMeshShaderPropertiesEXT;
200
201 typedef struct VkDrawMeshTasksIndirectCommandEXT {
202 uint32_t groupCountX;
203 uint32_t groupCountY;
204 uint32_t groupCountZ;
205} VkDrawMeshTasksIndirectCommandEXT;
206
207typedef void (VKAPI_PTR *PFN_vkCmdDrawMeshTasksEXT)(VkCommandBuffer commandBuffer, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ);
208typedef void (VKAPI_PTR *PFN_vkCmdDrawMeshTasksIndirectEXT)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride);
209typedef void (VKAPI_PTR *PFN_vkCmdDrawMeshTasksIndirectCountEXT)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride);
210#endif
211
213//
214// Definitions not provided prior to 1.1.97
215//
216#if VK_HEADER_VERSION < 97
217
218typedef uint64_t VkDeviceAddress;
219
220#endif
221
223//
224// Definitions not provided prior to 1.1.96
225//
226#if VK_HEADER_VERSION < 96
227
228typedef uint64_t VkDeviceAddress;
229# define VK_KHR_shader_float_controls 1
230# define VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION 1
231# define VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME "VK_KHR_shader_float_controls"
232 typedef struct VkPhysicalDeviceFloatControlsPropertiesKHR
233{
234 VkStructureType sType;
235 void* pNext;
236 VkBool32 separateDenormSettings;
237 VkBool32 separateRoundingModeSettings;
238 VkBool32 shaderSignedZeroInfNanPreserveFloat16;
239 VkBool32 shaderSignedZeroInfNanPreserveFloat32;
240 VkBool32 shaderSignedZeroInfNanPreserveFloat64;
241 VkBool32 shaderDenormPreserveFloat16;
242 VkBool32 shaderDenormPreserveFloat32;
243 VkBool32 shaderDenormPreserveFloat64;
244 VkBool32 shaderDenormFlushToZeroFloat16;
245 VkBool32 shaderDenormFlushToZeroFloat32;
246 VkBool32 shaderDenormFlushToZeroFloat64;
247 VkBool32 shaderRoundingModeRTEFloat16;
248 VkBool32 shaderRoundingModeRTEFloat32;
249 VkBool32 shaderRoundingModeRTEFloat64;
250 VkBool32 shaderRoundingModeRTZFloat16;
251 VkBool32 shaderRoundingModeRTZFloat32;
252 VkBool32 shaderRoundingModeRTZFloat64;
253} VkPhysicalDeviceFloatControlsPropertiesKHR;
254
255#endif
256
258//
259// Definitions not provided prior to 1.1.106
260//
261#if VK_HEADER_VERSION < 106
262
263# define VK_EXT_buffer_device_address 1
264# define VK_EXT_BUFFER_DEVICE_ADDRESS_SPEC_VERSION 2
265# define VK_EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME "VK_EXT_buffer_device_address"
266 typedef struct VkPhysicalDeviceBufferDeviceAddressFeaturesEXT
267{
268 VkStructureType sType;
269 void* pNext;
270 VkBool32 bufferDeviceAddress;
271 VkBool32 bufferDeviceAddressCaptureReplay;
272 VkBool32 bufferDeviceAddressMultiDevice;
273} VkPhysicalDeviceBufferDeviceAddressFeaturesEXT;
274#endif
275
277//
278// Definitions not provided prior to 1.1.106
279//
280#if VK_HEADER_VERSION < 105
281
282#define VK_EXT_host_query_reset 1
283#define VK_EXT_HOST_QUERY_RESET_SPEC_VERSION 1
284#define VK_EXT_HOST_QUERY_RESET_EXTENSION_NAME "VK_EXT_host_query_reset"
285 typedef struct VkPhysicalDeviceHostQueryResetFeaturesEXT {
286 VkStructureType sType;
287 void* pNext;
288 VkBool32 hostQueryReset;
289} VkPhysicalDeviceHostQueryResetFeaturesEXT;
290
291typedef void (VKAPI_PTR *PFN_vkResetQueryPoolEXT)(VkDevice device, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount);
292
293
294
295
296#endif
297
299//
300// Definitions not provided prior to 1.2.131
301//
302#if VK_HEADER_VERSION < 131
303
304# define VK_API_VERSION_1_2 VK_MAKE_VERSION(1, 2, 0)
305
306# define VK_KHR_depth_stencil_resolve 1
307# define VK_KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION 1
308# define VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME "VK_KHR_depth_stencil_resolve"
309
310# define VK_KHR_buffer_device_address 1
311# define VK_KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION 1
312# define VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME "VK_KHR_buffer_device_address"
313
314# define VK_KHR_spirv_1_4 1
315# define VK_KHR_SPIRV_1_4_SPEC_VERSION 1
316# define VK_KHR_SPIRV_1_4_EXTENSION_NAME "VK_KHR_spirv_1_4"
317
318# define VK_ERROR_UNKNOWN VkResult(-13)
319
320# define VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT VkBufferUsageFlagBits(0x00020000)
321
322# define VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO VkStructureType(1000244001)
323# define VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2 VkStructureType(1000109000)
324# define VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2 VkStructureType(1000109001)
325# define VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2 VkStructureType(1000109002)
326# define VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2 VkStructureType(1000109003)
327# define VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2 VkStructureType(1000109004)
328# define VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE VkStructureType(1000199001)
329# define VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES VkStructureType(1000199000)
330# define VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES VkStructureType(1000257000)
331
332typedef enum VkResolveModeFlagBits
333{
334 VK_RESOLVE_MODE_NONE = 0,
335 VK_RESOLVE_MODE_SAMPLE_ZERO_BIT = 0x00000001,
336 VK_RESOLVE_MODE_AVERAGE_BIT = 0x00000002,
337 VK_RESOLVE_MODE_MIN_BIT = 0x00000004,
338 VK_RESOLVE_MODE_MAX_BIT = 0x00000008,
339 VK_RESOLVE_MODE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
340} VkResolveModeFlagBits;
341typedef VkFlags VkResolveModeFlags;
342
343 typedef struct VkAttachmentDescription2
344{
345 VkStructureType sType;
346 const void* pNext;
347 VkAttachmentDescriptionFlags flags;
348 VkFormat format;
349 VkSampleCountFlagBits samples;
350 VkAttachmentLoadOp loadOp;
351 VkAttachmentStoreOp storeOp;
352 VkAttachmentLoadOp stencilLoadOp;
353 VkAttachmentStoreOp stencilStoreOp;
354 VkImageLayout initialLayout;
355 VkImageLayout finalLayout;
356} VkAttachmentDescription2;
357
358 typedef struct VkAttachmentReference2
359{
360 VkStructureType sType;
361 const void* pNext;
362 uint32_t attachment;
363 VkImageLayout layout;
364 VkImageAspectFlags aspectMask;
365} VkAttachmentReference2;
366
367 typedef struct VkSubpassDescription2
368{
369 VkStructureType sType;
370 const void* pNext;
371 VkSubpassDescriptionFlags flags;
372 VkPipelineBindPoint pipelineBindPoint;
373 uint32_t viewMask;
374 uint32_t inputAttachmentCount;
375 const VkAttachmentReference2* pInputAttachments;
376 uint32_t colorAttachmentCount;
377 const VkAttachmentReference2* pColorAttachments;
378 const VkAttachmentReference2* pResolveAttachments;
379 const VkAttachmentReference2* pDepthStencilAttachment;
380 uint32_t preserveAttachmentCount;
381 const uint32_t* pPreserveAttachments;
382} VkSubpassDescription2;
383
384 typedef struct VkSubpassDependency2
385{
386 VkStructureType sType;
387 const void* pNext;
388 uint32_t srcSubpass;
389 uint32_t dstSubpass;
390 VkPipelineStageFlags srcStageMask;
391 VkPipelineStageFlags dstStageMask;
392 VkAccessFlags srcAccessMask;
393 VkAccessFlags dstAccessMask;
394 VkDependencyFlags dependencyFlags;
395 int32_t viewOffset;
396} VkSubpassDependency2;
397
398 typedef struct VkRenderPassCreateInfo2
399{
400 VkStructureType sType;
401 const void* pNext;
402 VkRenderPassCreateFlags flags;
403 uint32_t attachmentCount;
404 const VkAttachmentDescription2* pAttachments;
405 uint32_t subpassCount;
406 const VkSubpassDescription2* pSubpasses;
407 uint32_t dependencyCount;
408 const VkSubpassDependency2* pDependencies;
409 uint32_t correlatedViewMaskCount;
410 const uint32_t* pCorrelatedViewMasks;
411} VkRenderPassCreateInfo2;
412
413 typedef struct VkSubpassDescriptionDepthStencilResolve
414{
415 VkStructureType sType;
416 const void* pNext;
417 VkResolveModeFlagBits depthResolveMode;
418 VkResolveModeFlagBits stencilResolveMode;
419 const VkAttachmentReference2* pDepthStencilResolveAttachment;
420} VkSubpassDescriptionDepthStencilResolve;
421
422# if 1
423 typedef struct VkPhysicalDeviceDepthStencilResolveProperties
424{
425 VkStructureType sType;
426 void* pNext;
427 VkResolveModeFlags supportedDepthResolveModes;
428 VkResolveModeFlags supportedStencilResolveModes;
429 VkBool32 independentResolveNone;
430 VkBool32 independentResolve;
431} VkPhysicalDeviceDepthStencilResolveProperties;
432# endif
433
434 typedef struct VkBufferDeviceAddressInfo
435{
436 VkStructureType sType;
437 const void* pNext;
438 VkBuffer buffer;
439} VkBufferDeviceAddressInfo;
440
441#endif
442
444//
445// Definitions not provided prior to 1.2.135
446//
447#if VK_HEADER_VERSION < 135
448
449# define VK_SHADER_UNUSED_KHR (~0U)
450
451VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkAccelerationStructureKHR)
452
453typedef VkFlags VkBuildAccelerationStructureFlagsKHR;
454typedef VkFlags VkGeometryFlagsKHR;
455
456typedef enum VkGeometryTypeKHR
457{ // 135
458 VK_GEOMETRY_TYPE_TRIANGLES_KHR = 0,
459 VK_GEOMETRY_TYPE_AABBS_KHR = 1,
460 VK_GEOMETRY_TYPE_INSTANCES_KHR = 2,
461} VkGeometryTypeKHR;
462
463 typedef struct VkWriteDescriptorSetAccelerationStructureKHR
464{ // 135
465 VkStructureType sType;
466 const void* pNext;
467 uint32_t accelerationStructureCount;
468 const VkAccelerationStructureKHR* pAccelerationStructures;
469} VkWriteDescriptorSetAccelerationStructureKHR;
470
471typedef enum VkGeometryFlagBitsKHR
472{
473 VK_GEOMETRY_OPAQUE_BIT_KHR = 0x00000001,
474 VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR = 0x00000002,
475 VK_GEOMETRY_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
476} VkGeometryFlagBitsKHR;
477
478typedef enum VkGeometryInstanceFlagBitsKHR
479{
480 VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR = 0x00000001,
481 VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR = 0x00000002,
482 VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR = 0x00000004,
483 VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR = 0x00000008,
484 VK_GEOMETRY_INSTANCE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
485} VkGeometryInstanceFlagBitsKHR;
486
487typedef enum VkBuildAccelerationStructureFlagBitsKHR
488{
489 VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR = 0x00000001,
490 VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR = 0x00000002,
491 VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR = 0x00000004,
492 VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR = 0x00000008,
493 VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR = 0x00000010,
494 VK_BUILD_ACCELERATION_STRUCTURE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
495} VkBuildAccelerationStructureFlagBitsKHR;
496
497typedef enum VkAccelerationStructureTypeKHR
498{
499 VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR = 0,
500 VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR = 1,
501 VK_ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR = 2,
502 VK_ACCELERATION_STRUCTURE_TYPE_MAX_ENUM_KHR = 0x7FFFFFFF
503} VkAccelerationStructureTypeKHR;
504
505typedef enum VkRayTracingShaderGroupTypeKHR
506{
507 VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR = 0,
508 VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR = 1,
509 VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR = 2,
510 VK_RAY_TRACING_SHADER_GROUP_TYPE_MAX_ENUM_KHR = 0x7FFFFFFF
511} VkRayTracingShaderGroupTypeKHR;
512
513#define VK_KHR_shader_non_semantic_info 1
514#define VK_KHR_SHADER_NON_SEMANTIC_INFO_SPEC_VERSION 1
515#define VK_KHR_SHADER_NON_SEMANTIC_INFO_EXTENSION_NAME "VK_KHR_shader_non_semantic_info"
516
517#endif
518
520//
521// Definitions not provided prior to 1.2.162
522//
523#if VK_HEADER_VERSION < 162
524
525# define VK_KHR_ray_tracing_pipeline 1
526# define VK_KHR_RAY_TRACING_PIPELINE_SPEC_VERSION 1
527# define VK_KHR_RAY_TRACING_PIPELINE_EXTENSION_NAME "VK_KHR_ray_tracing_pipeline"
528
529# define VK_KHR_acceleration_structure 1
530# define VK_KHR_ACCELERATION_STRUCTURE_SPEC_VERSION 11
531# define VK_KHR_ACCELERATION_STRUCTURE_EXTENSION_NAME "VK_KHR_acceleration_structure"
532# define VK_KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME "VK_KHR_deferred_host_operations"
533
534typedef VkFlags VkAccelerationStructureCreateFlagsKHR;
535
536# define VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR VkDescriptorType(1000150000)
537# define VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR VkStructureType(1000347001)
538# define VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR VkStructureType(1000150004)
539# define VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR VkStructureType(1000150007)
540# define VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR VkStructureType(1000150006)
541# define VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR VkStructureType(1000150015)
542# define VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR VkStructureType(1000150016)
543# define VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR VkStructureType(1000150002)
544# define VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_SIZES_INFO_KHR VkStructureType(1000150020)
545# define VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR VkStructureType(1000150000)
546# define VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR VkStructureType(1000150017)
547# define VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR VkStructureType(1000150005)
548# define VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR VkStructureType(1000150013)
549# define VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR VkStructureType(1000347000)
550
551# define VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR VkBufferUsageFlagBits(0x00100000)
552# define VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR VkBufferUsageFlagBits(0x00000400)
553# define VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR VkBufferUsageFlagBits(0x00080000)
554
555# define VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR VkPipelineBindPoint(1000165000)
556# define VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR VkPipelineStageFlagBits(0x02000000)
557
558# define VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR VkAccessFlagBits(0x00200000)
559# define VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR VkAccessFlagBits(0x00400000)
560
561# define VK_SHADER_STAGE_RAYGEN_BIT_KHR VkShaderStageFlagBits(0x00000100)
562# define VK_SHADER_STAGE_ANY_HIT_BIT_KHR VkShaderStageFlagBits(0x00000200)
563# define VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR VkShaderStageFlagBits(0x00000400)
564# define VK_SHADER_STAGE_MISS_BIT_KHR VkShaderStageFlagBits(0x00000800)
565# define VK_SHADER_STAGE_INTERSECTION_BIT_KHR VkShaderStageFlagBits(0x00001000)
566# define VK_SHADER_STAGE_CALLABLE_BIT_KHR VkShaderStageFlagBits(0x00002000)
567
568VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDeferredOperationKHR)
569
570typedef enum VkBuildAccelerationStructureModeKHR
571{
572 VK_BUILD_ACCELERATION_STRUCTURE_MODE_BUILD_KHR = 0,
573 VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR = 1,
574 VK_BUILD_ACCELERATION_STRUCTURE_MODE_MAX_ENUM_KHR = 0x7FFFFFFF
575} VkBuildAccelerationStructureModeKHR;
576
577typedef enum VkAccelerationStructureBuildTypeKHR
578{
579 VK_ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHR = 0,
580 VK_ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR = 1,
581 VK_ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_OR_DEVICE_KHR = 2,
582 VK_ACCELERATION_STRUCTURE_BUILD_TYPE_MAX_ENUM_KHR = 0x7FFFFFFF
583} VkAccelerationStructureBuildTypeKHR;
584
585 typedef struct VkPhysicalDeviceRayTracingPipelineFeaturesKHR
586{
587 VkStructureType sType;
588 void* pNext;
589 VkBool32 rayTracingPipeline;
590 VkBool32 rayTracingPipelineShaderGroupHandleCaptureReplay;
591 VkBool32 rayTracingPipelineShaderGroupHandleCaptureReplayMixed;
592 VkBool32 rayTracingPipelineTraceRaysIndirect;
593 VkBool32 rayTraversalPrimitiveCulling;
594} VkPhysicalDeviceRayTracingPipelineFeaturesKHR;
595
596 typedef struct VkPhysicalDeviceAccelerationStructureFeaturesKHR
597{
598 VkStructureType sType;
599 void* pNext;
600 VkBool32 accelerationStructure;
601 VkBool32 accelerationStructureCaptureReplay;
602 VkBool32 accelerationStructureIndirectBuild;
603 VkBool32 accelerationStructureHostCommands;
604 VkBool32 descriptorBindingAccelerationStructureUpdateAfterBind;
605} VkPhysicalDeviceAccelerationStructureFeaturesKHR;
606
607 typedef struct VkPhysicalDeviceRayTracingPipelinePropertiesKHR
608{
609 VkStructureType sType;
610 void* pNext;
611 uint32_t shaderGroupHandleSize;
612 uint32_t maxRayRecursionDepth;
613 uint32_t maxShaderGroupStride;
614 uint32_t shaderGroupBaseAlignment;
615 uint32_t shaderGroupHandleCaptureReplaySize;
616 uint32_t maxRayDispatchInvocationCount;
617 uint32_t shaderGroupHandleAlignment;
618 uint32_t maxRayHitAttributeSize;
619} VkPhysicalDeviceRayTracingPipelinePropertiesKHR;
620
621 typedef union VkDeviceOrHostAddressKHR
622{
623 VkDeviceAddress deviceAddress;
624 void* hostAddress;
625} VkDeviceOrHostAddressKHR;
626
627 typedef union VkDeviceOrHostAddressConstKHR
628{
629 VkDeviceAddress deviceAddress;
630 const void* hostAddress;
631} VkDeviceOrHostAddressConstKHR;
632
633 typedef struct VkAccelerationStructureBuildRangeInfoKHR
634{
635 uint32_t primitiveCount;
636 uint32_t primitiveOffset;
637 uint32_t firstVertex;
638 uint32_t transformOffset;
639} VkAccelerationStructureBuildRangeInfoKHR;
640
641 typedef struct VkAccelerationStructureGeometryTrianglesDataKHR
642{
643 VkStructureType sType;
644 const void* pNext;
645 VkFormat vertexFormat;
646 VkDeviceOrHostAddressConstKHR vertexData;
647 VkDeviceSize vertexStride;
648 uint32_t maxVertex;
649 VkIndexType indexType;
650 VkDeviceOrHostAddressConstKHR indexData;
651 VkDeviceOrHostAddressConstKHR transformData;
652} VkAccelerationStructureGeometryTrianglesDataKHR;
653
654 typedef struct VkAccelerationStructureGeometryAabbsDataKHR
655{
656 VkStructureType sType;
657 const void* pNext;
658 VkDeviceOrHostAddressConstKHR data;
659 VkDeviceSize stride;
660} VkAccelerationStructureGeometryAabbsDataKHR;
661
662 typedef struct VkAccelerationStructureGeometryInstancesDataKHR
663{
664 VkStructureType sType;
665 const void* pNext;
666 VkBool32 arrayOfPointers;
667 VkDeviceOrHostAddressConstKHR data;
668} VkAccelerationStructureGeometryInstancesDataKHR;
669
670 typedef union VkAccelerationStructureGeometryDataKHR
671{
672 VkAccelerationStructureGeometryTrianglesDataKHR triangles;
673 VkAccelerationStructureGeometryAabbsDataKHR aabbs;
674 VkAccelerationStructureGeometryInstancesDataKHR instances;
675} VkAccelerationStructureGeometryDataKHR;
676
677 typedef struct VkAccelerationStructureGeometryKHR
678{
679 VkStructureType sType;
680 const void* pNext;
681 VkGeometryTypeKHR geometryType;
682 VkAccelerationStructureGeometryDataKHR geometry;
683 VkGeometryFlagsKHR flags;
684} VkAccelerationStructureGeometryKHR;
685
686 typedef struct VkAccelerationStructureCreateInfoKHR
687{
688 VkStructureType sType;
689 const void* pNext;
690 VkAccelerationStructureCreateFlagsKHR createFlags;
691 VkBuffer buffer;
692 VkDeviceSize offset;
693 VkDeviceSize size;
694 VkAccelerationStructureTypeKHR type;
695 VkDeviceAddress deviceAddress;
696} VkAccelerationStructureCreateInfoKHR;
697
698 typedef struct VkAccelerationStructureBuildGeometryInfoKHR
699{
700 VkStructureType sType;
701 const void* pNext;
702 VkAccelerationStructureTypeKHR type;
703 VkBuildAccelerationStructureFlagsKHR flags;
704 VkBuildAccelerationStructureModeKHR mode;
705 VkAccelerationStructureKHR srcAccelerationStructure;
706 VkAccelerationStructureKHR dstAccelerationStructure;
707 uint32_t geometryCount;
708 const VkAccelerationStructureGeometryKHR* pGeometries;
709 const VkAccelerationStructureGeometryKHR* const* ppGeometries;
710 VkDeviceOrHostAddressKHR scratchData;
711} VkAccelerationStructureBuildGeometryInfoKHR;
712
713 typedef struct VkStridedDeviceAddressRegionKHR
714{
715 VkDeviceAddress deviceAddress;
716 VkDeviceSize stride;
717 VkDeviceSize size;
718} VkStridedDeviceAddressRegionKHR;
719
720 typedef struct VkPipelineLibraryCreateInfoKHR
721{
722 VkStructureType sType;
723 const void* pNext;
724 uint32_t libraryCount;
725 const VkPipeline* pLibraries;
726} VkPipelineLibraryCreateInfoKHR;
727
728 typedef struct VkRayTracingPipelineInterfaceCreateInfoKHR
729{
730 VkStructureType sType;
731 const void* pNext;
732 uint32_t maxPipelineRayPayloadSize;
733 uint32_t maxPipelineRayHitAttributeSize;
734} VkRayTracingPipelineInterfaceCreateInfoKHR;
735
736 typedef struct VkAccelerationStructureDeviceAddressInfoKHR
737{
738 VkStructureType sType;
739 const void* pNext;
740 VkAccelerationStructureKHR accelerationStructure;
741} VkAccelerationStructureDeviceAddressInfoKHR;
742
743 typedef struct VkAccelerationStructureBuildSizesInfoKHR
744{
745 VkStructureType sType;
746 const void* pNext;
747 VkDeviceSize accelerationStructureSize;
748 VkDeviceSize updateScratchSize;
749 VkDeviceSize buildScratchSize;
750} VkAccelerationStructureBuildSizesInfoKHR;
751
752 typedef struct VkRayTracingShaderGroupCreateInfoKHR
753{
754 VkStructureType sType;
755 const void* pNext;
756 VkRayTracingShaderGroupTypeKHR type;
757 uint32_t generalShader;
758 uint32_t closestHitShader;
759 uint32_t anyHitShader;
760 uint32_t intersectionShader;
761 const void* pShaderGroupCaptureReplayHandle;
762} VkRayTracingShaderGroupCreateInfoKHR;
763
764 typedef struct VkRayTracingPipelineCreateInfoKHR
765{
766 VkStructureType sType;
767 const void* pNext;
768 VkPipelineCreateFlags flags;
769 uint32_t stageCount;
770 const VkPipelineShaderStageCreateInfo* pStages;
771 uint32_t groupCount;
772 const VkRayTracingShaderGroupCreateInfoKHR* pGroups;
773 uint32_t maxPipelineRayRecursionDepth;
774 const VkPipelineLibraryCreateInfoKHR* pLibraryInfo;
775 const VkRayTracingPipelineInterfaceCreateInfoKHR* pLibraryInterface;
776 const VkPipelineDynamicStateCreateInfo* pDynamicState;
777 VkPipelineLayout layout;
778 VkPipeline basePipelineHandle;
779 int32_t basePipelineIndex;
780} VkRayTracingPipelineCreateInfoKHR;
781
782typedef VkResult(VKAPI_PTR* PFN_vkCreateAccelerationStructureKHR)(VkDevice device, const VkAccelerationStructureCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkAccelerationStructureKHR* pAccelerationStructure);
783typedef void(VKAPI_PTR* PFN_vkDestroyAccelerationStructureKHR)(VkDevice device, VkAccelerationStructureKHR accelerationStructure, const VkAllocationCallbacks* pAllocator);
784
785typedef void(VKAPI_PTR* PFN_vkCmdBuildAccelerationStructuresKHR)(VkCommandBuffer commandBuffer, uint32_t infoCount, const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos);
786
787typedef VkDeviceAddress(VKAPI_PTR* PFN_vkGetAccelerationStructureDeviceAddressKHR)(VkDevice device, const VkAccelerationStructureDeviceAddressInfoKHR* pInfo);
788
789typedef void(VKAPI_PTR* PFN_vkGetAccelerationStructureBuildSizesKHR)(VkDevice device, VkAccelerationStructureBuildTypeKHR buildType, const VkAccelerationStructureBuildGeometryInfoKHR* pBuildInfo, const uint32_t* pMaxPrimitiveCounts, VkAccelerationStructureBuildSizesInfoKHR* pSizeInfo);
790
791typedef VkResult(VKAPI_PTR* PFN_vkCreateRayTracingPipelinesKHR)(VkDevice device, VkDeferredOperationKHR deferredOperation, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkRayTracingPipelineCreateInfoKHR* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines);
792
793typedef VkResult(VKAPI_PTR* PFN_vkGetRayTracingShaderGroupHandlesKHR)(VkDevice device, VkPipeline pipeline, uint32_t firstGroup, uint32_t groupCount, size_t dataSize, void* pData);
794
795typedef void(VKAPI_PTR* PFN_vkCmdTraceRaysKHR)(VkCommandBuffer commandBuffer, const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable, uint32_t width, uint32_t height, uint32_t depth);
796
797#endif
798
799//
800// Provide *_Compatibility function definitions to workaround different function definitions across different vulkan_core.h versions.
801//
802typedef VkResult(VKAPI_PTR* PFN_vkCreateRenderPass2KHR_Compatibility)(VkDevice device, const VkRenderPassCreateInfo2* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass);
803typedef VkDeviceAddress(VKAPI_PTR* PFN_vkGetBufferDeviceAddressKHR_Compatibility)(VkDevice device, const VkBufferDeviceAddressInfo* pInfo);
804
805//
806// Definitions not provided prior to 1.3.211
807//
808#if VK_HEADER_VERSION < 204
809#define VK_API_VERSION_1_3 VK_MAKE_VERSION(1, 3, 0)
810#endif
811
812#if VK_HEADER_VERSION < 211
813typedef enum VkInstanceCreateFlagBits {
814 VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR = 0x00000001,
815 VK_INSTANCE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
816} VkInstanceCreateFlagBits;
817typedef VkFlags VkInstanceCreateFlags;
818
819#define VK_KHR_portability_enumeration 1
820#define VK_KHR_PORTABILITY_ENUMERATION_SPEC_VERSION 1
821#define VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME "VK_KHR_portability_enumeration"
822#endif
823
824//
825// Provide VK_KHR_portability_subset from vulkan_beta.h
826//
827#ifndef VK_KHR_portability_subset
828#define VK_KHR_portability_subset 1
829#define VK_KHR_PORTABILITY_SUBSET_SPEC_VERSION 1
830#define VK_KHR_PORTABILITY_SUBSET_EXTENSION_NAME "VK_KHR_portability_subset"
831 typedef struct VkPhysicalDevicePortabilitySubsetFeaturesKHR {
832 VkStructureType sType;
833 void* pNext;
834 VkBool32 constantAlphaColorBlendFactors;
835 VkBool32 events;
836 VkBool32 imageViewFormatReinterpretation;
837 VkBool32 imageViewFormatSwizzle;
838 VkBool32 imageView2DOn3DImage;
839 VkBool32 multisampleArrayImage;
840 VkBool32 mutableComparisonSamplers;
841 VkBool32 pointPolygons;
842 VkBool32 samplerMipLodBias;
843 VkBool32 separateStencilMaskRef;
844 VkBool32 shaderSampleRateInterpolationFunctions;
845 VkBool32 tessellationIsolines;
846 VkBool32 tessellationPointMode;
847 VkBool32 triangleFans;
848 VkBool32 vertexAttributeAccessBeyondStride;
849} VkPhysicalDevicePortabilitySubsetFeaturesKHR;
850
851 typedef struct VkPhysicalDevicePortabilitySubsetPropertiesKHR {
852 VkStructureType sType;
853 void* pNext;
854 uint32_t minVertexInputBindingStrideAlignment;
855} VkPhysicalDevicePortabilitySubsetPropertiesKHR;
856#endif
857
858#ifndef VK_EXT_debug_utils
859#define VK_EXT_debug_utils 1
860VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDebugUtilsMessengerEXT)
861#define VK_EXT_DEBUG_UTILS_SPEC_VERSION 2
862#define VK_EXT_DEBUG_UTILS_EXTENSION_NAME "VK_EXT_debug_utils"
863typedef VkFlags VkDebugUtilsMessengerCallbackDataFlagsEXT;
864
865typedef enum VkDebugUtilsMessageSeverityFlagBitsEXT {
866 VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT = 0x00000001,
867 VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT = 0x00000010,
868 VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT = 0x00000100,
869 VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT = 0x00001000,
870 VK_DEBUG_UTILS_MESSAGE_SEVERITY_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
871} VkDebugUtilsMessageSeverityFlagBitsEXT;
872
873typedef enum VkDebugUtilsMessageTypeFlagBitsEXT {
874 VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT = 0x00000001,
875 VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT = 0x00000002,
876 VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT = 0x00000004,
877 VK_DEBUG_UTILS_MESSAGE_TYPE_DEVICE_ADDRESS_BINDING_BIT_EXT = 0x00000008,
878 VK_DEBUG_UTILS_MESSAGE_TYPE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
879} VkDebugUtilsMessageTypeFlagBitsEXT;
880typedef VkFlags VkDebugUtilsMessageTypeFlagsEXT;
881typedef VkFlags VkDebugUtilsMessageSeverityFlagsEXT;
882typedef VkFlags VkDebugUtilsMessengerCreateFlagsEXT;
883 typedef struct VkDebugUtilsLabelEXT {
884 VkStructureType sType;
885 const void* pNext;
886 const char* pLabelName;
887 float color[4];
888} VkDebugUtilsLabelEXT;
889
890 typedef struct VkDebugUtilsObjectNameInfoEXT {
891 VkStructureType sType;
892 const void* pNext;
893 VkObjectType objectType;
894 uint64_t objectHandle;
895 const char* pObjectName;
896} VkDebugUtilsObjectNameInfoEXT;
897
898 typedef struct VkDebugUtilsMessengerCallbackDataEXT {
899 VkStructureType sType;
900 const void* pNext;
901 VkDebugUtilsMessengerCallbackDataFlagsEXT flags;
902 const char* pMessageIdName;
903 int32_t messageIdNumber;
904 const char* pMessage;
905 uint32_t queueLabelCount;
906 const VkDebugUtilsLabelEXT* pQueueLabels;
907 uint32_t cmdBufLabelCount;
908 const VkDebugUtilsLabelEXT* pCmdBufLabels;
909 uint32_t objectCount;
910 const VkDebugUtilsObjectNameInfoEXT* pObjects;
911} VkDebugUtilsMessengerCallbackDataEXT;
912
913typedef VkBool32 (VKAPI_PTR *PFN_vkDebugUtilsMessengerCallbackEXT)(
914 VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
915 VkDebugUtilsMessageTypeFlagsEXT messageTypes,
916 const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData,
917 void* pUserData);
918
919 typedef struct VkDebugUtilsMessengerCreateInfoEXT {
920 VkStructureType sType;
921 const void* pNext;
922 VkDebugUtilsMessengerCreateFlagsEXT flags;
923 VkDebugUtilsMessageSeverityFlagsEXT messageSeverity;
924 VkDebugUtilsMessageTypeFlagsEXT messageType;
925 PFN_vkDebugUtilsMessengerCallbackEXT pfnUserCallback;
926 void* pUserData;
927} VkDebugUtilsMessengerCreateInfoEXT;
928
929 typedef struct VkDebugUtilsObjectTagInfoEXT {
930 VkStructureType sType;
931 const void* pNext;
932 VkObjectType objectType;
933 uint64_t objectHandle;
934 uint64_t tagName;
935 size_t tagSize;
936 const void* pTag;
937} VkDebugUtilsObjectTagInfoEXT;
938#endif
939
941//
942// Definitions not provided prior to 1.1.117
943//
944#if VK_HEADER_VERSION < 117
945
946#define VK_EXT_line_rasterization 1
947#define VK_EXT_LINE_RASTERIZATION_SPEC_VERSION 1
948#define VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME "VK_EXT_line_rasterization"
949
950#define VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT VkStructureType(1000259000)
951#define VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT VkStructureType(1000259001)
952
953typedef enum VkLineRasterizationModeEXT {
954 VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT = 0,
955 VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT = 1,
956 VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT = 2,
957 VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT = 3,
958 VK_LINE_RASTERIZATION_MODE_BEGIN_RANGE_EXT = VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT,
959 VK_LINE_RASTERIZATION_MODE_END_RANGE_EXT = VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT,
960 VK_LINE_RASTERIZATION_MODE_RANGE_SIZE_EXT = (VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT - VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT + 1),
961 VK_LINE_RASTERIZATION_MODE_MAX_ENUM_EXT = 0x7FFFFFFF
962} VkLineRasterizationModeEXT;
963 typedef struct VkPhysicalDeviceLineRasterizationFeaturesEXT {
964 VkStructureType sType;
965 void* pNext;
966 VkBool32 rectangularLines;
967 VkBool32 bresenhamLines;
968 VkBool32 smoothLines;
969 VkBool32 stippledRectangularLines;
970 VkBool32 stippledBresenhamLines;
971 VkBool32 stippledSmoothLines;
972} VkPhysicalDeviceLineRasterizationFeaturesEXT;
973
974 typedef struct VkPhysicalDeviceLineRasterizationPropertiesEXT {
975 VkStructureType sType;
976 void* pNext;
977 uint32_t lineSubPixelPrecisionBits;
978} VkPhysicalDeviceLineRasterizationPropertiesEXT;
979
980 typedef struct VkPipelineRasterizationLineStateCreateInfoEXT {
981 VkStructureType sType;
982 const void* pNext;
983 VkLineRasterizationModeEXT lineRasterizationMode;
984 VkBool32 stippledLineEnable;
985 uint32_t lineStippleFactor;
986 uint16_t lineStipplePattern;
987} VkPipelineRasterizationLineStateCreateInfoEXT;
988
989typedef void (VKAPI_PTR *PFN_vkCmdSetLineStippleEXT)(VkCommandBuffer commandBuffer, uint32_t lineStippleFactor, uint16_t lineStipplePattern);
990
991#ifndef VK_NO_PROTOTYPES
992VKAPI_ATTR void VKAPI_CALL vkCmdSetLineStippleEXT(
993 VkCommandBuffer commandBuffer,
994 uint32_t lineStippleFactor,
995 uint16_t lineStipplePattern);
996#endif
997
998
999#endif
1000
1002//
1003// Definitions not provided prior to 1.1.92
1004//
1005#if VK_HEADER_VERSION < 92
1006
1007#define VK_EXT_calibrated_timestamps 1
1008#define VK_EXT_CALIBRATED_TIMESTAMPS_SPEC_VERSION 1
1009#define VK_EXT_CALIBRATED_TIMESTAMPS_EXTENSION_NAME "VK_EXT_calibrated_timestamps"
1010
1011#define VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT VkStructureType(1000184000)
1012
1013typedef enum VkTimeDomainEXT {
1014 VK_TIME_DOMAIN_DEVICE_EXT = 0,
1015 VK_TIME_DOMAIN_CLOCK_MONOTONIC_EXT = 1,
1016 VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT = 2,
1017 VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT = 3,
1018 VK_TIME_DOMAIN_BEGIN_RANGE_EXT = VK_TIME_DOMAIN_DEVICE_EXT,
1019 VK_TIME_DOMAIN_END_RANGE_EXT = VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT,
1020 VK_TIME_DOMAIN_RANGE_SIZE_EXT = (VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT - VK_TIME_DOMAIN_DEVICE_EXT + 1),
1021 VK_TIME_DOMAIN_MAX_ENUM_EXT = 0x7FFFFFFF
1022} VkTimeDomainEXT;
1023
1024 typedef struct VkCalibratedTimestampInfoEXT {
1025 VkStructureType sType;
1026 const void* pNext;
1027 VkTimeDomainEXT timeDomain;
1028} VkCalibratedTimestampInfoEXT;
1029
1030
1031typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT)(VkPhysicalDevice physicalDevice, uint32_t* pTimeDomainCount, VkTimeDomainEXT* pTimeDomains);
1032typedef VkResult (VKAPI_PTR *PFN_vkGetCalibratedTimestampsEXT)(VkDevice device, uint32_t timestampCount, const VkCalibratedTimestampInfoEXT* pTimestampInfos, uint64_t* pTimestamps, uint64_t* pMaxDeviation);
1033
1034#ifndef VK_NO_PROTOTYPES
1035VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(
1036 VkPhysicalDevice physicalDevice,
1037 uint32_t* pTimeDomainCount,
1038 VkTimeDomainEXT* pTimeDomains);
1039
1040VKAPI_ATTR VkResult VKAPI_CALL vkGetCalibratedTimestampsEXT(
1041 VkDevice device,
1042 uint32_t timestampCount,
1043 const VkCalibratedTimestampInfoEXT* pTimestampInfos,
1044 uint64_t* pTimestamps,
1045 uint64_t* pMaxDeviation);
1046#endif
1047
1048#endif
1049
1050
1051#if VK_HEADER_VERSION < 148
1052
1053// VK_EXT_extended_dynamic_state is a preprocessor guard. Do not pass it to API calls.
1054#define VK_EXT_extended_dynamic_state 1
1055#define VK_EXT_EXTENDED_DYNAMIC_STATE_SPEC_VERSION 1
1056#define VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME "VK_EXT_extended_dynamic_state"
1057 typedef struct VkPhysicalDeviceExtendedDynamicStateFeaturesEXT {
1058 VkStructureType sType;
1059 void* pNext;
1060 VkBool32 extendedDynamicState;
1061} VkPhysicalDeviceExtendedDynamicStateFeaturesEXT;
1062
1063typedef void (VKAPI_PTR *PFN_vkCmdSetCullModeEXT)(VkCommandBuffer commandBuffer, VkCullModeFlags cullMode);
1064typedef void (VKAPI_PTR *PFN_vkCmdSetFrontFaceEXT)(VkCommandBuffer commandBuffer, VkFrontFace frontFace);
1065typedef void (VKAPI_PTR *PFN_vkCmdSetPrimitiveTopologyEXT)(VkCommandBuffer commandBuffer, VkPrimitiveTopology primitiveTopology);
1066typedef void (VKAPI_PTR *PFN_vkCmdSetViewportWithCountEXT)(VkCommandBuffer commandBuffer, uint32_t viewportCount, const VkViewport* pViewports);
1067typedef void (VKAPI_PTR *PFN_vkCmdSetScissorWithCountEXT)(VkCommandBuffer commandBuffer, uint32_t scissorCount, const VkRect2D* pScissors);
1068typedef void (VKAPI_PTR *PFN_vkCmdBindVertexBuffers2EXT)(VkCommandBuffer commandBuffer, uint32_t firstBinding, uint32_t bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets, const VkDeviceSize* pSizes, const VkDeviceSize* pStrides);
1069typedef void (VKAPI_PTR *PFN_vkCmdSetDepthTestEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 depthTestEnable);
1070typedef void (VKAPI_PTR *PFN_vkCmdSetDepthWriteEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 depthWriteEnable);
1071typedef void (VKAPI_PTR *PFN_vkCmdSetDepthCompareOpEXT)(VkCommandBuffer commandBuffer, VkCompareOp depthCompareOp);
1072typedef void (VKAPI_PTR *PFN_vkCmdSetDepthBoundsTestEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 depthBoundsTestEnable);
1073typedef void (VKAPI_PTR *PFN_vkCmdSetStencilTestEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 stencilTestEnable);
1074typedef void (VKAPI_PTR *PFN_vkCmdSetStencilOpEXT)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, VkStencilOp failOp, VkStencilOp passOp, VkStencilOp depthFailOp, VkCompareOp compareOp);
1075
1076#ifndef VK_NO_PROTOTYPES
1077VKAPI_ATTR void VKAPI_CALL vkCmdSetCullModeEXT(
1078 VkCommandBuffer commandBuffer,
1079 VkCullModeFlags cullMode);
1080
1081VKAPI_ATTR void VKAPI_CALL vkCmdSetFrontFaceEXT(
1082 VkCommandBuffer commandBuffer,
1083 VkFrontFace frontFace);
1084
1085VKAPI_ATTR void VKAPI_CALL vkCmdSetPrimitiveTopologyEXT(
1086 VkCommandBuffer commandBuffer,
1087 VkPrimitiveTopology primitiveTopology);
1088
1089VKAPI_ATTR void VKAPI_CALL vkCmdSetViewportWithCountEXT(
1090 VkCommandBuffer commandBuffer,
1091 uint32_t viewportCount,
1092 const VkViewport* pViewports);
1093
1094VKAPI_ATTR void VKAPI_CALL vkCmdSetScissorWithCountEXT(
1095 VkCommandBuffer commandBuffer,
1096 uint32_t scissorCount,
1097 const VkRect2D* pScissors);
1098
1099VKAPI_ATTR void VKAPI_CALL vkCmdBindVertexBuffers2EXT(
1100 VkCommandBuffer commandBuffer,
1101 uint32_t firstBinding,
1102 uint32_t bindingCount,
1103 const VkBuffer* pBuffers,
1104 const VkDeviceSize* pOffsets,
1105 const VkDeviceSize* pSizes,
1106 const VkDeviceSize* pStrides);
1107
1108VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthTestEnableEXT(
1109 VkCommandBuffer commandBuffer,
1110 VkBool32 depthTestEnable);
1111
1112VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthWriteEnableEXT(
1113 VkCommandBuffer commandBuffer,
1114 VkBool32 depthWriteEnable);
1115
1116VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthCompareOpEXT(
1117 VkCommandBuffer commandBuffer,
1118 VkCompareOp depthCompareOp);
1119
1120VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthBoundsTestEnableEXT(
1121 VkCommandBuffer commandBuffer,
1122 VkBool32 depthBoundsTestEnable);
1123
1124VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilTestEnableEXT(
1125 VkCommandBuffer commandBuffer,
1126 VkBool32 stencilTestEnable);
1127
1128VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilOpEXT(
1129 VkCommandBuffer commandBuffer,
1130 VkStencilFaceFlags faceMask,
1131 VkStencilOp failOp,
1132 VkStencilOp passOp,
1133 VkStencilOp depthFailOp,
1134 VkCompareOp compareOp);
1135#endif
1136
1137#endif
VkAccelerationStructureBuildGeometryInfoKHR
Definition vulkan.h:699
VkAccelerationStructureBuildRangeInfoKHR
Definition vulkan.h:634
VkAccelerationStructureBuildSizesInfoKHR
Definition vulkan.h:744
VkAccelerationStructureCreateInfoKHR
Definition vulkan.h:687
VkAccelerationStructureDeviceAddressInfoKHR
Definition vulkan.h:737
VkAccelerationStructureGeometryAabbsDataKHR
Definition vulkan.h:655
VkAccelerationStructureGeometryInstancesDataKHR
Definition vulkan.h:663
VkAccelerationStructureGeometryKHR
Definition vulkan.h:678
VkAccelerationStructureGeometryTrianglesDataKHR
Definition vulkan.h:642
VkAttachmentDescription2
Definition vulkan.h:344
VkAttachmentDescription2KHR
Definition vulkan.h:48
VkAttachmentReference2
Definition vulkan.h:359
VkAttachmentReference2KHR
Definition vulkan.h:63
VkBufferDeviceAddressInfo
Definition vulkan.h:435
VkCalibratedTimestampInfoEXT
Definition vulkan.h:1024
VkDebugUtilsLabelEXT
Definition vulkan.h:883
VkDebugUtilsMessengerCallbackDataEXT
Definition vulkan.h:898
VkDebugUtilsMessengerCreateInfoEXT
Definition vulkan.h:919
VkDebugUtilsObjectNameInfoEXT
Definition vulkan.h:890
VkDebugUtilsObjectTagInfoEXT
Definition vulkan.h:929
VkDrawMeshTasksIndirectCommandEXT
Definition vulkan.h:201
VkPhysicalDeviceAccelerationStructureFeaturesKHR
Definition vulkan.h:597
VkPhysicalDeviceBufferDeviceAddressFeaturesEXT
Definition vulkan.h:267
VkPhysicalDeviceDepthStencilResolveProperties
Definition vulkan.h:424
VkPhysicalDeviceExtendedDynamicStateFeaturesEXT
Definition vulkan.h:1057
VkPhysicalDeviceFloatControlsPropertiesKHR
Definition vulkan.h:233
VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR
Definition vulkan.h:134
VkPhysicalDeviceHostQueryResetFeaturesEXT
Definition vulkan.h:285
VkPhysicalDeviceLineRasterizationFeaturesEXT
Definition vulkan.h:963
VkPhysicalDeviceLineRasterizationPropertiesEXT
Definition vulkan.h:974
VkPhysicalDeviceMeshShaderFeaturesEXT
Definition vulkan.h:158
VkPhysicalDeviceMeshShaderPropertiesEXT
Definition vulkan.h:168
VkPhysicalDevicePortabilitySubsetFeaturesKHR
Definition vulkan.h:831
VkPhysicalDevicePortabilitySubsetPropertiesKHR
Definition vulkan.h:851
VkPhysicalDeviceRayTracingPipelineFeaturesKHR
Definition vulkan.h:586
VkPhysicalDeviceRayTracingPipelinePropertiesKHR
Definition vulkan.h:608
VkPipelineLibraryCreateInfoKHR
Definition vulkan.h:721
VkPipelineRasterizationLineStateCreateInfoEXT
Definition vulkan.h:980
VkRayTracingPipelineCreateInfoKHR
Definition vulkan.h:765
VkRayTracingPipelineInterfaceCreateInfoKHR
Definition vulkan.h:729
VkRayTracingShaderGroupCreateInfoKHR
Definition vulkan.h:753
VkRenderPassCreateInfo2
Definition vulkan.h:399
VkRenderPassCreateInfo2KHR
Definition vulkan.h:103
VkStridedDeviceAddressRegionKHR
Definition vulkan.h:714
VkSubpassDependency2
Definition vulkan.h:385
VkSubpassDependency2KHR
Definition vulkan.h:89
VkSubpassDescription2
Definition vulkan.h:368
VkSubpassDescription2KHR
Definition vulkan.h:72
VkSubpassDescriptionDepthStencilResolve
Definition vulkan.h:414
VkWriteDescriptorSetAccelerationStructureKHR
Definition vulkan.h:464
VkAccelerationStructureGeometryDataKHR
Definition vulkan.h:671
VkDeviceOrHostAddressConstKHR
Definition vulkan.h:628
VkDeviceOrHostAddressKHR
Definition vulkan.h:622