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