mirror of
https://github.com/hrydgard/ppsspp.git
synced 2026-09-03 11:15:20 +02:00
40 lines
1.1 KiB
Plaintext
40 lines
1.1 KiB
Plaintext
#include "ppsspp_config.h"
|
|
#if PPSSPP_PLATFORM(MAC)
|
|
#import <Cocoa/Cocoa.h>
|
|
#else
|
|
#import <UIKit/UIKit.h>
|
|
#endif
|
|
#import <QuartzCore/CAMetalLayer.h>
|
|
|
|
#include "SDLCocoaMetalLayer.h"
|
|
|
|
void *makeWindowMetalCompatible(void *window) {
|
|
// https://github.com/KhronosGroup/MoltenVK/issues/78#issuecomment-371118536
|
|
#if PPSSPP_PLATFORM(MAC)
|
|
NSWindow *nsWindow = (__bridge NSWindow *)window;
|
|
NSView *view = nsWindow.contentView;
|
|
assert([view isKindOfClass:[NSView class]]);
|
|
|
|
if (![view.layer isKindOfClass:[CAMetalLayer class]])
|
|
{
|
|
[view setLayer:[CAMetalLayer layer]];
|
|
[[view layer] setContentsScale:[nsWindow backingScaleFactor]];
|
|
}
|
|
return (__bridge void *)view.layer;
|
|
#else
|
|
UIView *view = (__bridge UIView *)window;
|
|
assert([view isKindOfClass:[UIView class]]);
|
|
|
|
CAMetalLayer *metalLayer = [CAMetalLayer new];
|
|
|
|
CGSize viewSize = view.frame.size;
|
|
metalLayer.frame = view.frame;
|
|
metalLayer.opaque = true;
|
|
metalLayer.framebufferOnly = true;
|
|
metalLayer.drawableSize = viewSize;
|
|
metalLayer.pixelFormat = (MTLPixelFormat)80;//BGRA8Unorm==80
|
|
[view.layer addSublayer:metalLayer];
|
|
return (__bridge void *)metalLayer;
|
|
#endif
|
|
}
|