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
17extern "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"
26typedef VkFlags VkImagePipeSurfaceCreateFlagsFUCHSIA;
27typedef struct VkImagePipeSurfaceCreateInfoFUCHSIA {
28    VkStructureType                         sType;
29    const void*                             pNext;
30    VkImagePipeSurfaceCreateFlagsFUCHSIA    flags;
31    zx_handle_t                             imagePipeHandle;
32} VkImagePipeSurfaceCreateInfoFUCHSIA;
33
34typedef VkResult (VKAPI_PTR *PFN_vkCreateImagePipeSurfaceFUCHSIA)(VkInstance instance, const VkImagePipeSurfaceCreateInfoFUCHSIA* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
35
36#ifndef VK_NO_PROTOTYPES
37VKAPI_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"
49typedef struct VkImportMemoryZirconHandleInfoFUCHSIA {
50    VkStructureType                       sType;
51    const void*                           pNext;
52    VkExternalMemoryHandleTypeFlagBits    handleType;
53    zx_handle_t                           handle;
54} VkImportMemoryZirconHandleInfoFUCHSIA;
55
56typedef struct VkMemoryZirconHandlePropertiesFUCHSIA {
57    VkStructureType    sType;
58    void*              pNext;
59    uint32_t           memoryTypeBits;
60} VkMemoryZirconHandlePropertiesFUCHSIA;
61
62typedef struct VkMemoryGetZirconHandleInfoFUCHSIA {
63    VkStructureType                       sType;
64    const void*                           pNext;
65    VkDeviceMemory                        memory;
66    VkExternalMemoryHandleTypeFlagBits    handleType;
67} VkMemoryGetZirconHandleInfoFUCHSIA;
68
69typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryZirconHandleFUCHSIA)(VkDevice device, const VkMemoryGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo, zx_handle_t* pZirconHandle);
70typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryZirconHandlePropertiesFUCHSIA)(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, zx_handle_t zirconHandle, VkMemoryZirconHandlePropertiesFUCHSIA* pMemoryZirconHandleProperties);
71
72#ifndef VK_NO_PROTOTYPES
73VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryZirconHandleFUCHSIA(
74    VkDevice                                    device,
75    const VkMemoryGetZirconHandleInfoFUCHSIA*   pGetZirconHandleInfo,
76    zx_handle_t*                                pZirconHandle);
77
78VKAPI_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"
90typedef 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
99typedef struct VkSemaphoreGetZirconHandleInfoFUCHSIA {
100    VkStructureType                          sType;
101    const void*                              pNext;
102    VkSemaphore                              semaphore;
103    VkExternalSemaphoreHandleTypeFlagBits    handleType;
104} VkSemaphoreGetZirconHandleInfoFUCHSIA;
105
106typedef VkResult (VKAPI_PTR *PFN_vkImportSemaphoreZirconHandleFUCHSIA)(VkDevice device, const VkImportSemaphoreZirconHandleInfoFUCHSIA* pImportSemaphoreZirconHandleInfo);
107typedef VkResult (VKAPI_PTR *PFN_vkGetSemaphoreZirconHandleFUCHSIA)(VkDevice device, const VkSemaphoreGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo, zx_handle_t* pZirconHandle);
108
109#ifndef VK_NO_PROTOTYPES
110VKAPI_ATTR VkResult VKAPI_CALL vkImportSemaphoreZirconHandleFUCHSIA(
111    VkDevice                                    device,
112    const VkImportSemaphoreZirconHandleInfoFUCHSIA* pImportSemaphoreZirconHandleInfo);
113
114VKAPI_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
123VK_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"
126typedef VkFlags VkImageFormatConstraintsFlagsFUCHSIA;
127
128typedef 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;
136typedef VkFlags VkImageConstraintsInfoFlagsFUCHSIA;
137typedef struct VkBufferCollectionCreateInfoFUCHSIA {
138    VkStructureType    sType;
139    const void*        pNext;
140    zx_handle_t        collectionToken;
141} VkBufferCollectionCreateInfoFUCHSIA;
142
143typedef struct VkImportMemoryBufferCollectionFUCHSIA {
144    VkStructureType              sType;
145    const void*                  pNext;
146    VkBufferCollectionFUCHSIA    collection;
147    uint32_t                     index;
148} VkImportMemoryBufferCollectionFUCHSIA;
149
150typedef struct VkBufferCollectionImageCreateInfoFUCHSIA {
151    VkStructureType              sType;
152    const void*                  pNext;
153    VkBufferCollectionFUCHSIA    collection;
154    uint32_t                     index;
155} VkBufferCollectionImageCreateInfoFUCHSIA;
156
157typedef 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
167typedef struct VkBufferConstraintsInfoFUCHSIA {
168    VkStructureType                             sType;
169    const void*                                 pNext;
170    VkBufferCreateInfo                          createInfo;
171    VkFormatFeatureFlags                        requiredFormatFeatures;
172    VkBufferCollectionConstraintsInfoFUCHSIA    bufferCollectionConstraints;
173} VkBufferConstraintsInfoFUCHSIA;
174
175typedef struct VkBufferCollectionBufferCreateInfoFUCHSIA {
176    VkStructureType              sType;
177    const void*                  pNext;
178    VkBufferCollectionFUCHSIA    collection;
179    uint32_t                     index;
180} VkBufferCollectionBufferCreateInfoFUCHSIA;
181
182typedef struct VkSysmemColorSpaceFUCHSIA {
183    VkStructureType    sType;
184    const void*        pNext;
185    uint32_t           colorSpace;
186} VkSysmemColorSpaceFUCHSIA;
187
188typedef 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
204typedef 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
215typedef 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
224typedef VkResult (VKAPI_PTR *PFN_vkCreateBufferCollectionFUCHSIA)(VkDevice device, const VkBufferCollectionCreateInfoFUCHSIA* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBufferCollectionFUCHSIA* pCollection);
225typedef VkResult (VKAPI_PTR *PFN_vkSetBufferCollectionImageConstraintsFUCHSIA)(VkDevice device, VkBufferCollectionFUCHSIA collection, const VkImageConstraintsInfoFUCHSIA* pImageConstraintsInfo);
226typedef VkResult (VKAPI_PTR *PFN_vkSetBufferCollectionBufferConstraintsFUCHSIA)(VkDevice device, VkBufferCollectionFUCHSIA collection, const VkBufferConstraintsInfoFUCHSIA* pBufferConstraintsInfo);
227typedef void (VKAPI_PTR *PFN_vkDestroyBufferCollectionFUCHSIA)(VkDevice device, VkBufferCollectionFUCHSIA collection, const VkAllocationCallbacks* pAllocator);
228typedef VkResult (VKAPI_PTR *PFN_vkGetBufferCollectionPropertiesFUCHSIA)(VkDevice device, VkBufferCollectionFUCHSIA collection, VkBufferCollectionPropertiesFUCHSIA* pProperties);
229
230#ifndef VK_NO_PROTOTYPES
231VKAPI_ATTR VkResult VKAPI_CALL vkCreateBufferCollectionFUCHSIA(
232    VkDevice                                    device,
233    const VkBufferCollectionCreateInfoFUCHSIA*  pCreateInfo,
234    const VkAllocationCallbacks*                pAllocator,
235    VkBufferCollectionFUCHSIA*                  pCollection);
236
237VKAPI_ATTR VkResult VKAPI_CALL vkSetBufferCollectionImageConstraintsFUCHSIA(
238    VkDevice                                    device,
239    VkBufferCollectionFUCHSIA                   collection,
240    const VkImageConstraintsInfoFUCHSIA*        pImageConstraintsInfo);
241
242VKAPI_ATTR VkResult VKAPI_CALL vkSetBufferCollectionBufferConstraintsFUCHSIA(
243    VkDevice                                    device,
244    VkBufferCollectionFUCHSIA                   collection,
245    const VkBufferConstraintsInfoFUCHSIA*       pBufferConstraintsInfo);
246
247VKAPI_ATTR void VKAPI_CALL vkDestroyBufferCollectionFUCHSIA(
248    VkDevice                                    device,
249    VkBufferCollectionFUCHSIA                   collection,
250    const VkAllocationCallbacks*                pAllocator);
251
252VKAPI_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