1#ifndef VULKAN_FUCHSIA_H_
2#define VULKAN_FUCHSIA_H_ 1
3
4/*
5** Copyright 2015-2021 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"
122
123typedef enum VkImageFormatConstraintsFlagBitsFUCHSIA {
124    VK_IMAGE_FORMAT_CONSTRAINTS_FLAG_BITS_MAX_ENUM_FUCHSIA = 0x7FFFFFFF
125} VkImageFormatConstraintsFlagBitsFUCHSIA;
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