text: #ifndef VULKAN_FUCHSIA_H_
  #define VULKAN_FUCHSIA_H_ 1
  
  /*
  ** Copyright 2015-2021 The Khronos Group Inc.
  **
  ** SPDX-License-Identifier: Apache-2.0
  */
  
  /*
  ** This header is generated from the Khronos Vulkan XML API Registry.
  **
  */
  
  
  #ifdef __cplusplus
  extern "C" {
  #endif
  
  
  
  #define VK_FUCHSIA_imagepipe_surface 1
  #define VK_FUCHSIA_IMAGEPIPE_SURFACE_SPEC_VERSION 1
  #define VK_FUCHSIA_IMAGEPIPE_SURFACE_EXTENSION_NAME "VK_FUCHSIA_imagepipe_surface"
  typedef VkFlags VkImagePipeSurfaceCreateFlagsFUCHSIA;
  typedef struct VkImagePipeSurfaceCreateInfoFUCHSIA {
      VkStructureType                         sType;
      const void*                             pNext;
      VkImagePipeSurfaceCreateFlagsFUCHSIA    flags;
      zx_handle_t                             imagePipeHandle;
  } VkImagePipeSurfaceCreateInfoFUCHSIA;
  
  typedef VkResult (VKAPI_PTR *PFN_vkCreateImagePipeSurfaceFUCHSIA)(VkInstance instance, const VkImagePipeSurfaceCreateInfoFUCHSIA* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
  
  #ifndef VK_NO_PROTOTYPES
  VKAPI_ATTR VkResult VKAPI_CALL vkCreateImagePipeSurfaceFUCHSIA(
      VkInstance                                  instance,
      const VkImagePipeSurfaceCreateInfoFUCHSIA*  pCreateInfo,
      const VkAllocationCallbacks*                pAllocator,
      VkSurfaceKHR*                               pSurface);
  #endif
  
  
  #define VK_FUCHSIA_external_memory 1
  #define VK_FUCHSIA_EXTERNAL_MEMORY_SPEC_VERSION 1
  #define VK_FUCHSIA_EXTERNAL_MEMORY_EXTENSION_NAME "VK_FUCHSIA_external_memory"
  typedef struct VkImportMemoryZirconHandleInfoFUCHSIA {
      VkStructureType                       sType;
      const void*                           pNext;
      VkExternalMemoryHandleTypeFlagBits    handleType;
      zx_handle_t                           handle;
  } VkImportMemoryZirconHandleInfoFUCHSIA;
  
  typedef struct VkMemoryZirconHandlePropertiesFUCHSIA {
      VkStructureType    sType;
      void*              pNext;
      uint32_t           memoryTypeBits;
  } VkMemoryZirconHandlePropertiesFUCHSIA;
  
  typedef struct VkMemoryGetZirconHandleInfoFUCHSIA {
      VkStructureType                       sType;
      const void*                           pNext;
      VkDeviceMemory                        memory;
      VkExternalMemoryHandleTypeFlagBits    handleType;
  } VkMemoryGetZirconHandleInfoFUCHSIA;
  
  typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryZirconHandleFUCHSIA)(VkDevice device, const VkMemoryGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo, zx_handle_t* pZirconHandle);
  typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryZirconHandlePropertiesFUCHSIA)(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, zx_handle_t zirconHandle, VkMemoryZirconHandlePropertiesFUCHSIA* pMemoryZirconHandleProperties);
  
  #ifndef VK_NO_PROTOTYPES
  VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryZirconHandleFUCHSIA(
      VkDevice                                    device,
      const VkMemoryGetZirconHandleInfoFUCHSIA*   pGetZirconHandleInfo,
      zx_handle_t*                                pZirconHandle);
  
  VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryZirconHandlePropertiesFUCHSIA(
      VkDevice                                    device,
      VkExternalMemoryHandleTypeFlagBits          handleType,
      zx_handle_t                                 zirconHandle,
      VkMemoryZirconHandlePropertiesFUCHSIA*      pMemoryZirconHandleProperties);
  #endif
  
  
  #define VK_FUCHSIA_external_semaphore 1
  #define VK_FUCHSIA_EXTERNAL_SEMAPHORE_SPEC_VERSION 1
  #define VK_FUCHSIA_EXTERNAL_SEMAPHORE_EXTENSION_NAME "VK_FUCHSIA_external_semaphore"
  typedef struct VkImportSemaphoreZirconHandleInfoFUCHSIA {
      VkStructureType                          sType;
      const void*                              pNext;
      VkSemaphore                              semaphore;
      VkSemaphoreImportFlags                   flags;
      VkExternalSemaphoreHandleTypeFlagBits    handleType;
      zx_handle_t                              zirconHandle;
  } VkImportSemaphoreZirconHandleInfoFUCHSIA;
  
  typedef struct VkSemaphoreGetZirconHandleInfoFUCHSIA {
      VkStructureType                          sType;
      const void*                              pNext;
      VkSemaphore                              semaphore;
      VkExternalSemaphoreHandleTypeFlagBits    handleType;
  } VkSemaphoreGetZirconHandleInfoFUCHSIA;
  
  typedef VkResult (VKAPI_PTR *PFN_vkImportSemaphoreZirconHandleFUCHSIA)(VkDevice device, const VkImportSemaphoreZirconHandleInfoFUCHSIA* pImportSemaphoreZirconHandleInfo);
  typedef VkResult (VKAPI_PTR *PFN_vkGetSemaphoreZirconHandleFUCHSIA)(VkDevice device, const VkSemaphoreGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo, zx_handle_t* pZirconHandle);
  
  #ifndef VK_NO_PROTOTYPES
  VKAPI_ATTR VkResult VKAPI_CALL vkImportSemaphoreZirconHandleFUCHSIA(
      VkDevice                                    device,
      const VkImportSemaphoreZirconHandleInfoFUCHSIA* pImportSemaphoreZirconHandleInfo);
  
  VKAPI_ATTR VkResult VKAPI_CALL vkGetSemaphoreZirconHandleFUCHSIA(
      VkDevice                                    device,
      const VkSemaphoreGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo,
      zx_handle_t*                                pZirconHandle);
  #endif
  
  
  #define VK_FUCHSIA_buffer_collection 1
  VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkBufferCollectionFUCHSIA)
  #define VK_FUCHSIA_BUFFER_COLLECTION_SPEC_VERSION 2
  #define VK_FUCHSIA_BUFFER_COLLECTION_EXTENSION_NAME "VK_FUCHSIA_buffer_collection"
  typedef VkFlags VkImageFormatConstraintsFlagsFUCHSIA;
  
  typedef enum VkImageConstraintsInfoFlagBitsFUCHSIA {
      VK_IMAGE_CONSTRAINTS_INFO_CPU_READ_RARELY_FUCHSIA = 0x00000001,
      VK_IMAGE_CONSTRAINTS_INFO_CPU_READ_OFTEN_FUCHSIA = 0x00000002,
      VK_IMAGE_CONSTRAINTS_INFO_CPU_WRITE_RARELY_FUCHSIA = 0x00000004,
      VK_IMAGE_CONSTRAINTS_INFO_CPU_WRITE_OFTEN_FUCHSIA = 0x00000008,
      VK_IMAGE_CONSTRAINTS_INFO_PROTECTED_OPTIONAL_FUCHSIA = 0x00000010,
      VK_IMAGE_CONSTRAINTS_INFO_FLAG_BITS_MAX_ENUM_FUCHSIA = 0x7FFFFFFF
  } VkImageConstraintsInfoFlagBitsFUCHSIA;
  typedef VkFlags VkImageConstraintsInfoFlagsFUCHSIA;
  typedef struct VkBufferCollectionCreateInfoFUCHSIA {
      VkStructureType    sType;
      const void*        pNext;
      zx_handle_t        collectionToken;
  } VkBufferCollectionCreateInfoFUCHSIA;
  
  typedef struct VkImportMemoryBufferCollectionFUCHSIA {
      VkStructureType              sType;
      const void*                  pNext;
      VkBufferCollectionFUCHSIA    collection;
      uint32_t                     index;
  } VkImportMemoryBufferCollectionFUCHSIA;
  
  typedef struct VkBufferCollectionImageCreateInfoFUCHSIA {
      VkStructureType              sType;
      const void*                  pNext;
      VkBufferCollectionFUCHSIA    collection;
      uint32_t                     index;
  } VkBufferCollectionImageCreateInfoFUCHSIA;
  
  typedef struct VkBufferCollectionConstraintsInfoFUCHSIA {
      VkStructureType    sType;
      const void*        pNext;
      uint32_t           minBufferCount;
      uint32_t           maxBufferCount;
      uint32_t           minBufferCountForCamping;
      uint32_t           minBufferCountForDedicatedSlack;
      uint32_t           minBufferCountForSharedSlack;
  } VkBufferCollectionConstraintsInfoFUCHSIA;
  
  typedef struct VkBufferConstraintsInfoFUCHSIA {
      VkStructureType                             sType;
      const void*                                 pNext;
      VkBufferCreateInfo                          createInfo;
      VkFormatFeatureFlags                        requiredFormatFeatures;
      VkBufferCollectionConstraintsInfoFUCHSIA    bufferCollectionConstraints;
  } VkBufferConstraintsInfoFUCHSIA;
  
  typedef struct VkBufferCollectionBufferCreateInfoFUCHSIA {
      VkStructureType              sType;
      const void*                  pNext;
      VkBufferCollectionFUCHSIA    collection;
      uint32_t                     index;
  } VkBufferCollectionBufferCreateInfoFUCHSIA;
  
  typedef struct VkSysmemColorSpaceFUCHSIA {
      VkStructureType    sType;
      const void*        pNext;
      uint32_t           colorSpace;
  } VkSysmemColorSpaceFUCHSIA;
  
  typedef struct VkBufferCollectionPropertiesFUCHSIA {
      VkStructureType                  sType;
      void*                            pNext;
      uint32_t                         memoryTypeBits;
      uint32_t                         bufferCount;
      uint32_t                         createInfoIndex;
      uint64_t                         sysmemPixelFormat;
      VkFormatFeatureFlags             formatFeatures;
      VkSysmemColorSpaceFUCHSIA        sysmemColorSpaceIndex;
      VkComponentMapping               samplerYcbcrConversionComponents;
      VkSamplerYcbcrModelConversion    suggestedYcbcrModel;
      VkSamplerYcbcrRange              suggestedYcbcrRange;
      VkChromaLocation                 suggestedXChromaOffset;
      VkChromaLocation                 suggestedYChromaOffset;
  } VkBufferCollectionPropertiesFUCHSIA;
  
  typedef struct VkImageFormatConstraintsInfoFUCHSIA {
      VkStructureType                         sType;
      const void*                             pNext;
      VkImageCreateInfo                       imageCreateInfo;
      VkFormatFeatureFlags                    requiredFormatFeatures;
      VkImageFormatConstraintsFlagsFUCHSIA    flags;
      uint64_t                                sysmemPixelFormat;
      uint32_t                                colorSpaceCount;
      const VkSysmemColorSpaceFUCHSIA*        pColorSpaces;
  } VkImageFormatConstraintsInfoFUCHSIA;
  
  typedef struct VkImageConstraintsInfoFUCHSIA {
      VkStructureType                               sType;
      const void*                                   pNext;
      uint32_t                                      formatConstraintsCount;
      const VkImageFormatConstraintsInfoFUCHSIA*    pFormatConstraints;
      VkBufferCollectionConstraintsInfoFUCHSIA      bufferCollectionConstraints;
      VkImageConstraintsInfoFlagsFUCHSIA            flags;
  } VkImageConstraintsInfoFUCHSIA;
  
  typedef VkResult (VKAPI_PTR *PFN_vkCreateBufferCollectionFUCHSIA)(VkDevice device, const VkBufferCollectionCreateInfoFUCHSIA* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBufferCollectionFUCHSIA* pCollection);
  typedef VkResult (VKAPI_PTR *PFN_vkSetBufferCollectionImageConstraintsFUCHSIA)(VkDevice device, VkBufferCollectionFUCHSIA collection, const VkImageConstraintsInfoFUCHSIA* pImageConstraintsInfo);
  typedef VkResult (VKAPI_PTR *PFN_vkSetBufferCollectionBufferConstraintsFUCHSIA)(VkDevice device, VkBufferCollectionFUCHSIA collection, const VkBufferConstraintsInfoFUCHSIA* pBufferConstraintsInfo);
  typedef void (VKAPI_PTR *PFN_vkDestroyBufferCollectionFUCHSIA)(VkDevice device, VkBufferCollectionFUCHSIA collection, const VkAllocationCallbacks* pAllocator);
  typedef VkResult (VKAPI_PTR *PFN_vkGetBufferCollectionPropertiesFUCHSIA)(VkDevice device, VkBufferCollectionFUCHSIA collection, VkBufferCollectionPropertiesFUCHSIA* pProperties);
  
  #ifndef VK_NO_PROTOTYPES
  VKAPI_ATTR VkResult VKAPI_CALL vkCreateBufferCollectionFUCHSIA(
      VkDevice                                    device,
      const VkBufferCollectionCreateInfoFUCHSIA*  pCreateInfo,
      const VkAllocationCallbacks*                pAllocator,
      VkBufferCollectionFUCHSIA*                  pCollection);
  
  VKAPI_ATTR VkResult VKAPI_CALL vkSetBufferCollectionImageConstraintsFUCHSIA(
      VkDevice                                    device,
      VkBufferCollectionFUCHSIA                   collection,
      const VkImageConstraintsInfoFUCHSIA*        pImageConstraintsInfo);
  
  VKAPI_ATTR VkResult VKAPI_CALL vkSetBufferCollectionBufferConstraintsFUCHSIA(
      VkDevice                                    device,
      VkBufferCollectionFUCHSIA                   collection,
      const VkBufferConstraintsInfoFUCHSIA*       pBufferConstraintsInfo);
  
  VKAPI_ATTR void VKAPI_CALL vkDestroyBufferCollectionFUCHSIA(
      VkDevice                                    device,
      VkBufferCollectionFUCHSIA                   collection,
      const VkAllocationCallbacks*                pAllocator);
  
  VKAPI_ATTR VkResult VKAPI_CALL vkGetBufferCollectionPropertiesFUCHSIA(
      VkDevice                                    device,
      VkBufferCollectionFUCHSIA                   collection,
      VkBufferCollectionPropertiesFUCHSIA*        pProperties);
  #endif
  
  #ifdef __cplusplus
  }
  #endif
  
  #endif
  