xref: /aosp_15_r20/external/vulkan-headers/include/vulkan/vulkan_beta.h (revision 902771965e4c6d39c75c62130a6a330c08b024db)
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
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 1
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 } VkPhysicalDeviceShaderEnqueueFeaturesAMDX;
64 
65 typedef 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 
75 typedef struct VkExecutionGraphPipelineScratchSizeAMDX {
76     VkStructureType    sType;
77     void*              pNext;
78     VkDeviceSize       size;
79 } VkExecutionGraphPipelineScratchSizeAMDX;
80 
81 typedef 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 
93 typedef union VkDeviceOrHostAddressConstAMDX {
94     VkDeviceAddress    deviceAddress;
95     const void*        hostAddress;
96 } VkDeviceOrHostAddressConstAMDX;
97 
98 typedef struct VkDispatchGraphInfoAMDX {
99     uint32_t                          nodeIndex;
100     uint32_t                          payloadCount;
101     VkDeviceOrHostAddressConstAMDX    payloads;
102     uint64_t                          payloadStride;
103 } VkDispatchGraphInfoAMDX;
104 
105 typedef struct VkDispatchGraphCountInfoAMDX {
106     uint32_t                          count;
107     VkDeviceOrHostAddressConstAMDX    infos;
108     uint64_t                          stride;
109 } VkDispatchGraphCountInfoAMDX;
110 
111 typedef struct VkPipelineShaderStageNodeCreateInfoAMDX {
112       VkStructureType    sType;
113     const void*          pNext;
114     const char*          pName;
115     uint32_t             index;
116 } VkPipelineShaderStageNodeCreateInfoAMDX;
117 
118 typedef VkResult (VKAPI_PTR *PFN_vkCreateExecutionGraphPipelinesAMDX)(VkDevice                                        device, VkPipelineCache                 pipelineCache, uint32_t                                        createInfoCount, const VkExecutionGraphPipelineCreateInfoAMDX* pCreateInfos, const VkAllocationCallbacks*    pAllocator, VkPipeline*               pPipelines);
119 typedef VkResult (VKAPI_PTR *PFN_vkGetExecutionGraphPipelineScratchSizeAMDX)(VkDevice                                        device, VkPipeline                                      executionGraph, VkExecutionGraphPipelineScratchSizeAMDX*         pSizeInfo);
120 typedef VkResult (VKAPI_PTR *PFN_vkGetExecutionGraphPipelineNodeIndexAMDX)(VkDevice                                        device, VkPipeline                                      executionGraph, const VkPipelineShaderStageNodeCreateInfoAMDX*   pNodeInfo, uint32_t*                                       pNodeIndex);
121 typedef void (VKAPI_PTR *PFN_vkCmdInitializeGraphScratchMemoryAMDX)(VkCommandBuffer                                 commandBuffer, VkDeviceAddress                                 scratch);
122 typedef void (VKAPI_PTR *PFN_vkCmdDispatchGraphAMDX)(VkCommandBuffer                                 commandBuffer, VkDeviceAddress                                 scratch, const VkDispatchGraphCountInfoAMDX*              pCountInfo);
123 typedef void (VKAPI_PTR *PFN_vkCmdDispatchGraphIndirectAMDX)(VkCommandBuffer                                 commandBuffer, VkDeviceAddress                                 scratch, const VkDispatchGraphCountInfoAMDX*              pCountInfo);
124 typedef void (VKAPI_PTR *PFN_vkCmdDispatchGraphIndirectCountAMDX)(VkCommandBuffer                                 commandBuffer, VkDeviceAddress                                 scratch, VkDeviceAddress                                 countInfo);
125 
126 #ifndef VK_NO_PROTOTYPES
127 VKAPI_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 
135 VKAPI_ATTR VkResult VKAPI_CALL vkGetExecutionGraphPipelineScratchSizeAMDX(
136     VkDevice                                    device,
137     VkPipeline                                  executionGraph,
138     VkExecutionGraphPipelineScratchSizeAMDX*    pSizeInfo);
139 
140 VKAPI_ATTR VkResult VKAPI_CALL vkGetExecutionGraphPipelineNodeIndexAMDX(
141     VkDevice                                    device,
142     VkPipeline                                  executionGraph,
143     const VkPipelineShaderStageNodeCreateInfoAMDX* pNodeInfo,
144     uint32_t*                                   pNodeIndex);
145 
146 VKAPI_ATTR void VKAPI_CALL vkCmdInitializeGraphScratchMemoryAMDX(
147     VkCommandBuffer                             commandBuffer,
148     VkDeviceAddress                             scratch);
149 
150 VKAPI_ATTR void VKAPI_CALL vkCmdDispatchGraphAMDX(
151     VkCommandBuffer                             commandBuffer,
152     VkDeviceAddress                             scratch,
153     const VkDispatchGraphCountInfoAMDX*         pCountInfo);
154 
155 VKAPI_ATTR void VKAPI_CALL vkCmdDispatchGraphIndirectAMDX(
156     VkCommandBuffer                             commandBuffer,
157     VkDeviceAddress                             scratch,
158     const VkDispatchGraphCountInfoAMDX*         pCountInfo);
159 
160 VKAPI_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 
172 typedef 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;
178 typedef struct VkPhysicalDeviceDisplacementMicromapFeaturesNV {
179     VkStructureType    sType;
180     void*              pNext;
181     VkBool32           displacementMicromap;
182 } VkPhysicalDeviceDisplacementMicromapFeaturesNV;
183 
184 typedef struct VkPhysicalDeviceDisplacementMicromapPropertiesNV {
185     VkStructureType    sType;
186     void*              pNext;
187     uint32_t           maxDisplacementMicromapSubdivisionLevel;
188 } VkPhysicalDeviceDisplacementMicromapPropertiesNV;
189 
190 typedef 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