Go to the documentation of this file.
26 #include "../../SDL_internal.h"
28 #if SDL_VIDEO_VULKAN && SDL_VIDEO_DRIVER_COCOA
41 const char* defaultPaths[] = {
42 "vulkan.framework/vulkan",
45 "MoltenVK.framework/MoltenVK",
50 #define DEFAULT_HANDLE RTLD_DEFAULT
52 int Cocoa_Vulkan_LoadLibrary(
_THIS,
const char *
path)
61 return SDL_SetError(
"Vulkan Portability library is already loaded.");
73 "vkGetInstanceProcAddr");
80 const char *foundPath =
NULL;
100 return SDL_SetError(
"Failed to load Vulkan Portability library");
110 SDL_SetError(
"Failed to find %s in either executable or %s: %s",
111 "vkGetInstanceProcAddr",
113 (
const char *) dlerror());
124 extensions = SDL_Vulkan_CreateInstanceExtensionsList(
131 for (
Uint32 i = 0;
i < extensionCount;
i++) {
135 hasMacOSSurfaceExtension =
SDL_TRUE;
139 if (!hasSurfaceExtension) {
140 SDL_SetError(
"Installed Vulkan Portability library doesn't implement the "
143 }
else if (!hasMacOSSurfaceExtension) {
144 SDL_SetError(
"Installed Vulkan Portability library doesn't implement the "
156 void Cocoa_Vulkan_UnloadLibrary(
_THIS)
171 static const char *
const extensionsForCocoa[] = {
178 return SDL_Vulkan_GetInstanceExtensions_Helper(
193 "vkCreateMacOSSurfaceMVK");
205 " extension is not enabled in the Vulkan instance.");
210 if (metalview ==
NULL) {
216 createInfo.
flags = 0;
217 createInfo.
pView = (
const void *)metalview;
221 Cocoa_Metal_DestroyView(
_this, metalview);
223 SDL_Vulkan_GetResultString(
result));
232 CFBridgingRelease(metalview);
239 Cocoa_Metal_GetDrawableSize(
window,
w,
h);
#define VK_MVK_MACOS_SURFACE_EXTENSION_NAME
PFN_vkGetInstanceProcAddr vkGetInstanceProcAddr
PFN_vkVoidFunction(VKAPI_PTR * PFN_vkGetInstanceProcAddr)(VkInstance instance, const char *pName)
VkMacOSSurfaceCreateFlagsMVK flags
VKAPI_ATTR VkResult VKAPI_CALL vkCreateMacOSSurfaceMVK(VkInstance instance, const VkMacOSSurfaceCreateInfoMVK *pCreateInfo, const VkAllocationCallbacks *pAllocator, VkSurfaceKHR *pSurface)
GLuint GLuint GLsizei count
struct SDL_VideoDevice::@256 vulkan_config
VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL vkGetInstanceProcAddr(VkInstance instance, const char *pName)
GLsizei const GLchar *const * path
GLfloat GLfloat GLfloat GLfloat h
The type used to identify a window.
#define VK_KHR_SURFACE_EXTENSION_NAME
static SDL_VideoDevice * _this
GLsizei const GLuint * paths
EGLSurface EGLNativeWindowType * window
VkResult(VKAPI_PTR * PFN_vkEnumerateInstanceExtensionProperties)(const char *pLayerName, uint32_t *pPropertyCount, VkExtensionProperties *pProperties)
PFN_vkEnumerateInstanceExtensionProperties vkEnumerateInstanceExtensionProperties
#define SDL_arraysize(array)
void * SDL_LoadFunction(void *handle, const char *name)
VkResult(VKAPI_PTR * PFN_vkCreateMacOSSurfaceMVK)(VkInstance instance, const VkMacOSSurfaceCreateInfoMVK *pCreateInfo, const VkAllocationCallbacks *pAllocator, VkSurfaceKHR *pSurface)
@ VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK
return Display return Display Bool Bool int int int return Display XEvent Bool(*) XPointer return Display return Display Drawable _Xconst char unsigned int unsigned int return Display Pixmap Pixmap XColor XColor unsigned int unsigned int return Display _Xconst char char int char return Display Visual unsigned int int int char unsigned int unsigned int in i)
GLubyte GLubyte GLubyte GLubyte w