diff --git a/src/video/uikit/SDL_uikitmetalview.m b/src/video/uikit/SDL_uikitmetalview.m index b4b43911a..17dca69d2 100644 --- a/src/video/uikit/SDL_uikitmetalview.m +++ b/src/video/uikit/SDL_uikitmetalview.m @@ -86,7 +86,7 @@ UIKit_Mtl_AddMetalView(SDL_Window* window) SDL_WindowData *data = (__bridge SDL_WindowData *)window->driverdata; SDL_uikitview *view = (SDL_uikitview*)data.uiwindow.rootViewController.view; CGFloat scale = 1.0; - + if (window->flags & SDL_WINDOW_ALLOW_HIGHDPI) { /* Set the scale to the natural scale factor of the screen - the * backing dimensions of the Metal view will match the pixel diff --git a/src/video/uikit/SDL_uikitvulkan.m b/src/video/uikit/SDL_uikitvulkan.m index 4a0257fe0..514a05141 100644 --- a/src/video/uikit/SDL_uikitvulkan.m +++ b/src/video/uikit/SDL_uikitvulkan.m @@ -52,14 +52,16 @@ int UIKit_Vulkan_LoadLibrary(_THIS, const char *path) SDL_bool hasIOSSurfaceExtension = SDL_FALSE; PFN_vkGetInstanceProcAddr vkGetInstanceProcAddr = NULL; - if(_this->vulkan_config.loader_handle) + if (_this->vulkan_config.loader_handle) { return SDL_SetError("MoltenVK/Vulkan already loaded"); + } /* Load the Vulkan loader library */ - if(!path) + if (!path) { path = SDL_getenv("SDL_VULKAN_LIBRARY"); - if(!path) - { + } + + if (!path) { /* MoltenVK framework, currently, v0.17.0, has a static library and is * the recommended way to use the package. There is likely no object to * load. */ @@ -67,22 +69,19 @@ int UIKit_Vulkan_LoadLibrary(_THIS, const char *path) (PFN_vkGetInstanceProcAddr)dlsym(DEFAULT_HANDLE, "vkGetInstanceProcAddr"); } - - if(vkGetInstanceProcAddr) - { + + if (vkGetInstanceProcAddr) { _this->vulkan_config.loader_handle = DEFAULT_HANDLE; - } - else - { - if (!path) - { + } else { + if (!path) { /* Look for the .dylib packaged with the application instead. */ path = DEFAULT_MOLTENVK; } - + _this->vulkan_config.loader_handle = SDL_LoadObject(path); - if(!_this->vulkan_config.loader_handle) + if (!_this->vulkan_config.loader_handle) { return -1; + } SDL_strlcpy(_this->vulkan_config.loader_path, path, SDL_arraysize(_this->vulkan_config.loader_path)); vkGetInstanceProcAddr = @@ -90,8 +89,8 @@ int UIKit_Vulkan_LoadLibrary(_THIS, const char *path) _this->vulkan_config.loader_handle, "vkGetInstanceProcAddr"); } - if(!vkGetInstanceProcAddr) - { + + if (!vkGetInstanceProcAddr) { SDL_SetError("Failed to find %s in either executable or %s: %s", "vkGetInstanceProcAddr", DEFAULT_MOLTENVK, @@ -103,33 +102,36 @@ int UIKit_Vulkan_LoadLibrary(_THIS, const char *path) _this->vulkan_config.vkEnumerateInstanceExtensionProperties = (void *)((PFN_vkGetInstanceProcAddr)_this->vulkan_config.vkGetInstanceProcAddr)( VK_NULL_HANDLE, "vkEnumerateInstanceExtensionProperties"); - if(!_this->vulkan_config.vkEnumerateInstanceExtensionProperties) - { + + if (!_this->vulkan_config.vkEnumerateInstanceExtensionProperties) { SDL_SetError("No vkEnumerateInstanceExtensionProperties found."); goto fail; } + extensions = SDL_Vulkan_CreateInstanceExtensionsList( (PFN_vkEnumerateInstanceExtensionProperties) _this->vulkan_config.vkEnumerateInstanceExtensionProperties, &extensionCount); - if(!extensions) + + if (!extensions) { goto fail; - for(Uint32 i = 0; i < extensionCount; i++) - { - if(SDL_strcmp(VK_KHR_SURFACE_EXTENSION_NAME, extensions[i].extensionName) == 0) - hasSurfaceExtension = SDL_TRUE; - else if(SDL_strcmp(VK_MVK_IOS_SURFACE_EXTENSION_NAME, extensions[i].extensionName) == 0) - hasIOSSurfaceExtension = SDL_TRUE; } + + for (Uint32 i = 0; i < extensionCount; i++) { + if (SDL_strcmp(VK_KHR_SURFACE_EXTENSION_NAME, extensions[i].extensionName) == 0) { + hasSurfaceExtension = SDL_TRUE; + } else if (SDL_strcmp(VK_MVK_IOS_SURFACE_EXTENSION_NAME, extensions[i].extensionName) == 0) { + hasIOSSurfaceExtension = SDL_TRUE; + } + } + SDL_free(extensions); - if(!hasSurfaceExtension) - { + + if (!hasSurfaceExtension) { SDL_SetError("Installed MoltenVK/Vulkan doesn't implement the " VK_KHR_SURFACE_EXTENSION_NAME " extension"); goto fail; - } - else if(!hasIOSSurfaceExtension) - { + } else if (!hasIOSSurfaceExtension) { SDL_SetError("Installed MoltenVK/Vulkan doesn't implement the " VK_MVK_IOS_SURFACE_EXTENSION_NAME "extension"); goto fail; @@ -144,10 +146,10 @@ fail: void UIKit_Vulkan_UnloadLibrary(_THIS) { - if(_this->vulkan_config.loader_handle) - { - if (_this->vulkan_config.loader_handle != DEFAULT_HANDLE) + if (_this->vulkan_config.loader_handle) { + if (_this->vulkan_config.loader_handle != DEFAULT_HANDLE) { SDL_UnloadObject(_this->vulkan_config.loader_handle); + } _this->vulkan_config.loader_handle = NULL; } } @@ -160,11 +162,11 @@ SDL_bool UIKit_Vulkan_GetInstanceExtensions(_THIS, static const char *const extensionsForUIKit[] = { VK_KHR_SURFACE_EXTENSION_NAME, VK_MVK_IOS_SURFACE_EXTENSION_NAME }; - if(!_this->vulkan_config.loader_handle) - { + if (!_this->vulkan_config.loader_handle) { SDL_SetError("Vulkan is not loaded"); return SDL_FALSE; } + return SDL_Vulkan_GetInstanceExtensions_Helper( count, names, SDL_arraysize(extensionsForUIKit), extensionsForUIKit); @@ -184,30 +186,29 @@ SDL_bool UIKit_Vulkan_CreateSurface(_THIS, VkIOSSurfaceCreateInfoMVK createInfo = {}; VkResult result; - if(!_this->vulkan_config.loader_handle) - { + if (!_this->vulkan_config.loader_handle) { SDL_SetError("Vulkan is not loaded"); return SDL_FALSE; } - if(!vkCreateIOSSurfaceMVK) - { + if (!vkCreateIOSSurfaceMVK) { SDL_SetError(VK_MVK_IOS_SURFACE_EXTENSION_NAME " extension is not enabled in the Vulkan instance."); return SDL_FALSE; } + createInfo.sType = VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK; createInfo.pNext = NULL; createInfo.flags = 0; createInfo.pView = (__bridge void *)UIKit_Mtl_AddMetalView(window); result = vkCreateIOSSurfaceMVK(instance, &createInfo, NULL, surface); - if(result != VK_SUCCESS) - { + if (result != VK_SUCCESS) { SDL_SetError("vkCreateIOSSurfaceMVK failed: %s", SDL_Vulkan_GetResultString(result)); return SDL_FALSE; } + return SDL_TRUE; }