diff options
author | Alex Szpakowski <slime73@gmail.com> | 2017-12-31 15:21:25 -0400 |
---|---|---|
committer | Alex Szpakowski <slime73@gmail.com> | 2017-12-31 15:21:25 -0400 |
commit | dd08a43e22513c5fb0aab484af5d86d7ed3aad48 (patch) | |
tree | 6da2545fb4bc9ccf03141e65204da6653e9513b3 | |
parent | b08677c2552cef267d7fbe6919a62b5b0a732f16 (diff) |
macOS: Fix MoltenVK Metal view resizing, and allow the metal view to be used without vulkan.
-rw-r--r-- | include/SDL_config_macosx.h | 7 | ||||
-rw-r--r-- | src/video/cocoa/SDL_cocoametalview.h | 10 | ||||
-rw-r--r-- | src/video/cocoa/SDL_cocoametalview.m | 13 |
3 files changed, 18 insertions, 12 deletions
diff --git a/include/SDL_config_macosx.h b/include/SDL_config_macosx.h index 2257c3c6c8..bb8bb5b201 100644 --- a/include/SDL_config_macosx.h +++ b/include/SDL_config_macosx.h @@ -184,7 +184,12 @@ #endif #ifndef SDL_VIDEO_RENDER_METAL +/* Metal only supported on 64-bit architectures with 10.11+ */ +#if TARGET_CPU_X86_64 && (MAC_OS_X_VERSION_MAX_ALLOWED >= 101100) #define SDL_VIDEO_RENDER_METAL 1 +#else +#define SDL_VIDEO_RENDER_METAL 0 +#endif #endif /* Enable OpenGL support */ @@ -209,7 +214,7 @@ #if TARGET_CPU_X86_64 && (MAC_OS_X_VERSION_MAX_ALLOWED >= 101100) #define SDL_VIDEO_VULKAN 1 #else -#define SDL_VIDEO_VULKAN 0 +#define SDL_VIDEO_VULKAN 0 #endif /* Enable system power support */ diff --git a/src/video/cocoa/SDL_cocoametalview.h b/src/video/cocoa/SDL_cocoametalview.h index 745dea3513..8550ebe1c1 100644 --- a/src/video/cocoa/SDL_cocoametalview.h +++ b/src/video/cocoa/SDL_cocoametalview.h @@ -32,11 +32,11 @@ #import "../SDL_sysvideo.h" #import "SDL_cocoawindow.h" -#if SDL_VIDEO_VULKAN && SDL_VIDEO_DRIVER_COCOA +#if SDL_VIDEO_DRIVER_COCOA && (SDL_VIDEO_VULKAN || SDL_VIDEO_RENDER_METAL) -#include <Cocoa/Cocoa.h> -#include <Metal/Metal.h> -#include <QuartzCore/CAMetalLayer.h> +#import <Cocoa/Cocoa.h> +#import <Metal/Metal.h> +#import <QuartzCore/CAMetalLayer.h> #define METALVIEW_TAG 255 @@ -57,7 +57,7 @@ SDL_cocoametalview* Cocoa_Mtl_AddMetalView(SDL_Window* window); void Cocoa_Mtl_GetDrawableSize(SDL_Window * window, int * w, int * h); -#endif /* SDL_VIDEO_VULKAN && SDL_VIDEO_DRIVER_COCOA */ +#endif /* SDL_VIDEO_DRIVER_COCOA && (SDL_VIDEO_VULKAN || SDL_VIDEO_RENDER_METAL) */ #endif /* SDL_cocoametalview_h_ */ diff --git a/src/video/cocoa/SDL_cocoametalview.m b/src/video/cocoa/SDL_cocoametalview.m index 562eecca84..8078803d68 100644 --- a/src/video/cocoa/SDL_cocoametalview.m +++ b/src/video/cocoa/SDL_cocoametalview.m @@ -28,7 +28,7 @@ #import "SDL_cocoametalview.h" -#if SDL_VIDEO_VULKAN && SDL_VIDEO_DRIVER_COCOA +#if SDL_VIDEO_DRIVER_COCOA && (SDL_VIDEO_VULKAN || SDL_VIDEO_RENDER_METAL) #include "SDL_assert.h" @@ -44,7 +44,7 @@ } /* Indicate the view wants to draw using a backing layer instead of drawRect. */ --(BOOL) wantsUpdateLayer +- (BOOL)wantsUpdateLayer { return YES; } @@ -52,7 +52,7 @@ /* When the wantsLayer property is set to YES, this method will be invoked to * return a layer instance. */ --(CALayer*) makeBackingLayer +- (CALayer*)makeBackingLayer { return [self.class.layerClass layer]; } @@ -74,8 +74,9 @@ } /* Set the size of the metal drawables when the view is resized. */ -- (void)resizeSubviewsWithOldSize:(NSSize)oldSize { - [super resizeSubviewsWithOldSize:oldSize]; +- (void)resizeWithOldSuperviewSize:(NSSize)oldSize +{ + [super resizeWithOldSuperviewSize:oldSize]; [self updateDrawableSize]; } @@ -123,6 +124,6 @@ Cocoa_Mtl_GetDrawableSize(SDL_Window * window, int * w, int * h) } } -#endif /* SDL_VIDEO_VULKAN && SDL_VIDEO_DRIVER_COCOA */ +#endif /* SDL_VIDEO_DRIVER_COCOA && (SDL_VIDEO_VULKAN || SDL_VIDEO_RENDER_METAL) */ /* vi: set ts=4 sw=4 expandtab: */ |