1#ifndef VULKAN_BETA_H_
2#define VULKAN_BETA_H_ 1
3
4/*
5** Copyright 2015-2024 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
17extern "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"
26typedef 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
46typedef 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 1
57#define VK_AMDX_SHADER_ENQUEUE_EXTENSION_NAME "VK_AMDX_shader_enqueue"
58#define VK_SHADER_INDEX_UNUSED_AMDX       (~0U)
59typedef struct VkPhysicalDeviceShaderEnqueueFeaturesAMDX {
60    VkStructureType    sType;
61    void*              pNext;
62    VkBool32           shaderEnqueue;
63} VkPhysicalDeviceShaderEnqueueFeaturesAMDX;
64
65typedef struct VkPhysicalDeviceShaderEnqueuePropertiesAMDX {
66    VkStructureType    sType;
67    void*              pNext;
68    uint32_t           maxExecutionGraphDepth;
69    uint32_t           maxExecutionGraphShaderOutputNodes;
70    uint32_t           maxExecutionGraphShaderPayloadSize;
71    uint32_t           maxExecutionGraphShaderPayloadCount;
72    uint32_t           executionGraphDispatchAddressAlignment;
73} VkPhysicalDeviceShaderEnqueuePropertiesAMDX;
74
75typedef struct VkExecutionGraphPipelineScratchSizeAMDX {
76    VkStructureType    sType;
77    void*              pNext;
78    VkDeviceSize       size;
79} VkExecutionGraphPipelineScratchSizeAMDX;
80
81typedef struct VkExecutionGraphPipelineCreateInfoAMDX {
82    VkStructureType                           sType;
83    const void*                               pNext;
84    VkPipelineCreateFlags                     flags;
85    uint32_t                                  stageCount;
86    const VkPipelineShaderStageCreateInfo*    pStages;
87    const VkPipelineLibraryCreateInfoKHR*     pLibraryInfo;
88    VkPipelineLayout                          layout;
89    VkPipeline                                basePipelineHandle;
90    int32_t                                   basePipelineIndex;
91} VkExecutionGraphPipelineCreateInfoAMDX;
92
93typedef union VkDeviceOrHostAddressConstAMDX {
94    VkDeviceAddress    deviceAddress;
95    const void*        hostAddress;
96} VkDeviceOrHostAddressConstAMDX;
97
98typedef struct VkDispatchGraphInfoAMDX {
99    uint32_t                          nodeIndex;
100    uint32_t                          payloadCount;
101    VkDeviceOrHostAddressConstAMDX    payloads;
102    uint64_t                          payloadStride;
103} VkDispatchGraphInfoAMDX;
104
105typedef struct VkDispatchGraphCountInfoAMDX {
106    uint32_t                          count;
107    VkDeviceOrHostAddressConstAMDX    infos;
108    uint64_t                          stride;
109} VkDispatchGraphCountInfoAMDX;
110
111typedef struct VkPipelineShaderStageNodeCreateInfoAMDX {
112      VkStructureType    sType;
113    const void*          pNext;
114    const char*          pName;
115    uint32_t             index;
116} VkPipelineShaderStageNodeCreateInfoAMDX;
117
118typedef VkResult (VKAPI_PTR *PFN_vkCreateExecutionGraphPipelinesAMDX)(VkDevice                                        device, VkPipelineCache                 pipelineCache, uint32_t                                        createInfoCount, const VkExecutionGraphPipelineCreateInfoAMDX* pCreateInfos, const VkAllocationCallbacks*    pAllocator, VkPipeline*               pPipelines);
119typedef VkResult (VKAPI_PTR *PFN_vkGetExecutionGraphPipelineScratchSizeAMDX)(VkDevice                                        device, VkPipeline                                      executionGraph, VkExecutionGraphPipelineScratchSizeAMDX*         pSizeInfo);
120typedef VkResult (VKAPI_PTR *PFN_vkGetExecutionGraphPipelineNodeIndexAMDX)(VkDevice                                        device, VkPipeline                                      executionGraph, const VkPipelineShaderStageNodeCreateInfoAMDX*   pNodeInfo, uint32_t*                                       pNodeIndex);
121typedef void (VKAPI_PTR *PFN_vkCmdInitializeGraphScratchMemoryAMDX)(VkCommandBuffer                                 commandBuffer, VkDeviceAddress                                 scratch);
122typedef void (VKAPI_PTR *PFN_vkCmdDispatchGraphAMDX)(VkCommandBuffer                                 commandBuffer, VkDeviceAddress                                 scratch, const VkDispatchGraphCountInfoAMDX*              pCountInfo);
123typedef void (VKAPI_PTR *PFN_vkCmdDispatchGraphIndirectAMDX)(VkCommandBuffer                                 commandBuffer, VkDeviceAddress                                 scratch, const VkDispatchGraphCountInfoAMDX*              pCountInfo);
124typedef void (VKAPI_PTR *PFN_vkCmdDispatchGraphIndirectCountAMDX)(VkCommandBuffer                                 commandBuffer, VkDeviceAddress                                 scratch, VkDeviceAddress                                 countInfo);
125
126#ifndef VK_NO_PROTOTYPES
127VKAPI_ATTR VkResult VKAPI_CALL vkCreateExecutionGraphPipelinesAMDX(
128    VkDevice                                    device,
129    VkPipelineCache                             pipelineCache,
130    uint32_t                                    createInfoCount,
131    const VkExecutionGraphPipelineCreateInfoAMDX* pCreateInfos,
132    const VkAllocationCallbacks*                pAllocator,
133    VkPipeline*                                 pPipelines);
134
135VKAPI_ATTR VkResult VKAPI_CALL vkGetExecutionGraphPipelineScratchSizeAMDX(
136    VkDevice                                    device,
137    VkPipeline                                  executionGraph,
138    VkExecutionGraphPipelineScratchSizeAMDX*    pSizeInfo);
139
140VKAPI_ATTR VkResult VKAPI_CALL vkGetExecutionGraphPipelineNodeIndexAMDX(
141    VkDevice                                    device,
142    VkPipeline                                  executionGraph,
143    const VkPipelineShaderStageNodeCreateInfoAMDX* pNodeInfo,
144    uint32_t*                                   pNodeIndex);
145
146VKAPI_ATTR void VKAPI_CALL vkCmdInitializeGraphScratchMemoryAMDX(
147    VkCommandBuffer                             commandBuffer,
148    VkDeviceAddress                             scratch);
149
150VKAPI_ATTR void VKAPI_CALL vkCmdDispatchGraphAMDX(
151    VkCommandBuffer                             commandBuffer,
152    VkDeviceAddress                             scratch,
153    const VkDispatchGraphCountInfoAMDX*         pCountInfo);
154
155VKAPI_ATTR void VKAPI_CALL vkCmdDispatchGraphIndirectAMDX(
156    VkCommandBuffer                             commandBuffer,
157    VkDeviceAddress                             scratch,
158    const VkDispatchGraphCountInfoAMDX*         pCountInfo);
159
160VKAPI_ATTR void VKAPI_CALL vkCmdDispatchGraphIndirectCountAMDX(
161    VkCommandBuffer                             commandBuffer,
162    VkDeviceAddress                             scratch,
163    VkDeviceAddress                             countInfo);
164#endif
165
166
167// VK_NV_displacement_micromap is a preprocessor guard. Do not pass it to API calls.
168#define VK_NV_displacement_micromap 1
169#define VK_NV_DISPLACEMENT_MICROMAP_SPEC_VERSION 2
170#define VK_NV_DISPLACEMENT_MICROMAP_EXTENSION_NAME "VK_NV_displacement_micromap"
171
172typedef enum VkDisplacementMicromapFormatNV {
173    VK_DISPLACEMENT_MICROMAP_FORMAT_64_TRIANGLES_64_BYTES_NV = 1,
174    VK_DISPLACEMENT_MICROMAP_FORMAT_256_TRIANGLES_128_BYTES_NV = 2,
175    VK_DISPLACEMENT_MICROMAP_FORMAT_1024_TRIANGLES_128_BYTES_NV = 3,
176    VK_DISPLACEMENT_MICROMAP_FORMAT_MAX_ENUM_NV = 0x7FFFFFFF
177} VkDisplacementMicromapFormatNV;
178typedef struct VkPhysicalDeviceDisplacementMicromapFeaturesNV {
179    VkStructureType    sType;
180    void*              pNext;
181    VkBool32           displacementMicromap;
182} VkPhysicalDeviceDisplacementMicromapFeaturesNV;
183
184typedef struct VkPhysicalDeviceDisplacementMicromapPropertiesNV {
185    VkStructureType    sType;
186    void*              pNext;
187    uint32_t           maxDisplacementMicromapSubdivisionLevel;
188} VkPhysicalDeviceDisplacementMicromapPropertiesNV;
189
190typedef struct VkAccelerationStructureTrianglesDisplacementMicromapNV {
191    VkStructureType                     sType;
192    void*                               pNext;
193    VkFormat                            displacementBiasAndScaleFormat;
194    VkFormat                            displacementVectorFormat;
195    VkDeviceOrHostAddressConstKHR       displacementBiasAndScaleBuffer;
196    VkDeviceSize                        displacementBiasAndScaleStride;
197    VkDeviceOrHostAddressConstKHR       displacementVectorBuffer;
198    VkDeviceSize                        displacementVectorStride;
199    VkDeviceOrHostAddressConstKHR       displacedMicromapPrimitiveFlags;
200    VkDeviceSize                        displacedMicromapPrimitiveFlagsStride;
201    VkIndexType                         indexType;
202    VkDeviceOrHostAddressConstKHR       indexBuffer;
203    VkDeviceSize                        indexStride;
204    uint32_t                            baseTriangle;
205    uint32_t                            usageCountsCount;
206    const VkMicromapUsageEXT*           pUsageCounts;
207    const VkMicromapUsageEXT* const*    ppUsageCounts;
208    VkMicromapEXT                       micromap;
209} VkAccelerationStructureTrianglesDisplacementMicromapNV;
210
211
212#ifdef __cplusplus
213}
214#endif
215
216#endif
217