1 #ifndef VULKAN_FUCHSIA_H_ 2 #define VULKAN_FUCHSIA_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_FUCHSIA_imagepipe_surface is a preprocessor guard. Do not pass it to API calls. 23 #define VK_FUCHSIA_imagepipe_surface 1 24 #define VK_FUCHSIA_IMAGEPIPE_SURFACE_SPEC_VERSION 1 25 #define VK_FUCHSIA_IMAGEPIPE_SURFACE_EXTENSION_NAME "VK_FUCHSIA_imagepipe_surface" 26 typedef VkFlags VkImagePipeSurfaceCreateFlagsFUCHSIA; 27 typedef struct VkImagePipeSurfaceCreateInfoFUCHSIA { 28 VkStructureType sType; 29 const void* pNext; 30 VkImagePipeSurfaceCreateFlagsFUCHSIA flags; 31 zx_handle_t imagePipeHandle; 32 } VkImagePipeSurfaceCreateInfoFUCHSIA; 33 34 typedef VkResult (VKAPI_PTR *PFN_vkCreateImagePipeSurfaceFUCHSIA)(VkInstance instance, const VkImagePipeSurfaceCreateInfoFUCHSIA* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface); 35 36 #ifndef VK_NO_PROTOTYPES 37 VKAPI_ATTR VkResult VKAPI_CALL vkCreateImagePipeSurfaceFUCHSIA( 38 VkInstance instance, 39 const VkImagePipeSurfaceCreateInfoFUCHSIA* pCreateInfo, 40 const VkAllocationCallbacks* pAllocator, 41 VkSurfaceKHR* pSurface); 42 #endif 43 44 45 // VK_FUCHSIA_external_memory is a preprocessor guard. Do not pass it to API calls. 46 #define VK_FUCHSIA_external_memory 1 47 #define VK_FUCHSIA_EXTERNAL_MEMORY_SPEC_VERSION 1 48 #define VK_FUCHSIA_EXTERNAL_MEMORY_EXTENSION_NAME "VK_FUCHSIA_external_memory" 49 typedef struct VkImportMemoryZirconHandleInfoFUCHSIA { 50 VkStructureType sType; 51 const void* pNext; 52 VkExternalMemoryHandleTypeFlagBits handleType; 53 zx_handle_t handle; 54 } VkImportMemoryZirconHandleInfoFUCHSIA; 55 56 typedef struct VkMemoryZirconHandlePropertiesFUCHSIA { 57 VkStructureType sType; 58 void* pNext; 59 uint32_t memoryTypeBits; 60 } VkMemoryZirconHandlePropertiesFUCHSIA; 61 62 typedef struct VkMemoryGetZirconHandleInfoFUCHSIA { 63 VkStructureType sType; 64 const void* pNext; 65 VkDeviceMemory memory; 66 VkExternalMemoryHandleTypeFlagBits handleType; 67 } VkMemoryGetZirconHandleInfoFUCHSIA; 68 69 typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryZirconHandleFUCHSIA)(VkDevice device, const VkMemoryGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo, zx_handle_t* pZirconHandle); 70 typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryZirconHandlePropertiesFUCHSIA)(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, zx_handle_t zirconHandle, VkMemoryZirconHandlePropertiesFUCHSIA* pMemoryZirconHandleProperties); 71 72 #ifndef VK_NO_PROTOTYPES 73 VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryZirconHandleFUCHSIA( 74 VkDevice device, 75 const VkMemoryGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo, 76 zx_handle_t* pZirconHandle); 77 78 VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryZirconHandlePropertiesFUCHSIA( 79 VkDevice device, 80 VkExternalMemoryHandleTypeFlagBits handleType, 81 zx_handle_t zirconHandle, 82 VkMemoryZirconHandlePropertiesFUCHSIA* pMemoryZirconHandleProperties); 83 #endif 84 85 86 // VK_FUCHSIA_external_semaphore is a preprocessor guard. Do not pass it to API calls. 87 #define VK_FUCHSIA_external_semaphore 1 88 #define VK_FUCHSIA_EXTERNAL_SEMAPHORE_SPEC_VERSION 1 89 #define VK_FUCHSIA_EXTERNAL_SEMAPHORE_EXTENSION_NAME "VK_FUCHSIA_external_semaphore" 90 typedef struct VkImportSemaphoreZirconHandleInfoFUCHSIA { 91 VkStructureType sType; 92 const void* pNext; 93 VkSemaphore semaphore; 94 VkSemaphoreImportFlags flags; 95 VkExternalSemaphoreHandleTypeFlagBits handleType; 96 zx_handle_t zirconHandle; 97 } VkImportSemaphoreZirconHandleInfoFUCHSIA; 98 99 typedef struct VkSemaphoreGetZirconHandleInfoFUCHSIA { 100 VkStructureType sType; 101 const void* pNext; 102 VkSemaphore semaphore; 103 VkExternalSemaphoreHandleTypeFlagBits handleType; 104 } VkSemaphoreGetZirconHandleInfoFUCHSIA; 105 106 typedef VkResult (VKAPI_PTR *PFN_vkImportSemaphoreZirconHandleFUCHSIA)(VkDevice device, const VkImportSemaphoreZirconHandleInfoFUCHSIA* pImportSemaphoreZirconHandleInfo); 107 typedef VkResult (VKAPI_PTR *PFN_vkGetSemaphoreZirconHandleFUCHSIA)(VkDevice device, const VkSemaphoreGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo, zx_handle_t* pZirconHandle); 108 109 #ifndef VK_NO_PROTOTYPES 110 VKAPI_ATTR VkResult VKAPI_CALL vkImportSemaphoreZirconHandleFUCHSIA( 111 VkDevice device, 112 const VkImportSemaphoreZirconHandleInfoFUCHSIA* pImportSemaphoreZirconHandleInfo); 113 114 VKAPI_ATTR VkResult VKAPI_CALL vkGetSemaphoreZirconHandleFUCHSIA( 115 VkDevice device, 116 const VkSemaphoreGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo, 117 zx_handle_t* pZirconHandle); 118 #endif 119 120 121 // VK_FUCHSIA_buffer_collection is a preprocessor guard. Do not pass it to API calls. 122 #define VK_FUCHSIA_buffer_collection 1 123 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkBufferCollectionFUCHSIA) 124 #define VK_FUCHSIA_BUFFER_COLLECTION_SPEC_VERSION 2 125 #define VK_FUCHSIA_BUFFER_COLLECTION_EXTENSION_NAME "VK_FUCHSIA_buffer_collection" 126 typedef VkFlags VkImageFormatConstraintsFlagsFUCHSIA; 127 128 typedef enum VkImageConstraintsInfoFlagBitsFUCHSIA { 129 VK_IMAGE_CONSTRAINTS_INFO_CPU_READ_RARELY_FUCHSIA = 0x00000001, 130 VK_IMAGE_CONSTRAINTS_INFO_CPU_READ_OFTEN_FUCHSIA = 0x00000002, 131 VK_IMAGE_CONSTRAINTS_INFO_CPU_WRITE_RARELY_FUCHSIA = 0x00000004, 132 VK_IMAGE_CONSTRAINTS_INFO_CPU_WRITE_OFTEN_FUCHSIA = 0x00000008, 133 VK_IMAGE_CONSTRAINTS_INFO_PROTECTED_OPTIONAL_FUCHSIA = 0x00000010, 134 VK_IMAGE_CONSTRAINTS_INFO_FLAG_BITS_MAX_ENUM_FUCHSIA = 0x7FFFFFFF 135 } VkImageConstraintsInfoFlagBitsFUCHSIA; 136 typedef VkFlags VkImageConstraintsInfoFlagsFUCHSIA; 137 typedef struct VkBufferCollectionCreateInfoFUCHSIA { 138 VkStructureType sType; 139 const void* pNext; 140 zx_handle_t collectionToken; 141 } VkBufferCollectionCreateInfoFUCHSIA; 142 143 typedef struct VkImportMemoryBufferCollectionFUCHSIA { 144 VkStructureType sType; 145 const void* pNext; 146 VkBufferCollectionFUCHSIA collection; 147 uint32_t index; 148 } VkImportMemoryBufferCollectionFUCHSIA; 149 150 typedef struct VkBufferCollectionImageCreateInfoFUCHSIA { 151 VkStructureType sType; 152 const void* pNext; 153 VkBufferCollectionFUCHSIA collection; 154 uint32_t index; 155 } VkBufferCollectionImageCreateInfoFUCHSIA; 156 157 typedef struct VkBufferCollectionConstraintsInfoFUCHSIA { 158 VkStructureType sType; 159 const void* pNext; 160 uint32_t minBufferCount; 161 uint32_t maxBufferCount; 162 uint32_t minBufferCountForCamping; 163 uint32_t minBufferCountForDedicatedSlack; 164 uint32_t minBufferCountForSharedSlack; 165 } VkBufferCollectionConstraintsInfoFUCHSIA; 166 167 typedef struct VkBufferConstraintsInfoFUCHSIA { 168 VkStructureType sType; 169 const void* pNext; 170 VkBufferCreateInfo createInfo; 171 VkFormatFeatureFlags requiredFormatFeatures; 172 VkBufferCollectionConstraintsInfoFUCHSIA bufferCollectionConstraints; 173 } VkBufferConstraintsInfoFUCHSIA; 174 175 typedef struct VkBufferCollectionBufferCreateInfoFUCHSIA { 176 VkStructureType sType; 177 const void* pNext; 178 VkBufferCollectionFUCHSIA collection; 179 uint32_t index; 180 } VkBufferCollectionBufferCreateInfoFUCHSIA; 181 182 typedef struct VkSysmemColorSpaceFUCHSIA { 183 VkStructureType sType; 184 const void* pNext; 185 uint32_t colorSpace; 186 } VkSysmemColorSpaceFUCHSIA; 187 188 typedef struct VkBufferCollectionPropertiesFUCHSIA { 189 VkStructureType sType; 190 void* pNext; 191 uint32_t memoryTypeBits; 192 uint32_t bufferCount; 193 uint32_t createInfoIndex; 194 uint64_t sysmemPixelFormat; 195 VkFormatFeatureFlags formatFeatures; 196 VkSysmemColorSpaceFUCHSIA sysmemColorSpaceIndex; 197 VkComponentMapping samplerYcbcrConversionComponents; 198 VkSamplerYcbcrModelConversion suggestedYcbcrModel; 199 VkSamplerYcbcrRange suggestedYcbcrRange; 200 VkChromaLocation suggestedXChromaOffset; 201 VkChromaLocation suggestedYChromaOffset; 202 } VkBufferCollectionPropertiesFUCHSIA; 203 204 typedef struct VkImageFormatConstraintsInfoFUCHSIA { 205 VkStructureType sType; 206 const void* pNext; 207 VkImageCreateInfo imageCreateInfo; 208 VkFormatFeatureFlags requiredFormatFeatures; 209 VkImageFormatConstraintsFlagsFUCHSIA flags; 210 uint64_t sysmemPixelFormat; 211 uint32_t colorSpaceCount; 212 const VkSysmemColorSpaceFUCHSIA* pColorSpaces; 213 } VkImageFormatConstraintsInfoFUCHSIA; 214 215 typedef struct VkImageConstraintsInfoFUCHSIA { 216 VkStructureType sType; 217 const void* pNext; 218 uint32_t formatConstraintsCount; 219 const VkImageFormatConstraintsInfoFUCHSIA* pFormatConstraints; 220 VkBufferCollectionConstraintsInfoFUCHSIA bufferCollectionConstraints; 221 VkImageConstraintsInfoFlagsFUCHSIA flags; 222 } VkImageConstraintsInfoFUCHSIA; 223 224 typedef VkResult (VKAPI_PTR *PFN_vkCreateBufferCollectionFUCHSIA)(VkDevice device, const VkBufferCollectionCreateInfoFUCHSIA* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBufferCollectionFUCHSIA* pCollection); 225 typedef VkResult (VKAPI_PTR *PFN_vkSetBufferCollectionImageConstraintsFUCHSIA)(VkDevice device, VkBufferCollectionFUCHSIA collection, const VkImageConstraintsInfoFUCHSIA* pImageConstraintsInfo); 226 typedef VkResult (VKAPI_PTR *PFN_vkSetBufferCollectionBufferConstraintsFUCHSIA)(VkDevice device, VkBufferCollectionFUCHSIA collection, const VkBufferConstraintsInfoFUCHSIA* pBufferConstraintsInfo); 227 typedef void (VKAPI_PTR *PFN_vkDestroyBufferCollectionFUCHSIA)(VkDevice device, VkBufferCollectionFUCHSIA collection, const VkAllocationCallbacks* pAllocator); 228 typedef VkResult (VKAPI_PTR *PFN_vkGetBufferCollectionPropertiesFUCHSIA)(VkDevice device, VkBufferCollectionFUCHSIA collection, VkBufferCollectionPropertiesFUCHSIA* pProperties); 229 230 #ifndef VK_NO_PROTOTYPES 231 VKAPI_ATTR VkResult VKAPI_CALL vkCreateBufferCollectionFUCHSIA( 232 VkDevice device, 233 const VkBufferCollectionCreateInfoFUCHSIA* pCreateInfo, 234 const VkAllocationCallbacks* pAllocator, 235 VkBufferCollectionFUCHSIA* pCollection); 236 237 VKAPI_ATTR VkResult VKAPI_CALL vkSetBufferCollectionImageConstraintsFUCHSIA( 238 VkDevice device, 239 VkBufferCollectionFUCHSIA collection, 240 const VkImageConstraintsInfoFUCHSIA* pImageConstraintsInfo); 241 242 VKAPI_ATTR VkResult VKAPI_CALL vkSetBufferCollectionBufferConstraintsFUCHSIA( 243 VkDevice device, 244 VkBufferCollectionFUCHSIA collection, 245 const VkBufferConstraintsInfoFUCHSIA* pBufferConstraintsInfo); 246 247 VKAPI_ATTR void VKAPI_CALL vkDestroyBufferCollectionFUCHSIA( 248 VkDevice device, 249 VkBufferCollectionFUCHSIA collection, 250 const VkAllocationCallbacks* pAllocator); 251 252 VKAPI_ATTR VkResult VKAPI_CALL vkGetBufferCollectionPropertiesFUCHSIA( 253 VkDevice device, 254 VkBufferCollectionFUCHSIA collection, 255 VkBufferCollectionPropertiesFUCHSIA* pProperties); 256 #endif 257 258 #ifdef __cplusplus 259 } 260 #endif 261 262 #endif 263