Skip to content

Commit

Permalink
Revert "apple: switch from MTKView to CAMetalLayer for vulkan (#16959)"
Browse files Browse the repository at this point in the history
This reverts commit 95d5318.
  • Loading branch information
warmenhoven committed Sep 19, 2024
1 parent bec4107 commit 9b47836
Show file tree
Hide file tree
Showing 6 changed files with 37 additions and 69 deletions.
8 changes: 6 additions & 2 deletions gfx/common/vksym.h
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,12 @@
#define VK_USE_PLATFORM_XLIB_KHR
#endif

#if defined(HAVE_COCOA) || defined(HAVE_COCOA_METAL) || defined(HAVE_COCOATOUCH)
#define VK_USE_PLATFORM_METAL_EXT
#if defined(HAVE_COCOA) || defined(HAVE_COCOA_METAL)
#define VK_USE_PLATFORM_MACOS_MVK
#endif

#ifdef HAVE_COCOATOUCH
#define VK_USE_PLATFORM_IOS_MVK
#endif

#include <vulkan/vulkan_symbol_wrapper.h>
Expand Down
38 changes: 29 additions & 9 deletions gfx/common/vulkan_common.c
Original file line number Diff line number Diff line change
Expand Up @@ -899,8 +899,10 @@ static VkInstance vulkan_context_create_instance_wrapper(void *opaque, const VkI
required_extensions[required_extension_count++] = "VK_KHR_display";
break;
case VULKAN_WSI_MVK_MACOS:
required_extensions[required_extension_count++] = "VK_MVK_macos_surface";
break;
case VULKAN_WSI_MVK_IOS:
required_extensions[required_extension_count++] = "VK_EXT_metal_surface";
required_extensions[required_extension_count++] = "VK_MVK_ios_surface";
break;
case VULKAN_WSI_NONE:
default:
Expand Down Expand Up @@ -1675,18 +1677,36 @@ bool vulkan_surface_create(gfx_ctx_vulkan_data_t *vk,
return false;
break;
case VULKAN_WSI_MVK_MACOS:
#if defined(HAVE_COCOA) || defined(HAVE_COCOA_METAL)
{
VkMacOSSurfaceCreateInfoMVK surf_info;
PFN_vkCreateMacOSSurfaceMVK create;
if (!VULKAN_SYMBOL_WRAPPER_LOAD_INSTANCE_SYMBOL(vk->context.instance, "vkCreateMacOSSurfaceMVK", create))
return false;

surf_info.sType = VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK;
surf_info.pNext = NULL;
surf_info.flags = 0;
surf_info.pView = surface;

if (create(vk->context.instance, &surf_info, NULL, &vk->vk_surface)
!= VK_SUCCESS)
return false;
}
#endif
break;
case VULKAN_WSI_MVK_IOS:
#if defined(HAVE_COCOA) || defined(HAVE_COCOA_METAL) || defined(HAVE_COCOATOUCH)
#ifdef HAVE_COCOATOUCH
{
VkMetalSurfaceCreateInfoEXT surf_info;
PFN_vkCreateMetalSurfaceEXT create;
if (!VULKAN_SYMBOL_WRAPPER_LOAD_INSTANCE_SYMBOL(vk->context.instance, "vkCreateMetalSurfaceEXT", create))
VkIOSSurfaceCreateInfoMVK surf_info;
PFN_vkCreateIOSSurfaceMVK create;
if (!VULKAN_SYMBOL_WRAPPER_LOAD_INSTANCE_SYMBOL(vk->context.instance, "vkCreateIOSSurfaceMVK", create))
return false;

surf_info.sType = VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT;
surf_info.pNext = NULL;
surf_info.flags = 0;
surf_info.pLayer = surface;
surf_info.sType = VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK;
surf_info.pNext = NULL;
surf_info.flags = 0;
surf_info.pView = surface;

if (create(vk->context.instance, &surf_info, NULL, &vk->vk_surface)
!= VK_SUCCESS)
Expand Down
4 changes: 2 additions & 2 deletions gfx/drivers_context/cocoa_vk_ctx.m
Original file line number Diff line number Diff line change
Expand Up @@ -249,7 +249,7 @@ static bool cocoa_vk_gfx_ctx_set_video_mode(void *data,
&cocoa_ctx->vk,
VULKAN_WSI_MVK_MACOS,
NULL,
(BRIDGE void *)g_view.layer,
(BRIDGE void *)g_view,
cocoa_ctx->width,
cocoa_ctx->height,
cocoa_ctx->swap_interval))
Expand Down Expand Up @@ -298,7 +298,7 @@ static bool cocoa_vk_gfx_ctx_set_video_mode(void *data,
if (!vulkan_surface_create(&cocoa_ctx->vk,
VULKAN_WSI_MVK_IOS,
NULL,
(BRIDGE void *)((MetalLayerView*)g_view).metalLayer,
(BRIDGE void *)g_view,
cocoa_ctx->width,
cocoa_ctx->height,
cocoa_ctx->swap_interval))
Expand Down
8 changes: 0 additions & 8 deletions ui/drivers/cocoa/apple_platform.h
Original file line number Diff line number Diff line change
Expand Up @@ -70,14 +70,6 @@ extern id apple_platform;
void rarch_start_draw_observer(void);
void rarch_stop_draw_observer(void);

#if defined(HAVE_COCOA_METAL)
@interface MetalLayerView : UIView
@property (nonatomic, readonly) CAMetalLayer *metalLayer;
@end
#endif

#import <UIKit/UIKit.h>

@interface RetroArch_iOS : UINavigationController<ApplePlatform, UIApplicationDelegate,
UINavigationControllerDelegate> {
UIView *_renderView;
Expand Down
10 changes: 0 additions & 10 deletions ui/drivers/ui_cocoa.m
Original file line number Diff line number Diff line change
Expand Up @@ -667,16 +667,6 @@ - (void)setViewType:(apple_view_type_t)vt
switch (vt)
{
case APPLE_VIEW_TYPE_VULKAN:
{
_renderView = [CocoaView get];
CAMetalLayer *metal_layer = [[CAMetalLayer alloc] init];
metal_layer.device = MTLCreateSystemDefaultDevice();
metal_layer.framebufferOnly = YES;
metal_layer.contentsScale = [[NSScreen mainScreen] backingScaleFactor];
_renderView.layer = metal_layer;
[_renderView setWantsLayer:YES];
}
break;
case APPLE_VIEW_TYPE_METAL:
{
MetalView *v = [MetalView new];
Expand Down
38 changes: 0 additions & 38 deletions ui/drivers/ui_cocoatouch.m
Original file line number Diff line number Diff line change
Expand Up @@ -500,42 +500,6 @@ - (void)sendEvent:(UIEvent *)event

@end

#ifdef HAVE_COCOA_METAL
@implementation MetalLayerView

+ (Class)layerClass {
return [CAMetalLayer class];
}

- (instancetype)init {
self = [super init];
if (self) {
[self setupMetalLayer];
}
return self;
}

- (instancetype)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if (self) {
[self setupMetalLayer];
}
return self;
}

- (CAMetalLayer *)metalLayer {
return (CAMetalLayer *)self.layer;
}

- (void)setupMetalLayer {
self.metalLayer.device = MTLCreateSystemDefaultDevice();
self.metalLayer.contentsScale = [UIScreen mainScreen].scale;
self.metalLayer.opaque = YES;
}

@end
#endif

#if TARGET_OS_IOS
@interface RetroArch_iOS () <MXMetricManagerSubscriber, UIPointerInteractionDelegate>
@end
Expand Down Expand Up @@ -566,8 +530,6 @@ - (void)setViewType:(apple_view_type_t)vt
{
#ifdef HAVE_COCOA_METAL
case APPLE_VIEW_TYPE_VULKAN:
_renderView = [MetalLayerView new];
break;
case APPLE_VIEW_TYPE_METAL:
{
MetalView *v = [MetalView new];
Expand Down

0 comments on commit 9b47836

Please sign in to comment.