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