Add Vulkan support for Mac (via MoltenVK)

This commit is contained in:
Wojtek Figat
2022-01-05 10:25:46 +01:00
parent 8874a325f7
commit 7471a819e1
24 changed files with 183 additions and 11 deletions

View File

@@ -6,6 +6,7 @@
#include "MacUtils.h"
#include "Engine/Graphics/RenderTask.h"
#include <Cocoa/Cocoa.h>
#include <QuartzCore/CAMetalLayer.h>
@interface MacWindowImpl : NSWindow <NSWindowDelegate>
{
@@ -31,6 +32,29 @@
@end
@interface MacViewImpl : NSView
{
}
- (CALayer*)makeBackingLayer;
- (BOOL)wantsUpdateLayer;
@end
@implementation MacViewImpl
- (CALayer*)makeBackingLayer
{
return [[CAMetalLayer class] layer];
}
- (BOOL)wantsUpdateLayer
{
return YES;
}
@end
MacWindow::MacWindow(const CreateWindowSettings& settings)
: WindowBase(settings)
{
@@ -60,12 +84,16 @@ MacWindow::MacWindow(const CreateWindowSettings& settings)
styleMask:(styleMask)
backing:NSBackingStoreBuffered
defer:NO];
MacViewImpl* view = [[MacViewImpl alloc] init];
view.wantsLayer = YES;
window.title = (__bridge NSString*)MacUtils::ToString(settings.Title);
[window setWindow:this];
[window setReleasedWhenClosed:NO];
[window setMinSize:NSMakeSize(settings.MinimumSize.X, settings.MinimumSize.Y)];
[window setMaxSize:NSMakeSize(settings.MaximumSize.X, settings.MaximumSize.Y)];
[window setOpaque:!settings.SupportsTransparency];
[window setContentView:view];
[window setAcceptsMouseMovedEvents:YES];
[window setDelegate:window];
_window = window;