macOS: Fix MoltenVK Metal view resizing, and allow the metal view to be used without vulkan.

This commit is contained in:
Alex Szpakowski 2017-12-31 15:21:25 -04:00
parent 6d32ebdbc9
commit 48fea0cee4
3 changed files with 18 additions and 12 deletions

View File

@ -184,7 +184,12 @@
#endif #endif
#ifndef SDL_VIDEO_RENDER_METAL #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 #define SDL_VIDEO_RENDER_METAL 1
#else
#define SDL_VIDEO_RENDER_METAL 0
#endif
#endif #endif
/* Enable OpenGL support */ /* Enable OpenGL support */
@ -209,7 +214,7 @@
#if TARGET_CPU_X86_64 && (MAC_OS_X_VERSION_MAX_ALLOWED >= 101100) #if TARGET_CPU_X86_64 && (MAC_OS_X_VERSION_MAX_ALLOWED >= 101100)
#define SDL_VIDEO_VULKAN 1 #define SDL_VIDEO_VULKAN 1
#else #else
#define SDL_VIDEO_VULKAN 0 #define SDL_VIDEO_VULKAN 0
#endif #endif
/* Enable system power support */ /* Enable system power support */

View File

@ -32,11 +32,11 @@
#import "../SDL_sysvideo.h" #import "../SDL_sysvideo.h"
#import "SDL_cocoawindow.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> #import <Cocoa/Cocoa.h>
#include <Metal/Metal.h> #import <Metal/Metal.h>
#include <QuartzCore/CAMetalLayer.h> #import <QuartzCore/CAMetalLayer.h>
#define METALVIEW_TAG 255 #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); 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_ */ #endif /* SDL_cocoametalview_h_ */

View File

@ -28,7 +28,7 @@
#import "SDL_cocoametalview.h" #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" #include "SDL_assert.h"
@ -44,7 +44,7 @@
} }
/* Indicate the view wants to draw using a backing layer instead of drawRect. */ /* Indicate the view wants to draw using a backing layer instead of drawRect. */
-(BOOL) wantsUpdateLayer - (BOOL)wantsUpdateLayer
{ {
return YES; return YES;
} }
@ -52,7 +52,7 @@
/* When the wantsLayer property is set to YES, this method will be invoked to /* When the wantsLayer property is set to YES, this method will be invoked to
* return a layer instance. * return a layer instance.
*/ */
-(CALayer*) makeBackingLayer - (CALayer*)makeBackingLayer
{ {
return [self.class.layerClass layer]; return [self.class.layerClass layer];
} }
@ -74,8 +74,9 @@
} }
/* Set the size of the metal drawables when the view is resized. */ /* Set the size of the metal drawables when the view is resized. */
- (void)resizeSubviewsWithOldSize:(NSSize)oldSize { - (void)resizeWithOldSuperviewSize:(NSSize)oldSize
[super resizeSubviewsWithOldSize:oldSize]; {
[super resizeWithOldSuperviewSize:oldSize];
[self updateDrawableSize]; [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: */ /* vi: set ts=4 sw=4 expandtab: */