|
@@ -373,8 +373,10 @@ set_option(VIDEO_COCOA "Use Cocoa video driver" ${APPLE})
|
|
|
set_option(DIRECTX "Use DirectX for Windows audio/video" ${WINDOWS})
|
|
|
set_option(WASAPI "Use the Windows WASAPI audio driver" ${WINDOWS})
|
|
|
set_option(RENDER_D3D "Enable the Direct3D render driver" ${WINDOWS})
|
|
|
+set_option(RENDER_METAL "Enable the Metal render driver" ${APPLE})
|
|
|
set_option(VIDEO_VIVANTE "Use Vivante EGL video driver" ${UNIX_SYS})
|
|
|
dep_option(VIDEO_VULKAN "Enable Vulkan support" ON "ANDROID OR APPLE OR LINUX OR WINDOWS" OFF)
|
|
|
+set_option(VIDEO_METAL "Enable Metal support" ${APPLE})
|
|
|
set_option(VIDEO_KMSDRM "Use KMS DRM video driver" ${UNIX_SYS})
|
|
|
dep_option(KMSDRM_SHARED "Dynamically load KMS DRM support" ON "VIDEO_KMSDRM" OFF)
|
|
|
option_string(BACKGROUNDING_SIGNAL "number to use for magic backgrounding signal or 'OFF'" "OFF")
|
|
@@ -1533,6 +1535,69 @@ elseif(APPLE)
|
|
|
set(HAVE_SDL_FILESYSTEM TRUE)
|
|
|
endif()
|
|
|
|
|
|
+ # iOS hack needed - http://code.google.com/p/ios-cmake/ ?
|
|
|
+ if(SDL_VIDEO)
|
|
|
+ if (IOS)
|
|
|
+ set(SDL_VIDEO_DRIVER_UIKIT 1)
|
|
|
+ file(GLOB UIKITVIDEO_SOURCES ${SDL2_SOURCE_DIR}/src/video/uikit/*.m)
|
|
|
+ set(SOURCE_FILES ${SOURCE_FILES} ${UIKITVIDEO_SOURCES})
|
|
|
+ else()
|
|
|
+ CheckCOCOA()
|
|
|
+ if(VIDEO_OPENGL)
|
|
|
+ set(SDL_VIDEO_OPENGL 1)
|
|
|
+ set(SDL_VIDEO_OPENGL_CGL 1)
|
|
|
+ set(SDL_VIDEO_RENDER_OGL 1)
|
|
|
+ set(HAVE_VIDEO_OPENGL TRUE)
|
|
|
+ endif()
|
|
|
+
|
|
|
+ if(VIDEO_OPENGLES)
|
|
|
+ set(SDL_VIDEO_OPENGL_EGL 1)
|
|
|
+ set(SDL_VIDEO_OPENGL_ES2 1)
|
|
|
+ set(SDL_VIDEO_RENDER_OGL_ES2 1)
|
|
|
+ set(HAVE_VIDEO_OPENGLES TRUE)
|
|
|
+ endif()
|
|
|
+ endif()
|
|
|
+
|
|
|
+ if(VIDEO_VULKAN OR VIDEO_METAL OR RENDER_METAL)
|
|
|
+ set(ORIG_CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS})
|
|
|
+ set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -x objective-c")
|
|
|
+ check_c_source_compiles("
|
|
|
+ #include <AvailabilityMacros.h>
|
|
|
+ #import <Metal/Metal.h>
|
|
|
+ #import <QuartzCore/CAMetalLayer.h>
|
|
|
+
|
|
|
+ #if TARGET_OS_SIMULATOR || (!TARGET_CPU_X86_64 && !TARGET_CPU_ARM64)
|
|
|
+ #error Metal doesn't work on this configuration
|
|
|
+ #endif
|
|
|
+ int main()
|
|
|
+ {
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+ " HAVE_FRAMEWORK_METAL)
|
|
|
+ set(CMAKE_REQUIRED_FLAGS ${ORIG_CMAKE_REQUIRED_FLAGS})
|
|
|
+ if(HAVE_FRAMEWORK_METAL)
|
|
|
+ set(SDL_FRAMEWORK_METAL 1)
|
|
|
+ set(SDL_FRAMEWORK_QUARTZCORE 1)
|
|
|
+ else()
|
|
|
+ set(VIDEO_VULKAN 0)
|
|
|
+ set(VIDEO_METAL 0)
|
|
|
+ set(RENDER_METAL 0)
|
|
|
+ endif()
|
|
|
+ endif()
|
|
|
+
|
|
|
+ if(VIDEO_METAL)
|
|
|
+ set(SDL_VIDEO_METAL 1)
|
|
|
+ set(HAVE_VIDEO_METAL TRUE)
|
|
|
+ endif()
|
|
|
+
|
|
|
+ if(RENDER_METAL)
|
|
|
+ file(GLOB RENDER_METAL_SOURCES ${SDL2_SOURCE_DIR}/src/render/metal/*.m)
|
|
|
+ set(SOURCE_FILES ${SOURCE_FILES} ${RENDER_METAL_SOURCES})
|
|
|
+ set(SDL_VIDEO_RENDER_METAL 1)
|
|
|
+ set(HAVE_RENDER_METAL TRUE)
|
|
|
+ endif()
|
|
|
+ endif()
|
|
|
+
|
|
|
# Actually load the frameworks at the end so we don't duplicate include.
|
|
|
if(SDL_FRAMEWORK_COREVIDEO)
|
|
|
find_library(COREVIDEO CoreVideo)
|
|
@@ -1562,28 +1627,20 @@ elseif(APPLE)
|
|
|
find_library(AUDIOTOOLBOX AudioToolbox)
|
|
|
list(APPEND EXTRA_LIBS ${AUDIOTOOLBOX})
|
|
|
endif()
|
|
|
-
|
|
|
- # iOS hack needed - http://code.google.com/p/ios-cmake/ ?
|
|
|
- if(SDL_VIDEO)
|
|
|
- if (IOS)
|
|
|
- set(SDL_VIDEO_DRIVER_UIKIT 1)
|
|
|
- file(GLOB UIKITVIDEO_SOURCES ${SDL2_SOURCE_DIR}/src/video/uikit/*.m)
|
|
|
- set(SOURCE_FILES ${SOURCE_FILES} ${UIKITVIDEO_SOURCES})
|
|
|
+ if(SDL_FRAMEWORK_METAL)
|
|
|
+ if(IOS)
|
|
|
+ find_library(METAL Metal)
|
|
|
+ list(APPEND EXTRA_LIBS ${METAL})
|
|
|
else()
|
|
|
- CheckCOCOA()
|
|
|
- if(VIDEO_OPENGL)
|
|
|
- set(SDL_VIDEO_OPENGL 1)
|
|
|
- set(SDL_VIDEO_OPENGL_CGL 1)
|
|
|
- set(SDL_VIDEO_RENDER_OGL 1)
|
|
|
- set(HAVE_VIDEO_OPENGL TRUE)
|
|
|
- endif()
|
|
|
-
|
|
|
- if(VIDEO_OPENGLES)
|
|
|
- set(SDL_VIDEO_OPENGL_EGL 1)
|
|
|
- set(SDL_VIDEO_OPENGL_ES2 1)
|
|
|
- set(SDL_VIDEO_RENDER_OGL_ES2 1)
|
|
|
- set(HAVE_VIDEO_OPENGLES TRUE)
|
|
|
- endif()
|
|
|
+ list(APPEND EXTRA_LDFLAGS "-Wl,-weak_framework,Metal")
|
|
|
+ endif()
|
|
|
+ endif()
|
|
|
+ if(SDL_FRAMEWORK_QUARTZCORE)
|
|
|
+ if(IOS)
|
|
|
+ find_library(QUARTZCORE QuartzCore)
|
|
|
+ list(APPEND EXTRA_LIBS ${QUARTZCORE})
|
|
|
+ else()
|
|
|
+ list(APPEND EXTRA_LDFLAGS "-Wl,-weak_framework,QuartzCore")
|
|
|
endif()
|
|
|
endif()
|
|
|
|