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