101e04c3fSmrg#ifndef VULKAN_FUCHSIA_H_
201e04c3fSmrg#define VULKAN_FUCHSIA_H_ 1
301e04c3fSmrg
401e04c3fSmrg/*
57ec681f3Smrg** Copyright 2015-2021 The Khronos Group Inc.
601e04c3fSmrg**
77ec681f3Smrg** SPDX-License-Identifier: Apache-2.0
801e04c3fSmrg*/
901e04c3fSmrg
1001e04c3fSmrg/*
1101e04c3fSmrg** This header is generated from the Khronos Vulkan XML API Registry.
1201e04c3fSmrg**
1301e04c3fSmrg*/
1401e04c3fSmrg
1501e04c3fSmrg
167ec681f3Smrg#ifdef __cplusplus
177ec681f3Smrgextern "C" {
187ec681f3Smrg#endif
197ec681f3Smrg
207ec681f3Smrg
21ed98bd31Smaya
2201e04c3fSmrg#define VK_FUCHSIA_imagepipe_surface 1
2301e04c3fSmrg#define VK_FUCHSIA_IMAGEPIPE_SURFACE_SPEC_VERSION 1
2401e04c3fSmrg#define VK_FUCHSIA_IMAGEPIPE_SURFACE_EXTENSION_NAME "VK_FUCHSIA_imagepipe_surface"
2501e04c3fSmrgtypedef VkFlags VkImagePipeSurfaceCreateFlagsFUCHSIA;
2601e04c3fSmrgtypedef struct VkImagePipeSurfaceCreateInfoFUCHSIA {
2701e04c3fSmrg    VkStructureType                         sType;
2801e04c3fSmrg    const void*                             pNext;
2901e04c3fSmrg    VkImagePipeSurfaceCreateFlagsFUCHSIA    flags;
3001e04c3fSmrg    zx_handle_t                             imagePipeHandle;
3101e04c3fSmrg} VkImagePipeSurfaceCreateInfoFUCHSIA;
3201e04c3fSmrg
3301e04c3fSmrgtypedef VkResult (VKAPI_PTR *PFN_vkCreateImagePipeSurfaceFUCHSIA)(VkInstance instance, const VkImagePipeSurfaceCreateInfoFUCHSIA* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
3401e04c3fSmrg
3501e04c3fSmrg#ifndef VK_NO_PROTOTYPES
3601e04c3fSmrgVKAPI_ATTR VkResult VKAPI_CALL vkCreateImagePipeSurfaceFUCHSIA(
3701e04c3fSmrg    VkInstance                                  instance,
3801e04c3fSmrg    const VkImagePipeSurfaceCreateInfoFUCHSIA*  pCreateInfo,
3901e04c3fSmrg    const VkAllocationCallbacks*                pAllocator,
4001e04c3fSmrg    VkSurfaceKHR*                               pSurface);
4101e04c3fSmrg#endif
4201e04c3fSmrg
437ec681f3Smrg
447ec681f3Smrg#define VK_FUCHSIA_external_memory 1
457ec681f3Smrg#define VK_FUCHSIA_EXTERNAL_MEMORY_SPEC_VERSION 1
467ec681f3Smrg#define VK_FUCHSIA_EXTERNAL_MEMORY_EXTENSION_NAME "VK_FUCHSIA_external_memory"
477ec681f3Smrgtypedef struct VkImportMemoryZirconHandleInfoFUCHSIA {
487ec681f3Smrg    VkStructureType                       sType;
497ec681f3Smrg    const void*                           pNext;
507ec681f3Smrg    VkExternalMemoryHandleTypeFlagBits    handleType;
517ec681f3Smrg    zx_handle_t                           handle;
527ec681f3Smrg} VkImportMemoryZirconHandleInfoFUCHSIA;
537ec681f3Smrg
547ec681f3Smrgtypedef struct VkMemoryZirconHandlePropertiesFUCHSIA {
557ec681f3Smrg    VkStructureType    sType;
567ec681f3Smrg    void*              pNext;
577ec681f3Smrg    uint32_t           memoryTypeBits;
587ec681f3Smrg} VkMemoryZirconHandlePropertiesFUCHSIA;
597ec681f3Smrg
607ec681f3Smrgtypedef struct VkMemoryGetZirconHandleInfoFUCHSIA {
617ec681f3Smrg    VkStructureType                       sType;
627ec681f3Smrg    const void*                           pNext;
637ec681f3Smrg    VkDeviceMemory                        memory;
647ec681f3Smrg    VkExternalMemoryHandleTypeFlagBits    handleType;
657ec681f3Smrg} VkMemoryGetZirconHandleInfoFUCHSIA;
667ec681f3Smrg
677ec681f3Smrgtypedef VkResult (VKAPI_PTR *PFN_vkGetMemoryZirconHandleFUCHSIA)(VkDevice device, const VkMemoryGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo, zx_handle_t* pZirconHandle);
687ec681f3Smrgtypedef VkResult (VKAPI_PTR *PFN_vkGetMemoryZirconHandlePropertiesFUCHSIA)(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, zx_handle_t zirconHandle, VkMemoryZirconHandlePropertiesFUCHSIA* pMemoryZirconHandleProperties);
697ec681f3Smrg
707ec681f3Smrg#ifndef VK_NO_PROTOTYPES
717ec681f3SmrgVKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryZirconHandleFUCHSIA(
727ec681f3Smrg    VkDevice                                    device,
737ec681f3Smrg    const VkMemoryGetZirconHandleInfoFUCHSIA*   pGetZirconHandleInfo,
747ec681f3Smrg    zx_handle_t*                                pZirconHandle);
757ec681f3Smrg
767ec681f3SmrgVKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryZirconHandlePropertiesFUCHSIA(
777ec681f3Smrg    VkDevice                                    device,
787ec681f3Smrg    VkExternalMemoryHandleTypeFlagBits          handleType,
797ec681f3Smrg    zx_handle_t                                 zirconHandle,
807ec681f3Smrg    VkMemoryZirconHandlePropertiesFUCHSIA*      pMemoryZirconHandleProperties);
817ec681f3Smrg#endif
827ec681f3Smrg
837ec681f3Smrg
847ec681f3Smrg#define VK_FUCHSIA_external_semaphore 1
857ec681f3Smrg#define VK_FUCHSIA_EXTERNAL_SEMAPHORE_SPEC_VERSION 1
867ec681f3Smrg#define VK_FUCHSIA_EXTERNAL_SEMAPHORE_EXTENSION_NAME "VK_FUCHSIA_external_semaphore"
877ec681f3Smrgtypedef struct VkImportSemaphoreZirconHandleInfoFUCHSIA {
887ec681f3Smrg    VkStructureType                          sType;
897ec681f3Smrg    const void*                              pNext;
907ec681f3Smrg    VkSemaphore                              semaphore;
917ec681f3Smrg    VkSemaphoreImportFlags                   flags;
927ec681f3Smrg    VkExternalSemaphoreHandleTypeFlagBits    handleType;
937ec681f3Smrg    zx_handle_t                              zirconHandle;
947ec681f3Smrg} VkImportSemaphoreZirconHandleInfoFUCHSIA;
957ec681f3Smrg
967ec681f3Smrgtypedef struct VkSemaphoreGetZirconHandleInfoFUCHSIA {
977ec681f3Smrg    VkStructureType                          sType;
987ec681f3Smrg    const void*                              pNext;
997ec681f3Smrg    VkSemaphore                              semaphore;
1007ec681f3Smrg    VkExternalSemaphoreHandleTypeFlagBits    handleType;
1017ec681f3Smrg} VkSemaphoreGetZirconHandleInfoFUCHSIA;
1027ec681f3Smrg
1037ec681f3Smrgtypedef VkResult (VKAPI_PTR *PFN_vkImportSemaphoreZirconHandleFUCHSIA)(VkDevice device, const VkImportSemaphoreZirconHandleInfoFUCHSIA* pImportSemaphoreZirconHandleInfo);
1047ec681f3Smrgtypedef VkResult (VKAPI_PTR *PFN_vkGetSemaphoreZirconHandleFUCHSIA)(VkDevice device, const VkSemaphoreGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo, zx_handle_t* pZirconHandle);
1057ec681f3Smrg
1067ec681f3Smrg#ifndef VK_NO_PROTOTYPES
1077ec681f3SmrgVKAPI_ATTR VkResult VKAPI_CALL vkImportSemaphoreZirconHandleFUCHSIA(
1087ec681f3Smrg    VkDevice                                    device,
1097ec681f3Smrg    const VkImportSemaphoreZirconHandleInfoFUCHSIA* pImportSemaphoreZirconHandleInfo);
1107ec681f3Smrg
1117ec681f3SmrgVKAPI_ATTR VkResult VKAPI_CALL vkGetSemaphoreZirconHandleFUCHSIA(
1127ec681f3Smrg    VkDevice                                    device,
1137ec681f3Smrg    const VkSemaphoreGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo,
1147ec681f3Smrg    zx_handle_t*                                pZirconHandle);
1157ec681f3Smrg#endif
1167ec681f3Smrg
1177ec681f3Smrg
1187ec681f3Smrg#define VK_FUCHSIA_buffer_collection 1
1197ec681f3SmrgVK_DEFINE_NON_DISPATCHABLE_HANDLE(VkBufferCollectionFUCHSIA)
1207ec681f3Smrg#define VK_FUCHSIA_BUFFER_COLLECTION_SPEC_VERSION 2
1217ec681f3Smrg#define VK_FUCHSIA_BUFFER_COLLECTION_EXTENSION_NAME "VK_FUCHSIA_buffer_collection"
1227ec681f3Smrg
1237ec681f3Smrgtypedef enum VkImageFormatConstraintsFlagBitsFUCHSIA {
1247ec681f3Smrg    VK_IMAGE_FORMAT_CONSTRAINTS_FLAG_BITS_MAX_ENUM_FUCHSIA = 0x7FFFFFFF
1257ec681f3Smrg} VkImageFormatConstraintsFlagBitsFUCHSIA;
1267ec681f3Smrgtypedef VkFlags VkImageFormatConstraintsFlagsFUCHSIA;
1277ec681f3Smrg
1287ec681f3Smrgtypedef enum VkImageConstraintsInfoFlagBitsFUCHSIA {
1297ec681f3Smrg    VK_IMAGE_CONSTRAINTS_INFO_CPU_READ_RARELY_FUCHSIA = 0x00000001,
1307ec681f3Smrg    VK_IMAGE_CONSTRAINTS_INFO_CPU_READ_OFTEN_FUCHSIA = 0x00000002,
1317ec681f3Smrg    VK_IMAGE_CONSTRAINTS_INFO_CPU_WRITE_RARELY_FUCHSIA = 0x00000004,
1327ec681f3Smrg    VK_IMAGE_CONSTRAINTS_INFO_CPU_WRITE_OFTEN_FUCHSIA = 0x00000008,
1337ec681f3Smrg    VK_IMAGE_CONSTRAINTS_INFO_PROTECTED_OPTIONAL_FUCHSIA = 0x00000010,
1347ec681f3Smrg    VK_IMAGE_CONSTRAINTS_INFO_FLAG_BITS_MAX_ENUM_FUCHSIA = 0x7FFFFFFF
1357ec681f3Smrg} VkImageConstraintsInfoFlagBitsFUCHSIA;
1367ec681f3Smrgtypedef VkFlags VkImageConstraintsInfoFlagsFUCHSIA;
1377ec681f3Smrgtypedef struct VkBufferCollectionCreateInfoFUCHSIA {
1387ec681f3Smrg    VkStructureType    sType;
1397ec681f3Smrg    const void*        pNext;
1407ec681f3Smrg    zx_handle_t        collectionToken;
1417ec681f3Smrg} VkBufferCollectionCreateInfoFUCHSIA;
1427ec681f3Smrg
1437ec681f3Smrgtypedef struct VkImportMemoryBufferCollectionFUCHSIA {
1447ec681f3Smrg    VkStructureType              sType;
1457ec681f3Smrg    const void*                  pNext;
1467ec681f3Smrg    VkBufferCollectionFUCHSIA    collection;
1477ec681f3Smrg    uint32_t                     index;
1487ec681f3Smrg} VkImportMemoryBufferCollectionFUCHSIA;
1497ec681f3Smrg
1507ec681f3Smrgtypedef struct VkBufferCollectionImageCreateInfoFUCHSIA {
1517ec681f3Smrg    VkStructureType              sType;
1527ec681f3Smrg    const void*                  pNext;
1537ec681f3Smrg    VkBufferCollectionFUCHSIA    collection;
1547ec681f3Smrg    uint32_t                     index;
1557ec681f3Smrg} VkBufferCollectionImageCreateInfoFUCHSIA;
1567ec681f3Smrg
1577ec681f3Smrgtypedef struct VkBufferCollectionConstraintsInfoFUCHSIA {
1587ec681f3Smrg    VkStructureType    sType;
1597ec681f3Smrg    const void*        pNext;
1607ec681f3Smrg    uint32_t           minBufferCount;
1617ec681f3Smrg    uint32_t           maxBufferCount;
1627ec681f3Smrg    uint32_t           minBufferCountForCamping;
1637ec681f3Smrg    uint32_t           minBufferCountForDedicatedSlack;
1647ec681f3Smrg    uint32_t           minBufferCountForSharedSlack;
1657ec681f3Smrg} VkBufferCollectionConstraintsInfoFUCHSIA;
1667ec681f3Smrg
1677ec681f3Smrgtypedef struct VkBufferConstraintsInfoFUCHSIA {
1687ec681f3Smrg    VkStructureType                             sType;
1697ec681f3Smrg    const void*                                 pNext;
1707ec681f3Smrg    VkBufferCreateInfo                          createInfo;
1717ec681f3Smrg    VkFormatFeatureFlags                        requiredFormatFeatures;
1727ec681f3Smrg    VkBufferCollectionConstraintsInfoFUCHSIA    bufferCollectionConstraints;
1737ec681f3Smrg} VkBufferConstraintsInfoFUCHSIA;
1747ec681f3Smrg
1757ec681f3Smrgtypedef struct VkBufferCollectionBufferCreateInfoFUCHSIA {
1767ec681f3Smrg    VkStructureType              sType;
1777ec681f3Smrg    const void*                  pNext;
1787ec681f3Smrg    VkBufferCollectionFUCHSIA    collection;
1797ec681f3Smrg    uint32_t                     index;
1807ec681f3Smrg} VkBufferCollectionBufferCreateInfoFUCHSIA;
1817ec681f3Smrg
1827ec681f3Smrgtypedef struct VkSysmemColorSpaceFUCHSIA {
1837ec681f3Smrg    VkStructureType    sType;
1847ec681f3Smrg    const void*        pNext;
1857ec681f3Smrg    uint32_t           colorSpace;
1867ec681f3Smrg} VkSysmemColorSpaceFUCHSIA;
1877ec681f3Smrg
1887ec681f3Smrgtypedef struct VkBufferCollectionPropertiesFUCHSIA {
1897ec681f3Smrg    VkStructureType                  sType;
1907ec681f3Smrg    void*                            pNext;
1917ec681f3Smrg    uint32_t                         memoryTypeBits;
1927ec681f3Smrg    uint32_t                         bufferCount;
1937ec681f3Smrg    uint32_t                         createInfoIndex;
1947ec681f3Smrg    uint64_t                         sysmemPixelFormat;
1957ec681f3Smrg    VkFormatFeatureFlags             formatFeatures;
1967ec681f3Smrg    VkSysmemColorSpaceFUCHSIA        sysmemColorSpaceIndex;
1977ec681f3Smrg    VkComponentMapping               samplerYcbcrConversionComponents;
1987ec681f3Smrg    VkSamplerYcbcrModelConversion    suggestedYcbcrModel;
1997ec681f3Smrg    VkSamplerYcbcrRange              suggestedYcbcrRange;
2007ec681f3Smrg    VkChromaLocation                 suggestedXChromaOffset;
2017ec681f3Smrg    VkChromaLocation                 suggestedYChromaOffset;
2027ec681f3Smrg} VkBufferCollectionPropertiesFUCHSIA;
2037ec681f3Smrg
2047ec681f3Smrgtypedef struct VkImageFormatConstraintsInfoFUCHSIA {
2057ec681f3Smrg    VkStructureType                         sType;
2067ec681f3Smrg    const void*                             pNext;
2077ec681f3Smrg    VkImageCreateInfo                       imageCreateInfo;
2087ec681f3Smrg    VkFormatFeatureFlags                    requiredFormatFeatures;
2097ec681f3Smrg    VkImageFormatConstraintsFlagsFUCHSIA    flags;
2107ec681f3Smrg    uint64_t                                sysmemPixelFormat;
2117ec681f3Smrg    uint32_t                                colorSpaceCount;
2127ec681f3Smrg    const VkSysmemColorSpaceFUCHSIA*        pColorSpaces;
2137ec681f3Smrg} VkImageFormatConstraintsInfoFUCHSIA;
2147ec681f3Smrg
2157ec681f3Smrgtypedef struct VkImageConstraintsInfoFUCHSIA {
2167ec681f3Smrg    VkStructureType                               sType;
2177ec681f3Smrg    const void*                                   pNext;
2187ec681f3Smrg    uint32_t                                      formatConstraintsCount;
2197ec681f3Smrg    const VkImageFormatConstraintsInfoFUCHSIA*    pFormatConstraints;
2207ec681f3Smrg    VkBufferCollectionConstraintsInfoFUCHSIA      bufferCollectionConstraints;
2217ec681f3Smrg    VkImageConstraintsInfoFlagsFUCHSIA            flags;
2227ec681f3Smrg} VkImageConstraintsInfoFUCHSIA;
2237ec681f3Smrg
2247ec681f3Smrgtypedef VkResult (VKAPI_PTR *PFN_vkCreateBufferCollectionFUCHSIA)(VkDevice device, const VkBufferCollectionCreateInfoFUCHSIA* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBufferCollectionFUCHSIA* pCollection);
2257ec681f3Smrgtypedef VkResult (VKAPI_PTR *PFN_vkSetBufferCollectionImageConstraintsFUCHSIA)(VkDevice device, VkBufferCollectionFUCHSIA collection, const VkImageConstraintsInfoFUCHSIA* pImageConstraintsInfo);
2267ec681f3Smrgtypedef VkResult (VKAPI_PTR *PFN_vkSetBufferCollectionBufferConstraintsFUCHSIA)(VkDevice device, VkBufferCollectionFUCHSIA collection, const VkBufferConstraintsInfoFUCHSIA* pBufferConstraintsInfo);
2277ec681f3Smrgtypedef void (VKAPI_PTR *PFN_vkDestroyBufferCollectionFUCHSIA)(VkDevice device, VkBufferCollectionFUCHSIA collection, const VkAllocationCallbacks* pAllocator);
2287ec681f3Smrgtypedef VkResult (VKAPI_PTR *PFN_vkGetBufferCollectionPropertiesFUCHSIA)(VkDevice device, VkBufferCollectionFUCHSIA collection, VkBufferCollectionPropertiesFUCHSIA* pProperties);
2297ec681f3Smrg
2307ec681f3Smrg#ifndef VK_NO_PROTOTYPES
2317ec681f3SmrgVKAPI_ATTR VkResult VKAPI_CALL vkCreateBufferCollectionFUCHSIA(
2327ec681f3Smrg    VkDevice                                    device,
2337ec681f3Smrg    const VkBufferCollectionCreateInfoFUCHSIA*  pCreateInfo,
2347ec681f3Smrg    const VkAllocationCallbacks*                pAllocator,
2357ec681f3Smrg    VkBufferCollectionFUCHSIA*                  pCollection);
2367ec681f3Smrg
2377ec681f3SmrgVKAPI_ATTR VkResult VKAPI_CALL vkSetBufferCollectionImageConstraintsFUCHSIA(
2387ec681f3Smrg    VkDevice                                    device,
2397ec681f3Smrg    VkBufferCollectionFUCHSIA                   collection,
2407ec681f3Smrg    const VkImageConstraintsInfoFUCHSIA*        pImageConstraintsInfo);
2417ec681f3Smrg
2427ec681f3SmrgVKAPI_ATTR VkResult VKAPI_CALL vkSetBufferCollectionBufferConstraintsFUCHSIA(
2437ec681f3Smrg    VkDevice                                    device,
2447ec681f3Smrg    VkBufferCollectionFUCHSIA                   collection,
2457ec681f3Smrg    const VkBufferConstraintsInfoFUCHSIA*       pBufferConstraintsInfo);
2467ec681f3Smrg
2477ec681f3SmrgVKAPI_ATTR void VKAPI_CALL vkDestroyBufferCollectionFUCHSIA(
2487ec681f3Smrg    VkDevice                                    device,
2497ec681f3Smrg    VkBufferCollectionFUCHSIA                   collection,
2507ec681f3Smrg    const VkAllocationCallbacks*                pAllocator);
2517ec681f3Smrg
2527ec681f3SmrgVKAPI_ATTR VkResult VKAPI_CALL vkGetBufferCollectionPropertiesFUCHSIA(
2537ec681f3Smrg    VkDevice                                    device,
2547ec681f3Smrg    VkBufferCollectionFUCHSIA                   collection,
2557ec681f3Smrg    VkBufferCollectionPropertiesFUCHSIA*        pProperties);
2567ec681f3Smrg#endif
2577ec681f3Smrg
25801e04c3fSmrg#ifdef __cplusplus
25901e04c3fSmrg}
26001e04c3fSmrg#endif
26101e04c3fSmrg
26201e04c3fSmrg#endif
263