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