xref: /aosp_15_r20/external/vulkan-headers/include/vulkan/vulkan_metal.h (revision 902771965e4c6d39c75c62130a6a330c08b024db)
1*90277196SAndroid Build Coastguard Worker #ifndef VULKAN_METAL_H_
2*90277196SAndroid Build Coastguard Worker #define VULKAN_METAL_H_ 1
3*90277196SAndroid Build Coastguard Worker 
4*90277196SAndroid Build Coastguard Worker /*
5*90277196SAndroid Build Coastguard Worker ** Copyright 2015-2024 The Khronos Group Inc.
6*90277196SAndroid Build Coastguard Worker **
7*90277196SAndroid Build Coastguard Worker ** SPDX-License-Identifier: Apache-2.0
8*90277196SAndroid Build Coastguard Worker */
9*90277196SAndroid Build Coastguard Worker 
10*90277196SAndroid Build Coastguard Worker /*
11*90277196SAndroid Build Coastguard Worker ** This header is generated from the Khronos Vulkan XML API Registry.
12*90277196SAndroid Build Coastguard Worker **
13*90277196SAndroid Build Coastguard Worker */
14*90277196SAndroid Build Coastguard Worker 
15*90277196SAndroid Build Coastguard Worker 
16*90277196SAndroid Build Coastguard Worker #ifdef __cplusplus
17*90277196SAndroid Build Coastguard Worker extern "C" {
18*90277196SAndroid Build Coastguard Worker #endif
19*90277196SAndroid Build Coastguard Worker 
20*90277196SAndroid Build Coastguard Worker 
21*90277196SAndroid Build Coastguard Worker 
22*90277196SAndroid Build Coastguard Worker // VK_EXT_metal_surface is a preprocessor guard. Do not pass it to API calls.
23*90277196SAndroid Build Coastguard Worker #define VK_EXT_metal_surface 1
24*90277196SAndroid Build Coastguard Worker #ifdef __OBJC__
25*90277196SAndroid Build Coastguard Worker @class CAMetalLayer;
26*90277196SAndroid Build Coastguard Worker #else
27*90277196SAndroid Build Coastguard Worker typedef void CAMetalLayer;
28*90277196SAndroid Build Coastguard Worker #endif
29*90277196SAndroid Build Coastguard Worker 
30*90277196SAndroid Build Coastguard Worker #define VK_EXT_METAL_SURFACE_SPEC_VERSION 1
31*90277196SAndroid Build Coastguard Worker #define VK_EXT_METAL_SURFACE_EXTENSION_NAME "VK_EXT_metal_surface"
32*90277196SAndroid Build Coastguard Worker typedef VkFlags VkMetalSurfaceCreateFlagsEXT;
33*90277196SAndroid Build Coastguard Worker typedef struct VkMetalSurfaceCreateInfoEXT {
34*90277196SAndroid Build Coastguard Worker     VkStructureType                 sType;
35*90277196SAndroid Build Coastguard Worker     const void*                     pNext;
36*90277196SAndroid Build Coastguard Worker     VkMetalSurfaceCreateFlagsEXT    flags;
37*90277196SAndroid Build Coastguard Worker     const CAMetalLayer*             pLayer;
38*90277196SAndroid Build Coastguard Worker } VkMetalSurfaceCreateInfoEXT;
39*90277196SAndroid Build Coastguard Worker 
40*90277196SAndroid Build Coastguard Worker typedef VkResult (VKAPI_PTR *PFN_vkCreateMetalSurfaceEXT)(VkInstance instance, const VkMetalSurfaceCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
41*90277196SAndroid Build Coastguard Worker 
42*90277196SAndroid Build Coastguard Worker #ifndef VK_NO_PROTOTYPES
43*90277196SAndroid Build Coastguard Worker VKAPI_ATTR VkResult VKAPI_CALL vkCreateMetalSurfaceEXT(
44*90277196SAndroid Build Coastguard Worker     VkInstance                                  instance,
45*90277196SAndroid Build Coastguard Worker     const VkMetalSurfaceCreateInfoEXT*          pCreateInfo,
46*90277196SAndroid Build Coastguard Worker     const VkAllocationCallbacks*                pAllocator,
47*90277196SAndroid Build Coastguard Worker     VkSurfaceKHR*                               pSurface);
48*90277196SAndroid Build Coastguard Worker #endif
49*90277196SAndroid Build Coastguard Worker 
50*90277196SAndroid Build Coastguard Worker 
51*90277196SAndroid Build Coastguard Worker // VK_EXT_metal_objects is a preprocessor guard. Do not pass it to API calls.
52*90277196SAndroid Build Coastguard Worker #define VK_EXT_metal_objects 1
53*90277196SAndroid Build Coastguard Worker #ifdef __OBJC__
54*90277196SAndroid Build Coastguard Worker @protocol MTLDevice;
55*90277196SAndroid Build Coastguard Worker typedef __unsafe_unretained id<MTLDevice> MTLDevice_id;
56*90277196SAndroid Build Coastguard Worker #else
57*90277196SAndroid Build Coastguard Worker typedef void* MTLDevice_id;
58*90277196SAndroid Build Coastguard Worker #endif
59*90277196SAndroid Build Coastguard Worker 
60*90277196SAndroid Build Coastguard Worker #ifdef __OBJC__
61*90277196SAndroid Build Coastguard Worker @protocol MTLCommandQueue;
62*90277196SAndroid Build Coastguard Worker typedef __unsafe_unretained id<MTLCommandQueue> MTLCommandQueue_id;
63*90277196SAndroid Build Coastguard Worker #else
64*90277196SAndroid Build Coastguard Worker typedef void* MTLCommandQueue_id;
65*90277196SAndroid Build Coastguard Worker #endif
66*90277196SAndroid Build Coastguard Worker 
67*90277196SAndroid Build Coastguard Worker #ifdef __OBJC__
68*90277196SAndroid Build Coastguard Worker @protocol MTLBuffer;
69*90277196SAndroid Build Coastguard Worker typedef __unsafe_unretained id<MTLBuffer> MTLBuffer_id;
70*90277196SAndroid Build Coastguard Worker #else
71*90277196SAndroid Build Coastguard Worker typedef void* MTLBuffer_id;
72*90277196SAndroid Build Coastguard Worker #endif
73*90277196SAndroid Build Coastguard Worker 
74*90277196SAndroid Build Coastguard Worker #ifdef __OBJC__
75*90277196SAndroid Build Coastguard Worker @protocol MTLTexture;
76*90277196SAndroid Build Coastguard Worker typedef __unsafe_unretained id<MTLTexture> MTLTexture_id;
77*90277196SAndroid Build Coastguard Worker #else
78*90277196SAndroid Build Coastguard Worker typedef void* MTLTexture_id;
79*90277196SAndroid Build Coastguard Worker #endif
80*90277196SAndroid Build Coastguard Worker 
81*90277196SAndroid Build Coastguard Worker typedef struct __IOSurface* IOSurfaceRef;
82*90277196SAndroid Build Coastguard Worker #ifdef __OBJC__
83*90277196SAndroid Build Coastguard Worker @protocol MTLSharedEvent;
84*90277196SAndroid Build Coastguard Worker typedef __unsafe_unretained id<MTLSharedEvent> MTLSharedEvent_id;
85*90277196SAndroid Build Coastguard Worker #else
86*90277196SAndroid Build Coastguard Worker typedef void* MTLSharedEvent_id;
87*90277196SAndroid Build Coastguard Worker #endif
88*90277196SAndroid Build Coastguard Worker 
89*90277196SAndroid Build Coastguard Worker #define VK_EXT_METAL_OBJECTS_SPEC_VERSION 2
90*90277196SAndroid Build Coastguard Worker #define VK_EXT_METAL_OBJECTS_EXTENSION_NAME "VK_EXT_metal_objects"
91*90277196SAndroid Build Coastguard Worker 
92*90277196SAndroid Build Coastguard Worker typedef enum VkExportMetalObjectTypeFlagBitsEXT {
93*90277196SAndroid Build Coastguard Worker     VK_EXPORT_METAL_OBJECT_TYPE_METAL_DEVICE_BIT_EXT = 0x00000001,
94*90277196SAndroid Build Coastguard Worker     VK_EXPORT_METAL_OBJECT_TYPE_METAL_COMMAND_QUEUE_BIT_EXT = 0x00000002,
95*90277196SAndroid Build Coastguard Worker     VK_EXPORT_METAL_OBJECT_TYPE_METAL_BUFFER_BIT_EXT = 0x00000004,
96*90277196SAndroid Build Coastguard Worker     VK_EXPORT_METAL_OBJECT_TYPE_METAL_TEXTURE_BIT_EXT = 0x00000008,
97*90277196SAndroid Build Coastguard Worker     VK_EXPORT_METAL_OBJECT_TYPE_METAL_IOSURFACE_BIT_EXT = 0x00000010,
98*90277196SAndroid Build Coastguard Worker     VK_EXPORT_METAL_OBJECT_TYPE_METAL_SHARED_EVENT_BIT_EXT = 0x00000020,
99*90277196SAndroid Build Coastguard Worker     VK_EXPORT_METAL_OBJECT_TYPE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
100*90277196SAndroid Build Coastguard Worker } VkExportMetalObjectTypeFlagBitsEXT;
101*90277196SAndroid Build Coastguard Worker typedef VkFlags VkExportMetalObjectTypeFlagsEXT;
102*90277196SAndroid Build Coastguard Worker typedef struct VkExportMetalObjectCreateInfoEXT {
103*90277196SAndroid Build Coastguard Worker     VkStructureType                       sType;
104*90277196SAndroid Build Coastguard Worker     const void*                           pNext;
105*90277196SAndroid Build Coastguard Worker     VkExportMetalObjectTypeFlagBitsEXT    exportObjectType;
106*90277196SAndroid Build Coastguard Worker } VkExportMetalObjectCreateInfoEXT;
107*90277196SAndroid Build Coastguard Worker 
108*90277196SAndroid Build Coastguard Worker typedef struct VkExportMetalObjectsInfoEXT {
109*90277196SAndroid Build Coastguard Worker     VkStructureType    sType;
110*90277196SAndroid Build Coastguard Worker     const void*        pNext;
111*90277196SAndroid Build Coastguard Worker } VkExportMetalObjectsInfoEXT;
112*90277196SAndroid Build Coastguard Worker 
113*90277196SAndroid Build Coastguard Worker typedef struct VkExportMetalDeviceInfoEXT {
114*90277196SAndroid Build Coastguard Worker     VkStructureType    sType;
115*90277196SAndroid Build Coastguard Worker     const void*        pNext;
116*90277196SAndroid Build Coastguard Worker     MTLDevice_id       mtlDevice;
117*90277196SAndroid Build Coastguard Worker } VkExportMetalDeviceInfoEXT;
118*90277196SAndroid Build Coastguard Worker 
119*90277196SAndroid Build Coastguard Worker typedef struct VkExportMetalCommandQueueInfoEXT {
120*90277196SAndroid Build Coastguard Worker     VkStructureType       sType;
121*90277196SAndroid Build Coastguard Worker     const void*           pNext;
122*90277196SAndroid Build Coastguard Worker     VkQueue               queue;
123*90277196SAndroid Build Coastguard Worker     MTLCommandQueue_id    mtlCommandQueue;
124*90277196SAndroid Build Coastguard Worker } VkExportMetalCommandQueueInfoEXT;
125*90277196SAndroid Build Coastguard Worker 
126*90277196SAndroid Build Coastguard Worker typedef struct VkExportMetalBufferInfoEXT {
127*90277196SAndroid Build Coastguard Worker     VkStructureType    sType;
128*90277196SAndroid Build Coastguard Worker     const void*        pNext;
129*90277196SAndroid Build Coastguard Worker     VkDeviceMemory     memory;
130*90277196SAndroid Build Coastguard Worker     MTLBuffer_id       mtlBuffer;
131*90277196SAndroid Build Coastguard Worker } VkExportMetalBufferInfoEXT;
132*90277196SAndroid Build Coastguard Worker 
133*90277196SAndroid Build Coastguard Worker typedef struct VkImportMetalBufferInfoEXT {
134*90277196SAndroid Build Coastguard Worker     VkStructureType    sType;
135*90277196SAndroid Build Coastguard Worker     const void*        pNext;
136*90277196SAndroid Build Coastguard Worker     MTLBuffer_id       mtlBuffer;
137*90277196SAndroid Build Coastguard Worker } VkImportMetalBufferInfoEXT;
138*90277196SAndroid Build Coastguard Worker 
139*90277196SAndroid Build Coastguard Worker typedef struct VkExportMetalTextureInfoEXT {
140*90277196SAndroid Build Coastguard Worker     VkStructureType          sType;
141*90277196SAndroid Build Coastguard Worker     const void*              pNext;
142*90277196SAndroid Build Coastguard Worker     VkImage                  image;
143*90277196SAndroid Build Coastguard Worker     VkImageView              imageView;
144*90277196SAndroid Build Coastguard Worker     VkBufferView             bufferView;
145*90277196SAndroid Build Coastguard Worker     VkImageAspectFlagBits    plane;
146*90277196SAndroid Build Coastguard Worker     MTLTexture_id            mtlTexture;
147*90277196SAndroid Build Coastguard Worker } VkExportMetalTextureInfoEXT;
148*90277196SAndroid Build Coastguard Worker 
149*90277196SAndroid Build Coastguard Worker typedef struct VkImportMetalTextureInfoEXT {
150*90277196SAndroid Build Coastguard Worker     VkStructureType          sType;
151*90277196SAndroid Build Coastguard Worker     const void*              pNext;
152*90277196SAndroid Build Coastguard Worker     VkImageAspectFlagBits    plane;
153*90277196SAndroid Build Coastguard Worker     MTLTexture_id            mtlTexture;
154*90277196SAndroid Build Coastguard Worker } VkImportMetalTextureInfoEXT;
155*90277196SAndroid Build Coastguard Worker 
156*90277196SAndroid Build Coastguard Worker typedef struct VkExportMetalIOSurfaceInfoEXT {
157*90277196SAndroid Build Coastguard Worker     VkStructureType    sType;
158*90277196SAndroid Build Coastguard Worker     const void*        pNext;
159*90277196SAndroid Build Coastguard Worker     VkImage            image;
160*90277196SAndroid Build Coastguard Worker     IOSurfaceRef       ioSurface;
161*90277196SAndroid Build Coastguard Worker } VkExportMetalIOSurfaceInfoEXT;
162*90277196SAndroid Build Coastguard Worker 
163*90277196SAndroid Build Coastguard Worker typedef struct VkImportMetalIOSurfaceInfoEXT {
164*90277196SAndroid Build Coastguard Worker     VkStructureType    sType;
165*90277196SAndroid Build Coastguard Worker     const void*        pNext;
166*90277196SAndroid Build Coastguard Worker     IOSurfaceRef       ioSurface;
167*90277196SAndroid Build Coastguard Worker } VkImportMetalIOSurfaceInfoEXT;
168*90277196SAndroid Build Coastguard Worker 
169*90277196SAndroid Build Coastguard Worker typedef struct VkExportMetalSharedEventInfoEXT {
170*90277196SAndroid Build Coastguard Worker     VkStructureType      sType;
171*90277196SAndroid Build Coastguard Worker     const void*          pNext;
172*90277196SAndroid Build Coastguard Worker     VkSemaphore          semaphore;
173*90277196SAndroid Build Coastguard Worker     VkEvent              event;
174*90277196SAndroid Build Coastguard Worker     MTLSharedEvent_id    mtlSharedEvent;
175*90277196SAndroid Build Coastguard Worker } VkExportMetalSharedEventInfoEXT;
176*90277196SAndroid Build Coastguard Worker 
177*90277196SAndroid Build Coastguard Worker typedef struct VkImportMetalSharedEventInfoEXT {
178*90277196SAndroid Build Coastguard Worker     VkStructureType      sType;
179*90277196SAndroid Build Coastguard Worker     const void*          pNext;
180*90277196SAndroid Build Coastguard Worker     MTLSharedEvent_id    mtlSharedEvent;
181*90277196SAndroid Build Coastguard Worker } VkImportMetalSharedEventInfoEXT;
182*90277196SAndroid Build Coastguard Worker 
183*90277196SAndroid Build Coastguard Worker typedef void (VKAPI_PTR *PFN_vkExportMetalObjectsEXT)(VkDevice device, VkExportMetalObjectsInfoEXT* pMetalObjectsInfo);
184*90277196SAndroid Build Coastguard Worker 
185*90277196SAndroid Build Coastguard Worker #ifndef VK_NO_PROTOTYPES
186*90277196SAndroid Build Coastguard Worker VKAPI_ATTR void VKAPI_CALL vkExportMetalObjectsEXT(
187*90277196SAndroid Build Coastguard Worker     VkDevice                                    device,
188*90277196SAndroid Build Coastguard Worker     VkExportMetalObjectsInfoEXT*                pMetalObjectsInfo);
189*90277196SAndroid Build Coastguard Worker #endif
190*90277196SAndroid Build Coastguard Worker 
191*90277196SAndroid Build Coastguard Worker #ifdef __cplusplus
192*90277196SAndroid Build Coastguard Worker }
193*90277196SAndroid Build Coastguard Worker #endif
194*90277196SAndroid Build Coastguard Worker 
195*90277196SAndroid Build Coastguard Worker #endif
196