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