vulkan_beta.h 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375
  1. #ifndef VULKAN_BETA_H_
  2. #define VULKAN_BETA_H_ 1
  3. /*
  4. ** Copyright 2015-2025 The Khronos Group Inc.
  5. **
  6. ** SPDX-License-Identifier: Apache-2.0
  7. */
  8. /*
  9. ** This header is generated from the Khronos Vulkan XML API Registry.
  10. **
  11. */
  12. #ifdef __cplusplus
  13. extern "C" {
  14. #endif
  15. // VK_KHR_portability_subset is a preprocessor guard. Do not pass it to API calls.
  16. #define VK_KHR_portability_subset 1
  17. #define VK_KHR_PORTABILITY_SUBSET_SPEC_VERSION 1
  18. #define VK_KHR_PORTABILITY_SUBSET_EXTENSION_NAME "VK_KHR_portability_subset"
  19. typedef struct VkPhysicalDevicePortabilitySubsetFeaturesKHR {
  20. VkStructureType sType;
  21. void* pNext;
  22. VkBool32 constantAlphaColorBlendFactors;
  23. VkBool32 events;
  24. VkBool32 imageViewFormatReinterpretation;
  25. VkBool32 imageViewFormatSwizzle;
  26. VkBool32 imageView2DOn3DImage;
  27. VkBool32 multisampleArrayImage;
  28. VkBool32 mutableComparisonSamplers;
  29. VkBool32 pointPolygons;
  30. VkBool32 samplerMipLodBias;
  31. VkBool32 separateStencilMaskRef;
  32. VkBool32 shaderSampleRateInterpolationFunctions;
  33. VkBool32 tessellationIsolines;
  34. VkBool32 tessellationPointMode;
  35. VkBool32 triangleFans;
  36. VkBool32 vertexAttributeAccessBeyondStride;
  37. } VkPhysicalDevicePortabilitySubsetFeaturesKHR;
  38. typedef struct VkPhysicalDevicePortabilitySubsetPropertiesKHR {
  39. VkStructureType sType;
  40. void* pNext;
  41. uint32_t minVertexInputBindingStrideAlignment;
  42. } VkPhysicalDevicePortabilitySubsetPropertiesKHR;
  43. // VK_AMDX_shader_enqueue is a preprocessor guard. Do not pass it to API calls.
  44. #define VK_AMDX_shader_enqueue 1
  45. #define VK_AMDX_SHADER_ENQUEUE_SPEC_VERSION 2
  46. #define VK_AMDX_SHADER_ENQUEUE_EXTENSION_NAME "VK_AMDX_shader_enqueue"
  47. #define VK_SHADER_INDEX_UNUSED_AMDX (~0U)
  48. typedef struct VkPhysicalDeviceShaderEnqueueFeaturesAMDX {
  49. VkStructureType sType;
  50. void* pNext;
  51. VkBool32 shaderEnqueue;
  52. VkBool32 shaderMeshEnqueue;
  53. } VkPhysicalDeviceShaderEnqueueFeaturesAMDX;
  54. typedef struct VkPhysicalDeviceShaderEnqueuePropertiesAMDX {
  55. VkStructureType sType;
  56. void* pNext;
  57. uint32_t maxExecutionGraphDepth;
  58. uint32_t maxExecutionGraphShaderOutputNodes;
  59. uint32_t maxExecutionGraphShaderPayloadSize;
  60. uint32_t maxExecutionGraphShaderPayloadCount;
  61. uint32_t executionGraphDispatchAddressAlignment;
  62. uint32_t maxExecutionGraphWorkgroupCount[3];
  63. uint32_t maxExecutionGraphWorkgroups;
  64. } VkPhysicalDeviceShaderEnqueuePropertiesAMDX;
  65. typedef struct VkExecutionGraphPipelineScratchSizeAMDX {
  66. VkStructureType sType;
  67. void* pNext;
  68. VkDeviceSize minSize;
  69. VkDeviceSize maxSize;
  70. VkDeviceSize sizeGranularity;
  71. } VkExecutionGraphPipelineScratchSizeAMDX;
  72. typedef struct VkExecutionGraphPipelineCreateInfoAMDX {
  73. VkStructureType sType;
  74. const void* pNext;
  75. VkPipelineCreateFlags flags;
  76. uint32_t stageCount;
  77. const VkPipelineShaderStageCreateInfo* pStages;
  78. const VkPipelineLibraryCreateInfoKHR* pLibraryInfo;
  79. VkPipelineLayout layout;
  80. VkPipeline basePipelineHandle;
  81. int32_t basePipelineIndex;
  82. } VkExecutionGraphPipelineCreateInfoAMDX;
  83. typedef union VkDeviceOrHostAddressConstAMDX {
  84. VkDeviceAddress deviceAddress;
  85. const void* hostAddress;
  86. } VkDeviceOrHostAddressConstAMDX;
  87. typedef struct VkDispatchGraphInfoAMDX {
  88. uint32_t nodeIndex;
  89. uint32_t payloadCount;
  90. VkDeviceOrHostAddressConstAMDX payloads;
  91. uint64_t payloadStride;
  92. } VkDispatchGraphInfoAMDX;
  93. typedef struct VkDispatchGraphCountInfoAMDX {
  94. uint32_t count;
  95. VkDeviceOrHostAddressConstAMDX infos;
  96. uint64_t stride;
  97. } VkDispatchGraphCountInfoAMDX;
  98. typedef struct VkPipelineShaderStageNodeCreateInfoAMDX {
  99. VkStructureType sType;
  100. const void* pNext;
  101. const char* pName;
  102. uint32_t index;
  103. } VkPipelineShaderStageNodeCreateInfoAMDX;
  104. typedef VkResult (VKAPI_PTR *PFN_vkCreateExecutionGraphPipelinesAMDX)(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkExecutionGraphPipelineCreateInfoAMDX* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines);
  105. typedef VkResult (VKAPI_PTR *PFN_vkGetExecutionGraphPipelineScratchSizeAMDX)(VkDevice device, VkPipeline executionGraph, VkExecutionGraphPipelineScratchSizeAMDX* pSizeInfo);
  106. typedef VkResult (VKAPI_PTR *PFN_vkGetExecutionGraphPipelineNodeIndexAMDX)(VkDevice device, VkPipeline executionGraph, const VkPipelineShaderStageNodeCreateInfoAMDX* pNodeInfo, uint32_t* pNodeIndex);
  107. typedef void (VKAPI_PTR *PFN_vkCmdInitializeGraphScratchMemoryAMDX)(VkCommandBuffer commandBuffer, VkPipeline executionGraph, VkDeviceAddress scratch, VkDeviceSize scratchSize);
  108. typedef void (VKAPI_PTR *PFN_vkCmdDispatchGraphAMDX)(VkCommandBuffer commandBuffer, VkDeviceAddress scratch, VkDeviceSize scratchSize, const VkDispatchGraphCountInfoAMDX* pCountInfo);
  109. typedef void (VKAPI_PTR *PFN_vkCmdDispatchGraphIndirectAMDX)(VkCommandBuffer commandBuffer, VkDeviceAddress scratch, VkDeviceSize scratchSize, const VkDispatchGraphCountInfoAMDX* pCountInfo);
  110. typedef void (VKAPI_PTR *PFN_vkCmdDispatchGraphIndirectCountAMDX)(VkCommandBuffer commandBuffer, VkDeviceAddress scratch, VkDeviceSize scratchSize, VkDeviceAddress countInfo);
  111. #ifndef VK_NO_PROTOTYPES
  112. #ifndef VK_ONLY_EXPORTED_PROTOTYPES
  113. VKAPI_ATTR VkResult VKAPI_CALL vkCreateExecutionGraphPipelinesAMDX(
  114. VkDevice device,
  115. VkPipelineCache pipelineCache,
  116. uint32_t createInfoCount,
  117. const VkExecutionGraphPipelineCreateInfoAMDX* pCreateInfos,
  118. const VkAllocationCallbacks* pAllocator,
  119. VkPipeline* pPipelines);
  120. #endif
  121. #ifndef VK_ONLY_EXPORTED_PROTOTYPES
  122. VKAPI_ATTR VkResult VKAPI_CALL vkGetExecutionGraphPipelineScratchSizeAMDX(
  123. VkDevice device,
  124. VkPipeline executionGraph,
  125. VkExecutionGraphPipelineScratchSizeAMDX* pSizeInfo);
  126. #endif
  127. #ifndef VK_ONLY_EXPORTED_PROTOTYPES
  128. VKAPI_ATTR VkResult VKAPI_CALL vkGetExecutionGraphPipelineNodeIndexAMDX(
  129. VkDevice device,
  130. VkPipeline executionGraph,
  131. const VkPipelineShaderStageNodeCreateInfoAMDX* pNodeInfo,
  132. uint32_t* pNodeIndex);
  133. #endif
  134. #ifndef VK_ONLY_EXPORTED_PROTOTYPES
  135. VKAPI_ATTR void VKAPI_CALL vkCmdInitializeGraphScratchMemoryAMDX(
  136. VkCommandBuffer commandBuffer,
  137. VkPipeline executionGraph,
  138. VkDeviceAddress scratch,
  139. VkDeviceSize scratchSize);
  140. #endif
  141. #ifndef VK_ONLY_EXPORTED_PROTOTYPES
  142. VKAPI_ATTR void VKAPI_CALL vkCmdDispatchGraphAMDX(
  143. VkCommandBuffer commandBuffer,
  144. VkDeviceAddress scratch,
  145. VkDeviceSize scratchSize,
  146. const VkDispatchGraphCountInfoAMDX* pCountInfo);
  147. #endif
  148. #ifndef VK_ONLY_EXPORTED_PROTOTYPES
  149. VKAPI_ATTR void VKAPI_CALL vkCmdDispatchGraphIndirectAMDX(
  150. VkCommandBuffer commandBuffer,
  151. VkDeviceAddress scratch,
  152. VkDeviceSize scratchSize,
  153. const VkDispatchGraphCountInfoAMDX* pCountInfo);
  154. #endif
  155. #ifndef VK_ONLY_EXPORTED_PROTOTYPES
  156. VKAPI_ATTR void VKAPI_CALL vkCmdDispatchGraphIndirectCountAMDX(
  157. VkCommandBuffer commandBuffer,
  158. VkDeviceAddress scratch,
  159. VkDeviceSize scratchSize,
  160. VkDeviceAddress countInfo);
  161. #endif
  162. #endif
  163. // VK_NV_cuda_kernel_launch is a preprocessor guard. Do not pass it to API calls.
  164. #define VK_NV_cuda_kernel_launch 1
  165. VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkCudaModuleNV)
  166. VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkCudaFunctionNV)
  167. #define VK_NV_CUDA_KERNEL_LAUNCH_SPEC_VERSION 2
  168. #define VK_NV_CUDA_KERNEL_LAUNCH_EXTENSION_NAME "VK_NV_cuda_kernel_launch"
  169. typedef struct VkCudaModuleCreateInfoNV {
  170. VkStructureType sType;
  171. const void* pNext;
  172. size_t dataSize;
  173. const void* pData;
  174. } VkCudaModuleCreateInfoNV;
  175. typedef struct VkCudaFunctionCreateInfoNV {
  176. VkStructureType sType;
  177. const void* pNext;
  178. VkCudaModuleNV module;
  179. const char* pName;
  180. } VkCudaFunctionCreateInfoNV;
  181. typedef struct VkCudaLaunchInfoNV {
  182. VkStructureType sType;
  183. const void* pNext;
  184. VkCudaFunctionNV function;
  185. uint32_t gridDimX;
  186. uint32_t gridDimY;
  187. uint32_t gridDimZ;
  188. uint32_t blockDimX;
  189. uint32_t blockDimY;
  190. uint32_t blockDimZ;
  191. uint32_t sharedMemBytes;
  192. size_t paramCount;
  193. const void* const * pParams;
  194. size_t extraCount;
  195. const void* const * pExtras;
  196. } VkCudaLaunchInfoNV;
  197. typedef struct VkPhysicalDeviceCudaKernelLaunchFeaturesNV {
  198. VkStructureType sType;
  199. void* pNext;
  200. VkBool32 cudaKernelLaunchFeatures;
  201. } VkPhysicalDeviceCudaKernelLaunchFeaturesNV;
  202. typedef struct VkPhysicalDeviceCudaKernelLaunchPropertiesNV {
  203. VkStructureType sType;
  204. void* pNext;
  205. uint32_t computeCapabilityMinor;
  206. uint32_t computeCapabilityMajor;
  207. } VkPhysicalDeviceCudaKernelLaunchPropertiesNV;
  208. typedef VkResult (VKAPI_PTR *PFN_vkCreateCudaModuleNV)(VkDevice device, const VkCudaModuleCreateInfoNV* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkCudaModuleNV* pModule);
  209. typedef VkResult (VKAPI_PTR *PFN_vkGetCudaModuleCacheNV)(VkDevice device, VkCudaModuleNV module, size_t* pCacheSize, void* pCacheData);
  210. typedef VkResult (VKAPI_PTR *PFN_vkCreateCudaFunctionNV)(VkDevice device, const VkCudaFunctionCreateInfoNV* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkCudaFunctionNV* pFunction);
  211. typedef void (VKAPI_PTR *PFN_vkDestroyCudaModuleNV)(VkDevice device, VkCudaModuleNV module, const VkAllocationCallbacks* pAllocator);
  212. typedef void (VKAPI_PTR *PFN_vkDestroyCudaFunctionNV)(VkDevice device, VkCudaFunctionNV function, const VkAllocationCallbacks* pAllocator);
  213. typedef void (VKAPI_PTR *PFN_vkCmdCudaLaunchKernelNV)(VkCommandBuffer commandBuffer, const VkCudaLaunchInfoNV* pLaunchInfo);
  214. #ifndef VK_NO_PROTOTYPES
  215. #ifndef VK_ONLY_EXPORTED_PROTOTYPES
  216. VKAPI_ATTR VkResult VKAPI_CALL vkCreateCudaModuleNV(
  217. VkDevice device,
  218. const VkCudaModuleCreateInfoNV* pCreateInfo,
  219. const VkAllocationCallbacks* pAllocator,
  220. VkCudaModuleNV* pModule);
  221. #endif
  222. #ifndef VK_ONLY_EXPORTED_PROTOTYPES
  223. VKAPI_ATTR VkResult VKAPI_CALL vkGetCudaModuleCacheNV(
  224. VkDevice device,
  225. VkCudaModuleNV module,
  226. size_t* pCacheSize,
  227. void* pCacheData);
  228. #endif
  229. #ifndef VK_ONLY_EXPORTED_PROTOTYPES
  230. VKAPI_ATTR VkResult VKAPI_CALL vkCreateCudaFunctionNV(
  231. VkDevice device,
  232. const VkCudaFunctionCreateInfoNV* pCreateInfo,
  233. const VkAllocationCallbacks* pAllocator,
  234. VkCudaFunctionNV* pFunction);
  235. #endif
  236. #ifndef VK_ONLY_EXPORTED_PROTOTYPES
  237. VKAPI_ATTR void VKAPI_CALL vkDestroyCudaModuleNV(
  238. VkDevice device,
  239. VkCudaModuleNV module,
  240. const VkAllocationCallbacks* pAllocator);
  241. #endif
  242. #ifndef VK_ONLY_EXPORTED_PROTOTYPES
  243. VKAPI_ATTR void VKAPI_CALL vkDestroyCudaFunctionNV(
  244. VkDevice device,
  245. VkCudaFunctionNV function,
  246. const VkAllocationCallbacks* pAllocator);
  247. #endif
  248. #ifndef VK_ONLY_EXPORTED_PROTOTYPES
  249. VKAPI_ATTR void VKAPI_CALL vkCmdCudaLaunchKernelNV(
  250. VkCommandBuffer commandBuffer,
  251. const VkCudaLaunchInfoNV* pLaunchInfo);
  252. #endif
  253. #endif
  254. // VK_NV_displacement_micromap is a preprocessor guard. Do not pass it to API calls.
  255. #define VK_NV_displacement_micromap 1
  256. #define VK_NV_DISPLACEMENT_MICROMAP_SPEC_VERSION 2
  257. #define VK_NV_DISPLACEMENT_MICROMAP_EXTENSION_NAME "VK_NV_displacement_micromap"
  258. typedef enum VkDisplacementMicromapFormatNV {
  259. VK_DISPLACEMENT_MICROMAP_FORMAT_64_TRIANGLES_64_BYTES_NV = 1,
  260. VK_DISPLACEMENT_MICROMAP_FORMAT_256_TRIANGLES_128_BYTES_NV = 2,
  261. VK_DISPLACEMENT_MICROMAP_FORMAT_1024_TRIANGLES_128_BYTES_NV = 3,
  262. VK_DISPLACEMENT_MICROMAP_FORMAT_MAX_ENUM_NV = 0x7FFFFFFF
  263. } VkDisplacementMicromapFormatNV;
  264. typedef struct VkPhysicalDeviceDisplacementMicromapFeaturesNV {
  265. VkStructureType sType;
  266. void* pNext;
  267. VkBool32 displacementMicromap;
  268. } VkPhysicalDeviceDisplacementMicromapFeaturesNV;
  269. typedef struct VkPhysicalDeviceDisplacementMicromapPropertiesNV {
  270. VkStructureType sType;
  271. void* pNext;
  272. uint32_t maxDisplacementMicromapSubdivisionLevel;
  273. } VkPhysicalDeviceDisplacementMicromapPropertiesNV;
  274. typedef struct VkAccelerationStructureTrianglesDisplacementMicromapNV {
  275. VkStructureType sType;
  276. void* pNext;
  277. VkFormat displacementBiasAndScaleFormat;
  278. VkFormat displacementVectorFormat;
  279. VkDeviceOrHostAddressConstKHR displacementBiasAndScaleBuffer;
  280. VkDeviceSize displacementBiasAndScaleStride;
  281. VkDeviceOrHostAddressConstKHR displacementVectorBuffer;
  282. VkDeviceSize displacementVectorStride;
  283. VkDeviceOrHostAddressConstKHR displacedMicromapPrimitiveFlags;
  284. VkDeviceSize displacedMicromapPrimitiveFlagsStride;
  285. VkIndexType indexType;
  286. VkDeviceOrHostAddressConstKHR indexBuffer;
  287. VkDeviceSize indexStride;
  288. uint32_t baseTriangle;
  289. uint32_t usageCountsCount;
  290. const VkMicromapUsageEXT* pUsageCounts;
  291. const VkMicromapUsageEXT* const* ppUsageCounts;
  292. VkMicromapEXT micromap;
  293. } VkAccelerationStructureTrianglesDisplacementMicromapNV;
  294. // VK_AMDX_dense_geometry_format is a preprocessor guard. Do not pass it to API calls.
  295. #define VK_AMDX_dense_geometry_format 1
  296. #define VK_AMDX_DENSE_GEOMETRY_FORMAT_SPEC_VERSION 1
  297. #define VK_AMDX_DENSE_GEOMETRY_FORMAT_EXTENSION_NAME "VK_AMDX_dense_geometry_format"
  298. #define VK_COMPRESSED_TRIANGLE_FORMAT_DGF1_BYTE_ALIGNMENT_AMDX 128U
  299. #define VK_COMPRESSED_TRIANGLE_FORMAT_DGF1_BYTE_STRIDE_AMDX 128U
  300. typedef enum VkCompressedTriangleFormatAMDX {
  301. VK_COMPRESSED_TRIANGLE_FORMAT_DGF1_AMDX = 0,
  302. VK_COMPRESSED_TRIANGLE_FORMAT_MAX_ENUM_AMDX = 0x7FFFFFFF
  303. } VkCompressedTriangleFormatAMDX;
  304. typedef struct VkPhysicalDeviceDenseGeometryFormatFeaturesAMDX {
  305. VkStructureType sType;
  306. void* pNext;
  307. VkBool32 denseGeometryFormat;
  308. } VkPhysicalDeviceDenseGeometryFormatFeaturesAMDX;
  309. typedef struct VkAccelerationStructureDenseGeometryFormatTrianglesDataAMDX {
  310. VkStructureType sType;
  311. const void* pNext;
  312. VkDeviceOrHostAddressConstKHR compressedData;
  313. VkDeviceSize dataSize;
  314. uint32_t numTriangles;
  315. uint32_t numVertices;
  316. uint32_t maxPrimitiveIndex;
  317. uint32_t maxGeometryIndex;
  318. VkCompressedTriangleFormatAMDX format;
  319. } VkAccelerationStructureDenseGeometryFormatTrianglesDataAMDX;
  320. #ifdef __cplusplus
  321. }
  322. #endif
  323. #endif