summaryrefslogtreecommitdiffstats
path: root/platform
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2024-02-13 17:24:15 +0100
committerRémi Verschelde <rverschelde@gmail.com>2024-02-13 17:24:15 +0100
commitb50001ecfe614d6fba2262ed65a7d036d57b3862 (patch)
tree8bd4d795d407055fb47bea39199ccd9eed106919 /platform
parentb36480684cc7a58f37ca325af635ee92d8502306 (diff)
parentf4589434551e27c519515fdae15737582820bd65 (diff)
downloadredot-engine-b50001ecfe614d6fba2262ed65a7d036d57b3862.tar.gz
Merge pull request #87999 from bruvzg/metal_layer
[macOS / iOS] Switch Vulkan init to `VK_EXT_metal_surface` extension.
Diffstat (limited to 'platform')
-rw-r--r--platform/ios/display_server_ios.mm2
-rw-r--r--platform/ios/rendering_context_driver_vulkan_ios.h4
-rw-r--r--platform/ios/rendering_context_driver_vulkan_ios.mm12
-rw-r--r--platform/macos/display_server_macos.mm2
-rw-r--r--platform/macos/rendering_context_driver_vulkan_macos.h4
-rw-r--r--platform/macos/rendering_context_driver_vulkan_macos.mm12
6 files changed, 18 insertions, 18 deletions
diff --git a/platform/ios/display_server_ios.mm b/platform/ios/display_server_ios.mm
index c371f2777c..2895dffdfa 100644
--- a/platform/ios/display_server_ios.mm
+++ b/platform/ios/display_server_ios.mm
@@ -80,7 +80,7 @@ DisplayServerIOS::DisplayServerIOS(const String &p_rendering_driver, WindowMode
if (!layer) {
ERR_FAIL_MSG("Failed to create iOS Vulkan rendering layer.");
}
- wpd.vulkan.layer_ptr = &layer;
+ wpd.vulkan.layer_ptr = (CAMetalLayer *const *)&layer;
rendering_context = memnew(RenderingContextDriverVulkanIOS);
}
#endif
diff --git a/platform/ios/rendering_context_driver_vulkan_ios.h b/platform/ios/rendering_context_driver_vulkan_ios.h
index 0778993a05..dc85ff738d 100644
--- a/platform/ios/rendering_context_driver_vulkan_ios.h
+++ b/platform/ios/rendering_context_driver_vulkan_ios.h
@@ -35,7 +35,7 @@
#include "drivers/vulkan/rendering_context_driver_vulkan.h"
-#import <UIKit/UIKit.h>
+#import <QuartzCore/CAMetalLayer.h>
class RenderingContextDriverVulkanIOS : public RenderingContextDriverVulkan {
private:
@@ -46,7 +46,7 @@ protected:
public:
struct WindowPlatformData {
- CALayer *const *layer_ptr;
+ CAMetalLayer *const *layer_ptr;
};
RenderingContextDriverVulkanIOS();
diff --git a/platform/ios/rendering_context_driver_vulkan_ios.mm b/platform/ios/rendering_context_driver_vulkan_ios.mm
index 7e9c3e0e44..6a6af1bc41 100644
--- a/platform/ios/rendering_context_driver_vulkan_ios.mm
+++ b/platform/ios/rendering_context_driver_vulkan_ios.mm
@@ -35,22 +35,22 @@
#ifdef USE_VOLK
#include <volk.h>
#else
-#include <vulkan/vulkan.h>
+#include <vulkan/vulkan_metal.h>
#endif
const char *RenderingContextDriverVulkanIOS::_get_platform_surface_extension() const {
- return VK_MVK_IOS_SURFACE_EXTENSION_NAME;
+ return VK_EXT_METAL_SURFACE_EXTENSION_NAME;
}
RenderingContextDriver::SurfaceID RenderingContextDriverVulkanIOS::surface_create(const void *p_platform_data) {
const WindowPlatformData *wpd = (const WindowPlatformData *)(p_platform_data);
- VkIOSSurfaceCreateInfoMVK create_info = {};
- create_info.sType = VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK;
- create_info.pView = (__bridge const void *)(*wpd->layer_ptr);
+ VkMetalSurfaceCreateInfoEXT create_info = {};
+ create_info.sType = VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT;
+ create_info.pLayer = *wpd->layer_ptr;
VkSurfaceKHR vk_surface = VK_NULL_HANDLE;
- VkResult err = vkCreateIOSSurfaceMVK(instance_get(), &create_info, nullptr, &vk_surface);
+ VkResult err = vkCreateMetalSurfaceEXT(instance_get(), &create_info, nullptr, &vk_surface);
ERR_FAIL_COND_V(err != VK_SUCCESS, SurfaceID());
Surface *surface = memnew(Surface);
diff --git a/platform/macos/display_server_macos.mm b/platform/macos/display_server_macos.mm
index 99d4554a42..19632dd799 100644
--- a/platform/macos/display_server_macos.mm
+++ b/platform/macos/display_server_macos.mm
@@ -204,7 +204,7 @@ DisplayServerMacOS::WindowID DisplayServerMacOS::_create_window(WindowMode p_mod
} wpd;
#ifdef VULKAN_ENABLED
if (rendering_driver == "vulkan") {
- wpd.vulkan.view_ptr = &wd.window_view;
+ wpd.vulkan.layer_ptr = (CAMetalLayer *const *)&layer;
}
#endif
Error err = rendering_context->window_create(window_id_counter, &wpd);
diff --git a/platform/macos/rendering_context_driver_vulkan_macos.h b/platform/macos/rendering_context_driver_vulkan_macos.h
index bbc67581db..32f8891a2e 100644
--- a/platform/macos/rendering_context_driver_vulkan_macos.h
+++ b/platform/macos/rendering_context_driver_vulkan_macos.h
@@ -35,7 +35,7 @@
#include "drivers/vulkan/rendering_context_driver_vulkan.h"
-#import <AppKit/AppKit.h>
+#import <QuartzCore/CAMetalLayer.h>
class RenderingContextDriverVulkanMacOS : public RenderingContextDriverVulkan {
private:
@@ -46,7 +46,7 @@ protected:
public:
struct WindowPlatformData {
- const id *view_ptr;
+ CAMetalLayer *const *layer_ptr;
};
RenderingContextDriverVulkanMacOS();
diff --git a/platform/macos/rendering_context_driver_vulkan_macos.mm b/platform/macos/rendering_context_driver_vulkan_macos.mm
index e0f8bf9e67..afefe5a6f7 100644
--- a/platform/macos/rendering_context_driver_vulkan_macos.mm
+++ b/platform/macos/rendering_context_driver_vulkan_macos.mm
@@ -35,22 +35,22 @@
#ifdef USE_VOLK
#include <volk.h>
#else
-#include <vulkan/vulkan.h>
+#include <vulkan/vulkan_metal.h>
#endif
const char *RenderingContextDriverVulkanMacOS::_get_platform_surface_extension() const {
- return VK_MVK_MACOS_SURFACE_EXTENSION_NAME;
+ return VK_EXT_METAL_SURFACE_EXTENSION_NAME;
}
RenderingContextDriver::SurfaceID RenderingContextDriverVulkanMacOS::surface_create(const void *p_platform_data) {
const WindowPlatformData *wpd = (const WindowPlatformData *)(p_platform_data);
- VkMacOSSurfaceCreateInfoMVK create_info = {};
- create_info.sType = VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK;
- create_info.pView = (__bridge const void *)(*wpd->view_ptr);
+ VkMetalSurfaceCreateInfoEXT create_info = {};
+ create_info.sType = VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT;
+ create_info.pLayer = *wpd->layer_ptr;
VkSurfaceKHR vk_surface = VK_NULL_HANDLE;
- VkResult err = vkCreateMacOSSurfaceMVK(instance_get(), &create_info, nullptr, &vk_surface);
+ VkResult err = vkCreateMetalSurfaceEXT(instance_get(), &create_info, nullptr, &vk_surface);
ERR_FAIL_COND_V(err != VK_SUCCESS, SurfaceID());
Surface *surface = memnew(Surface);