mirror of
https://github.com/libretro/RetroArch
synced 2025-03-12 13:13:30 +00:00
This reverts commit 95d53183f5d3b8719a4c2d595b12de16da2e31af.
This commit is contained in:
parent
bec4107412
commit
187497eea8
@ -47,8 +47,12 @@
|
|||||||
#define VK_USE_PLATFORM_XLIB_KHR
|
#define VK_USE_PLATFORM_XLIB_KHR
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(HAVE_COCOA) || defined(HAVE_COCOA_METAL) || defined(HAVE_COCOATOUCH)
|
#if defined(HAVE_COCOA) || defined(HAVE_COCOA_METAL)
|
||||||
#define VK_USE_PLATFORM_METAL_EXT
|
#define VK_USE_PLATFORM_MACOS_MVK
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef HAVE_COCOATOUCH
|
||||||
|
#define VK_USE_PLATFORM_IOS_MVK
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <vulkan/vulkan_symbol_wrapper.h>
|
#include <vulkan/vulkan_symbol_wrapper.h>
|
||||||
|
@ -899,8 +899,10 @@ static VkInstance vulkan_context_create_instance_wrapper(void *opaque, const VkI
|
|||||||
required_extensions[required_extension_count++] = "VK_KHR_display";
|
required_extensions[required_extension_count++] = "VK_KHR_display";
|
||||||
break;
|
break;
|
||||||
case VULKAN_WSI_MVK_MACOS:
|
case VULKAN_WSI_MVK_MACOS:
|
||||||
|
required_extensions[required_extension_count++] = "VK_MVK_macos_surface";
|
||||||
|
break;
|
||||||
case VULKAN_WSI_MVK_IOS:
|
case VULKAN_WSI_MVK_IOS:
|
||||||
required_extensions[required_extension_count++] = "VK_EXT_metal_surface";
|
required_extensions[required_extension_count++] = "VK_MVK_ios_surface";
|
||||||
break;
|
break;
|
||||||
case VULKAN_WSI_NONE:
|
case VULKAN_WSI_NONE:
|
||||||
default:
|
default:
|
||||||
@ -1675,18 +1677,36 @@ bool vulkan_surface_create(gfx_ctx_vulkan_data_t *vk,
|
|||||||
return false;
|
return false;
|
||||||
break;
|
break;
|
||||||
case VULKAN_WSI_MVK_MACOS:
|
case VULKAN_WSI_MVK_MACOS:
|
||||||
case VULKAN_WSI_MVK_IOS:
|
#if defined(HAVE_COCOA) || defined(HAVE_COCOA_METAL)
|
||||||
#if defined(HAVE_COCOA) || defined(HAVE_COCOA_METAL) || defined(HAVE_COCOATOUCH)
|
|
||||||
{
|
{
|
||||||
VkMetalSurfaceCreateInfoEXT surf_info;
|
VkMacOSSurfaceCreateInfoMVK surf_info;
|
||||||
PFN_vkCreateMetalSurfaceEXT create;
|
PFN_vkCreateMacOSSurfaceMVK create;
|
||||||
if (!VULKAN_SYMBOL_WRAPPER_LOAD_INSTANCE_SYMBOL(vk->context.instance, "vkCreateMetalSurfaceEXT", create))
|
if (!VULKAN_SYMBOL_WRAPPER_LOAD_INSTANCE_SYMBOL(vk->context.instance, "vkCreateMacOSSurfaceMVK", create))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
surf_info.sType = VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT;
|
surf_info.sType = VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK;
|
||||||
surf_info.pNext = NULL;
|
surf_info.pNext = NULL;
|
||||||
surf_info.flags = 0;
|
surf_info.flags = 0;
|
||||||
surf_info.pLayer = surface;
|
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:
|
||||||
|
#ifdef HAVE_COCOATOUCH
|
||||||
|
{
|
||||||
|
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_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)
|
if (create(vk->context.instance, &surf_info, NULL, &vk->vk_surface)
|
||||||
!= VK_SUCCESS)
|
!= VK_SUCCESS)
|
||||||
|
@ -249,7 +249,7 @@ static bool cocoa_vk_gfx_ctx_set_video_mode(void *data,
|
|||||||
&cocoa_ctx->vk,
|
&cocoa_ctx->vk,
|
||||||
VULKAN_WSI_MVK_MACOS,
|
VULKAN_WSI_MVK_MACOS,
|
||||||
NULL,
|
NULL,
|
||||||
(BRIDGE void *)g_view.layer,
|
(BRIDGE void *)g_view,
|
||||||
cocoa_ctx->width,
|
cocoa_ctx->width,
|
||||||
cocoa_ctx->height,
|
cocoa_ctx->height,
|
||||||
cocoa_ctx->swap_interval))
|
cocoa_ctx->swap_interval))
|
||||||
@ -298,7 +298,7 @@ static bool cocoa_vk_gfx_ctx_set_video_mode(void *data,
|
|||||||
if (!vulkan_surface_create(&cocoa_ctx->vk,
|
if (!vulkan_surface_create(&cocoa_ctx->vk,
|
||||||
VULKAN_WSI_MVK_IOS,
|
VULKAN_WSI_MVK_IOS,
|
||||||
NULL,
|
NULL,
|
||||||
(BRIDGE void *)((MetalLayerView*)g_view).metalLayer,
|
(BRIDGE void *)g_view,
|
||||||
cocoa_ctx->width,
|
cocoa_ctx->width,
|
||||||
cocoa_ctx->height,
|
cocoa_ctx->height,
|
||||||
cocoa_ctx->swap_interval))
|
cocoa_ctx->swap_interval))
|
||||||
|
@ -70,14 +70,6 @@ extern id apple_platform;
|
|||||||
void rarch_start_draw_observer(void);
|
void rarch_start_draw_observer(void);
|
||||||
void rarch_stop_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,
|
@interface RetroArch_iOS : UINavigationController<ApplePlatform, UIApplicationDelegate,
|
||||||
UINavigationControllerDelegate> {
|
UINavigationControllerDelegate> {
|
||||||
UIView *_renderView;
|
UIView *_renderView;
|
||||||
|
@ -667,16 +667,6 @@ static ui_application_t ui_application_cocoa = {
|
|||||||
switch (vt)
|
switch (vt)
|
||||||
{
|
{
|
||||||
case APPLE_VIEW_TYPE_VULKAN:
|
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:
|
case APPLE_VIEW_TYPE_METAL:
|
||||||
{
|
{
|
||||||
MetalView *v = [MetalView new];
|
MetalView *v = [MetalView new];
|
||||||
|
@ -500,42 +500,6 @@ enum
|
|||||||
|
|
||||||
@end
|
@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
|
#if TARGET_OS_IOS
|
||||||
@interface RetroArch_iOS () <MXMetricManagerSubscriber, UIPointerInteractionDelegate>
|
@interface RetroArch_iOS () <MXMetricManagerSubscriber, UIPointerInteractionDelegate>
|
||||||
@end
|
@end
|
||||||
@ -566,8 +530,6 @@ enum
|
|||||||
{
|
{
|
||||||
#ifdef HAVE_COCOA_METAL
|
#ifdef HAVE_COCOA_METAL
|
||||||
case APPLE_VIEW_TYPE_VULKAN:
|
case APPLE_VIEW_TYPE_VULKAN:
|
||||||
_renderView = [MetalLayerView new];
|
|
||||||
break;
|
|
||||||
case APPLE_VIEW_TYPE_METAL:
|
case APPLE_VIEW_TYPE_METAL:
|
||||||
{
|
{
|
||||||
MetalView *v = [MetalView new];
|
MetalView *v = [MetalView new];
|
||||||
|
Loading…
x
Reference in New Issue
Block a user