From f026653800b9a4df0638685f4692b2b11d9b62ea Mon Sep 17 00:00:00 2001 From: Greg Wells Date: Sun, 25 May 2025 21:56:06 -0400 Subject: [PATCH] metal surface creation --- .../metal/src/core/surface/metal_surface.h | 5 ++++ .../metal/src/core/surface/metal_surface.m | 23 +++++++++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 rendering_api/metal/src/core/surface/metal_surface.h create mode 100644 rendering_api/metal/src/core/surface/metal_surface.m diff --git a/rendering_api/metal/src/core/surface/metal_surface.h b/rendering_api/metal/src/core/surface/metal_surface.h new file mode 100644 index 0000000..4bee575 --- /dev/null +++ b/rendering_api/metal/src/core/surface/metal_surface.h @@ -0,0 +1,5 @@ +#pragma once +#include "core/window_surface/gryphn_surface.h" + +typedef struct gnPlatformWindowSurface_t{ +} gnPlatformWindowSurface; diff --git a/rendering_api/metal/src/core/surface/metal_surface.m b/rendering_api/metal/src/core/surface/metal_surface.m new file mode 100644 index 0000000..65f24f8 --- /dev/null +++ b/rendering_api/metal/src/core/surface/metal_surface.m @@ -0,0 +1,23 @@ +#include "metal_surface.h" +#include "core/window_surface/gryphn_surface_create_functions.h" + +#import +#import +#import +#import +#import + +gnReturnCode gnCreateMacOSWindowSurfaceFn(struct gnWindowSurface_t* windowSurface, gnInstance* instance, struct gnMacOSWindowSurfaceInfo_t createInfo) { + NSWindow* window = (__bridge NSWindow*)createInfo.window; + NSView* view = [window contentView]; + + CAMetalLayer* layer = [CAMetalLayer layer]; + [layer setContentsScale:[window backingScaleFactor]]; + [layer setFramebufferOnly:YES]; + + [view setLayer:layer]; + [view setWantsLayer:YES]; + + windowSurface->windowSurface = malloc(sizeof(gnPlatformWindowSurface)); + return GN_SUCCESS; +}