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