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