From 0ee095031733fe15ddd9f0e7902b3f6add12ae4a Mon Sep 17 00:00:00 2001 From: lizzie Date: Sun, 30 Nov 2025 22:49:00 +0000 Subject: [PATCH] try both legacy and metal surfaces --- src/video_core/vulkan_common/vulkan.h | 2 +- src/video_core/vulkan_common/vulkan_surface.cpp | 7 ++----- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/src/video_core/vulkan_common/vulkan.h b/src/video_core/vulkan_common/vulkan.h index 565afb34fc..0e921cd98d 100644 --- a/src/video_core/vulkan_common/vulkan.h +++ b/src/video_core/vulkan_common/vulkan.h @@ -11,7 +11,7 @@ #define VK_USE_PLATFORM_WIN32_KHR #elif defined(__APPLE__) #define VK_USE_PLATFORM_METAL_EXT -//#define VK_USE_PLATFORM_MACOS_MVK +#define VK_USE_PLATFORM_MACOS_MVK #elif defined(__ANDROID__) #define VK_USE_PLATFORM_ANDROID_KHR #elif defined(__HAIKU__) diff --git a/src/video_core/vulkan_common/vulkan_surface.cpp b/src/video_core/vulkan_common/vulkan_surface.cpp index ed12eb6778..c5544c712b 100644 --- a/src/video_core/vulkan_common/vulkan_surface.cpp +++ b/src/video_core/vulkan_common/vulkan_surface.cpp @@ -38,9 +38,8 @@ vk::SurfaceKHR CreateSurface( .flags = 0, .pLayer = static_cast(window_info.render_surface), }; - const auto vkCreateMetalSurfaceEXT = reinterpret_cast(dld.vkGetInstanceProcAddr(*instance, "vkCreateMetalSurfaceEXT")); + const auto vkCreateMetalSurfaceEXT = PFN_vkCreateMetalSurfaceEXT(dld.vkGetInstanceProcAddr(*instance, "vkCreateMetalSurfaceEXT")); if (!vkCreateMetalSurfaceEXT || vkCreateMetalSurfaceEXT(*instance, &metal_ci, nullptr, &unsafe_surface) != VK_SUCCESS) { -#if 0 // TODO: Way to fallback? - where's my vulkan headers // Attempt to make a macOS surface instead then... // This is the deprecated VkMacOSSurfaceCreateInfoMVK(3) version; but should work if the above failed @@ -51,14 +50,12 @@ vk::SurfaceKHR CreateSurface( .flags = 0, .pView = static_cast(window_info.render_surface), }; - const auto vkCreateMacOSSurfaceMVK = reinterpret_cast(dld.vkGetInstanceProcAddr(*instance, "vkCreateMacOSSurfaceMVK")); + const auto vkCreateMacOSSurfaceMVK = PFN_vkCreateMacOSSurfaceMVK(dld.vkGetInstanceProcAddr(*instance, "vkCreateMacOSSurfaceMVK")); if (!vkCreateMacOSSurfaceMVK || vkCreateMacOSSurfaceMVK(*instance, &macos_legacy_ci, nullptr, &unsafe_surface) != VK_SUCCESS) { LOG_ERROR(Render_Vulkan, "Failed to initialize Metal/macOS surface"); throw vk::Exception(VK_ERROR_INITIALIZATION_FAILED); } -#endif LOG_ERROR(Render_Vulkan, "Failed to initialize Metal/macOS surface"); - throw vk::Exception(VK_ERROR_INITIALIZATION_FAILED); } } #elif defined(__ANDROID__)