From 1022273f8c4ff194d42e3d3a46e120aed09e1001 Mon Sep 17 00:00:00 2001 From: lizzie Date: Fri, 28 Nov 2025 05:50:11 +0000 Subject: [PATCH] instance stuffs --- .../vulkan_common/vulkan_instance.cpp | 2 +- .../vulkan_common/vulkan_surface.cpp | 21 +++++++++++-------- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/src/video_core/vulkan_common/vulkan_instance.cpp b/src/video_core/vulkan_common/vulkan_instance.cpp index 28655e91dc..8d3022a3f5 100644 --- a/src/video_core/vulkan_common/vulkan_instance.cpp +++ b/src/video_core/vulkan_common/vulkan_instance.cpp @@ -54,7 +54,7 @@ namespace { #elif defined(__APPLE__) case Core::Frontend::WindowSystemType::Cocoa: extensions.push_back(VK_EXT_METAL_SURFACE_EXTENSION_NAME); - extensions.push_back(VK_MVK_MACOS_SURFACE_EXTENSION_NAME); + //extensions.push_back(VK_MVK_MACOS_SURFACE_EXTENSION_NAME); //extensions.push_back(VK_MVK_MOLTENVK_EXTENSION_NAME); break; #elif defined(__ANDROID__) diff --git a/src/video_core/vulkan_common/vulkan_surface.cpp b/src/video_core/vulkan_common/vulkan_surface.cpp index df8fd05590..ed12eb6778 100644 --- a/src/video_core/vulkan_common/vulkan_surface.cpp +++ b/src/video_core/vulkan_common/vulkan_surface.cpp @@ -32,14 +32,15 @@ vk::SurfaceKHR CreateSurface( } #elif defined(__APPLE__) if (window_info.type == Core::Frontend::WindowSystemType::Cocoa) { - // const VkMetalSurfaceCreateInfoEXT metal_ci = { - // .sType = VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT, - // .pNext = nullptr, - // .flags = 0, - // .pLayer = static_cast(window_info.render_surface), - // }; - // const auto vkCreateMetalSurfaceEXT = reinterpret_cast(dld.vkGetInstanceProcAddr(*instance, "vkCreateMetalSurfaceEXT")); - // if (!vkCreateMetalSurfaceEXT || vkCreateMetalSurfaceEXT(*instance, &metal_ci, nullptr, &unsafe_surface) != VK_SUCCESS) { + const VkMetalSurfaceCreateInfoEXT metal_ci = { + .sType = VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT, + .pNext = nullptr, + .flags = 0, + .pLayer = static_cast(window_info.render_surface), + }; + const auto vkCreateMetalSurfaceEXT = reinterpret_cast(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 @@ -55,8 +56,10 @@ vk::SurfaceKHR CreateSurface( 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__) if (window_info.type == Core::Frontend::WindowSystemType::Android) {