mirror of
https://github.com/libsdl-org/SDL.git
synced 2026-05-30 13:28:13 +08:00
Enable building the Metal renderer by default, and weak link the Metal framework so the SDL library is safe to use on older Macs
Also generate iOS versions of the Metal shaders
This commit is contained in:
@@ -596,6 +596,21 @@
|
||||
AAC07107195606770073DCDF /* SDL_opengles2_khrplatform.h in Headers */ = {isa = PBXBuildFile; fileRef = AAC070F8195606770073DCDF /* SDL_opengles2_khrplatform.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
AADA5B8716CCAB3000107CF7 /* SDL_bits.h in Headers */ = {isa = PBXBuildFile; fileRef = AADA5B8616CCAB3000107CF7 /* SDL_bits.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
AADA5B8816CCAB3000107CF7 /* SDL_bits.h in Headers */ = {isa = PBXBuildFile; fileRef = AADA5B8616CCAB3000107CF7 /* SDL_bits.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
AADC5A431FDA035D00960936 /* SDL_shaders_metal_osx.h in Headers */ = {isa = PBXBuildFile; fileRef = AADC5A411FDA035D00960936 /* SDL_shaders_metal_osx.h */; };
|
||||
AADC5A441FDA035D00960936 /* SDL_render_metal.m in Sources */ = {isa = PBXBuildFile; fileRef = AADC5A421FDA035D00960936 /* SDL_render_metal.m */; };
|
||||
AADC5A451FDA047900960936 /* SDL_render_metal.m in Sources */ = {isa = PBXBuildFile; fileRef = AADC5A421FDA035D00960936 /* SDL_render_metal.m */; };
|
||||
AADC5A461FDA047B00960936 /* SDL_shaders_metal_osx.h in Headers */ = {isa = PBXBuildFile; fileRef = AADC5A411FDA035D00960936 /* SDL_shaders_metal_osx.h */; };
|
||||
AADC5A471FDA047E00960936 /* SDL_shaders_metal_osx.h in Headers */ = {isa = PBXBuildFile; fileRef = AADC5A411FDA035D00960936 /* SDL_shaders_metal_osx.h */; };
|
||||
AADC5A481FDA048100960936 /* SDL_render_metal.m in Sources */ = {isa = PBXBuildFile; fileRef = AADC5A421FDA035D00960936 /* SDL_render_metal.m */; };
|
||||
AADC5A491FDA05C100960936 /* yuv_rgb.h in Headers */ = {isa = PBXBuildFile; fileRef = AA9A7F0F1FB0206300FED37F /* yuv_rgb.h */; };
|
||||
AADC5A4A1FDA05C200960936 /* yuv_rgb.h in Headers */ = {isa = PBXBuildFile; fileRef = AA9A7F0F1FB0206300FED37F /* yuv_rgb.h */; };
|
||||
AADC5A4B1FDA05CF00960936 /* SDL_yuv_c.h in Headers */ = {isa = PBXBuildFile; fileRef = AA9A7F141FB0209C00FED37F /* SDL_yuv_c.h */; };
|
||||
AADC5A4C1FDA05CF00960936 /* SDL_yuv_c.h in Headers */ = {isa = PBXBuildFile; fileRef = AA9A7F141FB0209C00FED37F /* SDL_yuv_c.h */; };
|
||||
AADC5A4D1FDA05D300960936 /* SDL_vulkan_internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 4D16644C1EDD6023003DE88E /* SDL_vulkan_internal.h */; };
|
||||
AADC5A4E1FDA05D400960936 /* SDL_vulkan_internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 4D16644C1EDD6023003DE88E /* SDL_vulkan_internal.h */; };
|
||||
AADC5A4F1FDA05E600960936 /* SDL_cocoavulkan.h in Headers */ = {isa = PBXBuildFile; fileRef = 4D1664511EDD60AD003DE88E /* SDL_cocoavulkan.h */; };
|
||||
AADC5A501FDA05E600960936 /* SDL_cocoavulkan.h in Headers */ = {isa = PBXBuildFile; fileRef = 4D1664511EDD60AD003DE88E /* SDL_cocoavulkan.h */; };
|
||||
AADC5A5B1FDA0E3B00960936 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AADC5A591FDA0E0800960936 /* QuartzCore.framework */; };
|
||||
BBFC088D164C6647003E6A99 /* SDL_gamecontroller.c in Sources */ = {isa = PBXBuildFile; fileRef = BBFC088A164C6514003E6A99 /* SDL_gamecontroller.c */; };
|
||||
D55A1B81179F262300625D7C /* SDL_cocoamousetap.h in Headers */ = {isa = PBXBuildFile; fileRef = D55A1B7F179F262300625D7C /* SDL_cocoamousetap.h */; };
|
||||
D55A1B82179F262300625D7C /* SDL_cocoamousetap.m in Sources */ = {isa = PBXBuildFile; fileRef = D55A1B80179F262300625D7C /* SDL_cocoamousetap.m */; };
|
||||
@@ -1156,6 +1171,9 @@
|
||||
AAC070F7195606770073DCDF /* SDL_opengles2_gl2platform.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_opengles2_gl2platform.h; sourceTree = "<group>"; };
|
||||
AAC070F8195606770073DCDF /* SDL_opengles2_khrplatform.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_opengles2_khrplatform.h; sourceTree = "<group>"; };
|
||||
AADA5B8616CCAB3000107CF7 /* SDL_bits.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_bits.h; sourceTree = "<group>"; };
|
||||
AADC5A411FDA035D00960936 /* SDL_shaders_metal_osx.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_shaders_metal_osx.h; sourceTree = "<group>"; };
|
||||
AADC5A421FDA035D00960936 /* SDL_render_metal.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDL_render_metal.m; sourceTree = "<group>"; };
|
||||
AADC5A591FDA0E0800960936 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = QuartzCore.framework; sourceTree = "<group>"; };
|
||||
BBFC088A164C6514003E6A99 /* SDL_gamecontroller.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_gamecontroller.c; sourceTree = "<group>"; };
|
||||
BECDF66B0761BA81005FE872 /* Info-Framework.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Info-Framework.plist"; sourceTree = "<group>"; };
|
||||
BECDF66C0761BA81005FE872 /* SDL2.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SDL2.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
@@ -1178,13 +1196,14 @@
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
A7381E971D8B6A0300B177DD /* AudioToolbox.framework in Frameworks */,
|
||||
A7381E961D8B69D600B177DD /* CoreAudio.framework in Frameworks */,
|
||||
FA73671D19A540EF004122E4 /* CoreVideo.framework in Frameworks */,
|
||||
007317A40858DECD00B2BC32 /* Cocoa.framework in Frameworks */,
|
||||
007317A60858DECD00B2BC32 /* IOKit.framework in Frameworks */,
|
||||
00D0D08410675DD9004B05EF /* CoreFoundation.framework in Frameworks */,
|
||||
00D0D0D810675E46004B05EF /* Carbon.framework in Frameworks */,
|
||||
007317A40858DECD00B2BC32 /* Cocoa.framework in Frameworks */,
|
||||
A7381E961D8B69D600B177DD /* CoreAudio.framework in Frameworks */,
|
||||
00D0D08410675DD9004B05EF /* CoreFoundation.framework in Frameworks */,
|
||||
FA73671D19A540EF004122E4 /* CoreVideo.framework in Frameworks */,
|
||||
00CFA89D106B4BA100758660 /* ForceFeedback.framework in Frameworks */,
|
||||
007317A60858DECD00B2BC32 /* IOKit.framework in Frameworks */,
|
||||
AADC5A5B1FDA0E3B00960936 /* QuartzCore.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
@@ -1305,6 +1324,7 @@
|
||||
041B2C9712FA0D680087D585 /* render */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
AADC5A401FDA030E00960936 /* metal */,
|
||||
5C2EF6921FC986D8003F5197 /* opengles2 */,
|
||||
041B2C9A12FA0D680087D585 /* opengl */,
|
||||
041B2CA012FA0D680087D585 /* software */,
|
||||
@@ -1834,17 +1854,27 @@
|
||||
path = ../../src/video/yuv2rgb;
|
||||
sourceTree = SOURCE_ROOT;
|
||||
};
|
||||
AADC5A401FDA030E00960936 /* metal */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
AADC5A421FDA035D00960936 /* SDL_render_metal.m */,
|
||||
AADC5A411FDA035D00960936 /* SDL_shaders_metal_osx.h */,
|
||||
);
|
||||
path = metal;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
BEC562FE0761C0E800A33029 /* Linked Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
A7381E931D8B69C300B177DD /* AudioToolbox.framework */,
|
||||
A7381E951D8B69D600B177DD /* CoreAudio.framework */,
|
||||
FA73671C19A540EF004122E4 /* CoreVideo.framework */,
|
||||
00D0D08310675DD9004B05EF /* CoreFoundation.framework */,
|
||||
007317C10858E15000B2BC32 /* Carbon.framework */,
|
||||
0073179D0858DECD00B2BC32 /* Cocoa.framework */,
|
||||
0073179F0858DECD00B2BC32 /* IOKit.framework */,
|
||||
A7381E951D8B69D600B177DD /* CoreAudio.framework */,
|
||||
00D0D08310675DD9004B05EF /* CoreFoundation.framework */,
|
||||
FA73671C19A540EF004122E4 /* CoreVideo.framework */,
|
||||
00CFA89C106B4BA100758660 /* ForceFeedback.framework */,
|
||||
0073179F0858DECD00B2BC32 /* IOKit.framework */,
|
||||
AADC5A591FDA0E0800960936 /* QuartzCore.framework */,
|
||||
);
|
||||
name = "Linked Frameworks";
|
||||
sourceTree = "<group>";
|
||||
@@ -1875,6 +1905,7 @@
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
AA7557FA1595D4D800BBD41B /* begin_code.h in Headers */,
|
||||
AADC5A431FDA035D00960936 /* SDL_shaders_metal_osx.h in Headers */,
|
||||
AA7557FC1595D4D800BBD41B /* close_code.h in Headers */,
|
||||
AA75585E1595D4D800BBD41B /* SDL.h in Headers */,
|
||||
AA7557FE1595D4D800BBD41B /* SDL_assert.h in Headers */,
|
||||
@@ -2112,6 +2143,7 @@
|
||||
04BD025D12E6671800899322 /* blank_cursor.h in Headers */,
|
||||
04BD025E12E6671800899322 /* default_cursor.h in Headers */,
|
||||
04BD025F12E6671800899322 /* scancodes_darwin.h in Headers */,
|
||||
AADC5A4F1FDA05E600960936 /* SDL_cocoavulkan.h in Headers */,
|
||||
5C2EF6FA1FC9EE64003F5197 /* SDL_egl_c.h in Headers */,
|
||||
04BD026012E6671800899322 /* scancodes_linux.h in Headers */,
|
||||
04BD026212E6671800899322 /* scancodes_xfree86.h in Headers */,
|
||||
@@ -2119,7 +2151,9 @@
|
||||
04BD026612E6671800899322 /* SDL_events_c.h in Headers */,
|
||||
56A67022185654B40007D20F /* SDL_dynapi_procs.h in Headers */,
|
||||
04BD026812E6671800899322 /* SDL_gesture_c.h in Headers */,
|
||||
AADC5A4D1FDA05D300960936 /* SDL_vulkan_internal.h in Headers */,
|
||||
04BD026A12E6671800899322 /* SDL_keyboard_c.h in Headers */,
|
||||
AADC5A491FDA05C100960936 /* yuv_rgb.h in Headers */,
|
||||
04BD026C12E6671800899322 /* SDL_mouse_c.h in Headers */,
|
||||
04BD026E12E6671800899322 /* SDL_sysevents.h in Headers */,
|
||||
04BD027012E6671800899322 /* SDL_touch_c.h in Headers */,
|
||||
@@ -2175,6 +2209,7 @@
|
||||
04BD040F12E6671800899322 /* SDL_x11video.h in Headers */,
|
||||
AAC07100195606770073DCDF /* SDL_opengles2_gl2ext.h in Headers */,
|
||||
04BD041112E6671800899322 /* SDL_x11window.h in Headers */,
|
||||
AADC5A4B1FDA05CF00960936 /* SDL_yuv_c.h in Headers */,
|
||||
041B2CAC12FA0D680087D585 /* SDL_sysrender.h in Headers */,
|
||||
04409B9712FA97ED00FB9AA8 /* SDL_yuv_sw_c.h in Headers */,
|
||||
04F7803B12FB748500FC43C0 /* SDL_nullframebuffer_c.h in Headers */,
|
||||
@@ -2182,6 +2217,7 @@
|
||||
04F7805612FB74A200FC43C0 /* SDL_blendfillrect.h in Headers */,
|
||||
04F7805812FB74A200FC43C0 /* SDL_blendline.h in Headers */,
|
||||
04F7805A12FB74A200FC43C0 /* SDL_blendpoint.h in Headers */,
|
||||
AADC5A461FDA047B00960936 /* SDL_shaders_metal_osx.h in Headers */,
|
||||
04F7805B12FB74A200FC43C0 /* SDL_draw.h in Headers */,
|
||||
04F7805D12FB74A200FC43C0 /* SDL_drawline.h in Headers */,
|
||||
04F7805F12FB74A200FC43C0 /* SDL_drawpoint.h in Headers */,
|
||||
@@ -2271,6 +2307,7 @@
|
||||
DB313F7C17554B71006C0E22 /* blank_cursor.h in Headers */,
|
||||
DB313F7D17554B71006C0E22 /* default_cursor.h in Headers */,
|
||||
DB313F7E17554B71006C0E22 /* scancodes_darwin.h in Headers */,
|
||||
AADC5A501FDA05E600960936 /* SDL_cocoavulkan.h in Headers */,
|
||||
5C2EF6FD1FC9EE65003F5197 /* SDL_egl_c.h in Headers */,
|
||||
DB313F7F17554B71006C0E22 /* scancodes_linux.h in Headers */,
|
||||
DB313F8017554B71006C0E22 /* scancodes_xfree86.h in Headers */,
|
||||
@@ -2278,7 +2315,9 @@
|
||||
DB313F8217554B71006C0E22 /* SDL_events_c.h in Headers */,
|
||||
56A67023185654B40007D20F /* SDL_dynapi_procs.h in Headers */,
|
||||
DB313F8317554B71006C0E22 /* SDL_gesture_c.h in Headers */,
|
||||
AADC5A4E1FDA05D400960936 /* SDL_vulkan_internal.h in Headers */,
|
||||
DB313F8417554B71006C0E22 /* SDL_keyboard_c.h in Headers */,
|
||||
AADC5A4A1FDA05C200960936 /* yuv_rgb.h in Headers */,
|
||||
DB313F8517554B71006C0E22 /* SDL_mouse_c.h in Headers */,
|
||||
DB313F8617554B71006C0E22 /* SDL_sysevents.h in Headers */,
|
||||
DB313F8717554B71006C0E22 /* SDL_touch_c.h in Headers */,
|
||||
@@ -2334,6 +2373,7 @@
|
||||
DB313FB617554B71006C0E22 /* SDL_x11video.h in Headers */,
|
||||
AAC07101195606770073DCDF /* SDL_opengles2_gl2ext.h in Headers */,
|
||||
DB313FB717554B71006C0E22 /* SDL_x11window.h in Headers */,
|
||||
AADC5A4C1FDA05CF00960936 /* SDL_yuv_c.h in Headers */,
|
||||
DB313FB817554B71006C0E22 /* SDL_sysrender.h in Headers */,
|
||||
DB313FBA17554B71006C0E22 /* SDL_yuv_sw_c.h in Headers */,
|
||||
DB313FBB17554B71006C0E22 /* SDL_nullframebuffer_c.h in Headers */,
|
||||
@@ -2341,6 +2381,7 @@
|
||||
DB313FBC17554B71006C0E22 /* SDL_blendfillrect.h in Headers */,
|
||||
DB313FBD17554B71006C0E22 /* SDL_blendline.h in Headers */,
|
||||
DB313FBE17554B71006C0E22 /* SDL_blendpoint.h in Headers */,
|
||||
AADC5A471FDA047E00960936 /* SDL_shaders_metal_osx.h in Headers */,
|
||||
DB313FBF17554B71006C0E22 /* SDL_draw.h in Headers */,
|
||||
DB313FC017554B71006C0E22 /* SDL_drawline.h in Headers */,
|
||||
DB313FC117554B71006C0E22 /* SDL_drawpoint.h in Headers */,
|
||||
@@ -2609,6 +2650,7 @@
|
||||
04409B9412FA97ED00FB9AA8 /* SDL_yuv_sw.c in Sources */,
|
||||
04F7803A12FB748500FC43C0 /* SDL_nullframebuffer.c in Sources */,
|
||||
04F7804912FB74A200FC43C0 /* SDL_blendfillrect.c in Sources */,
|
||||
AADC5A441FDA035D00960936 /* SDL_render_metal.m in Sources */,
|
||||
04F7804B12FB74A200FC43C0 /* SDL_blendline.c in Sources */,
|
||||
04F7804D12FB74A200FC43C0 /* SDL_blendpoint.c in Sources */,
|
||||
5C2EF6F81FC9EE35003F5197 /* SDL_egl.c in Sources */,
|
||||
@@ -2737,6 +2779,7 @@
|
||||
04BD040C12E6671800899322 /* SDL_x11touch.c in Sources */,
|
||||
04BD040E12E6671800899322 /* SDL_x11video.c in Sources */,
|
||||
04BD041012E6671800899322 /* SDL_x11window.c in Sources */,
|
||||
AADC5A451FDA047900960936 /* SDL_render_metal.m in Sources */,
|
||||
041B2CAB12FA0D680087D585 /* SDL_render.c in Sources */,
|
||||
04409B9812FA97ED00FB9AA8 /* SDL_yuv_sw.c in Sources */,
|
||||
04F7803C12FB748500FC43C0 /* SDL_nullframebuffer.c in Sources */,
|
||||
@@ -2865,6 +2908,7 @@
|
||||
DB31405517554B71006C0E22 /* SDL_x11touch.c in Sources */,
|
||||
DB31405617554B71006C0E22 /* SDL_x11video.c in Sources */,
|
||||
DB31405717554B71006C0E22 /* SDL_x11window.c in Sources */,
|
||||
AADC5A481FDA048100960936 /* SDL_render_metal.m in Sources */,
|
||||
DB31405817554B71006C0E22 /* SDL_render.c in Sources */,
|
||||
DB31405A17554B71006C0E22 /* SDL_yuv_sw.c in Sources */,
|
||||
DB31405B17554B71006C0E22 /* SDL_nullframebuffer.c in Sources */,
|
||||
@@ -2954,10 +2998,17 @@
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
DYLIB_COMPATIBILITY_VERSION = 1.0.0;
|
||||
DYLIB_CURRENT_VERSION = 8.0.0;
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"$(PROJECT_DIR)",
|
||||
);
|
||||
FRAMEWORK_VERSION = A;
|
||||
INFOPLIST_FILE = "Info-Framework.plist";
|
||||
INSTALL_PATH = "@rpath";
|
||||
OTHER_LDFLAGS = "-liconv";
|
||||
OTHER_LDFLAGS = (
|
||||
"-Wl,-weak_framework,Metal",
|
||||
"-liconv",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = org.libsdl.SDL2;
|
||||
PRODUCT_NAME = SDL2;
|
||||
PROVISIONING_PROFILE = "";
|
||||
@@ -3043,10 +3094,17 @@
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
DYLIB_COMPATIBILITY_VERSION = 1.0.0;
|
||||
DYLIB_CURRENT_VERSION = 8.0.0;
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"$(PROJECT_DIR)",
|
||||
);
|
||||
FRAMEWORK_VERSION = A;
|
||||
INFOPLIST_FILE = "Info-Framework.plist";
|
||||
INSTALL_PATH = "@rpath";
|
||||
OTHER_LDFLAGS = "-liconv";
|
||||
OTHER_LDFLAGS = (
|
||||
"-Wl,-weak_framework,Metal",
|
||||
"-liconv",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = org.libsdl.SDL2;
|
||||
PRODUCT_NAME = SDL2;
|
||||
PROVISIONING_PROFILE = "";
|
||||
|
||||
@@ -846,6 +846,7 @@ enable_video_x11_xshape
|
||||
enable_video_x11_vm
|
||||
enable_video_vivante
|
||||
enable_video_cocoa
|
||||
enable_render_metal
|
||||
enable_video_directfb
|
||||
enable_directfb_shared
|
||||
enable_video_kmsdrm
|
||||
@@ -1594,6 +1595,7 @@ Optional Features:
|
||||
--enable-video-x11-vm use X11 VM extension for fullscreen [[default=yes]]
|
||||
--enable-video-vivante use Vivante EGL video driver [[default=yes]]
|
||||
--enable-video-cocoa use Cocoa video driver [[default=yes]]
|
||||
--enable-render-metal enable the Metal render driver [[default=yes]]
|
||||
--enable-video-directfb use DirectFB video driver [[default=no]]
|
||||
--enable-directfb-shared
|
||||
dynamically load directfb support [[default=yes]]
|
||||
@@ -21204,6 +21206,24 @@ $as_echo "#define SDL_VIDEO_DRIVER_COCOA 1" >>confdefs.h
|
||||
fi
|
||||
}
|
||||
|
||||
CheckMETAL()
|
||||
{
|
||||
# Check whether --enable-render-metal was given.
|
||||
if test "${enable_render_metal+set}" = set; then :
|
||||
enableval=$enable_render_metal;
|
||||
else
|
||||
enable_render_metal=yes
|
||||
fi
|
||||
|
||||
if test x$enable_render = xyes -a x$enable_render_metal = xyes; then
|
||||
|
||||
$as_echo "#define SDL_VIDEO_RENDER_METAL 1" >>confdefs.h
|
||||
|
||||
SOURCES="$SOURCES $srcdir/src/render/metal/*.m"
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
CheckDirectFB()
|
||||
{
|
||||
# Check whether --enable-video-directfb was given.
|
||||
@@ -21358,9 +21378,6 @@ fi
|
||||
|
||||
$as_echo "#define SDL_VIDEO_DRIVER_DIRECTFB 1" >>confdefs.h
|
||||
|
||||
|
||||
$as_echo "#define SDL_VIDEO_RENDER_DIRECTFB 1" >>confdefs.h
|
||||
|
||||
SOURCES="$SOURCES $srcdir/src/video/directfb/*.c"
|
||||
EXTRA_CFLAGS="$EXTRA_CFLAGS $DIRECTFB_CFLAGS"
|
||||
|
||||
@@ -22998,12 +23015,6 @@ if test "x$ac_cv_header_dxgi_h" = xyes; then :
|
||||
fi
|
||||
|
||||
|
||||
ac_fn_c_check_header_mongrel "$LINENO" "xaudio2.h" "ac_cv_header_xaudio2_h" "$ac_includes_default"
|
||||
if test "x$ac_cv_header_xaudio2_h" = xyes; then :
|
||||
have_xaudio2=yes
|
||||
fi
|
||||
|
||||
|
||||
ac_fn_c_check_header_mongrel "$LINENO" "xinput.h" "ac_cv_header_xinput_h" "$ac_includes_default"
|
||||
if test "x$ac_cv_header_xinput_h" = xyes; then :
|
||||
have_xinput=yes
|
||||
@@ -24005,12 +24016,6 @@ $as_echo "#define SDL_AUDIO_DRIVER_DSOUND 1" >>confdefs.h
|
||||
|
||||
SOURCES="$SOURCES $srcdir/src/audio/directsound/*.c"
|
||||
fi
|
||||
if test x$have_xaudio2 = xyes; then
|
||||
|
||||
$as_echo "#define SDL_AUDIO_DRIVER_XAUDIO2 1" >>confdefs.h
|
||||
|
||||
SOURCES="$SOURCES $srcdir/src/audio/xaudio2/*.c"
|
||||
fi
|
||||
if test x$have_wasapi = xyes; then
|
||||
|
||||
$as_echo "#define SDL_AUDIO_DRIVER_WASAPI 1" >>confdefs.h
|
||||
@@ -24248,8 +24253,9 @@ fi
|
||||
CheckDiskAudio
|
||||
CheckDummyAudio
|
||||
CheckDLOPEN
|
||||
CheckPTHREAD
|
||||
CheckMETAL
|
||||
CheckVulkan
|
||||
CheckPTHREAD
|
||||
|
||||
# Set up files for the audio library
|
||||
if test x$enable_audio = xyes; then
|
||||
@@ -24333,6 +24339,10 @@ $as_echo "#define SDL_VIDEO_RENDER_OGL_ES2 1" >>confdefs.h
|
||||
EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-framework,OpenGLES"
|
||||
EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-framework,QuartzCore"
|
||||
EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-framework,UIKit"
|
||||
|
||||
if test x$enable_render = xyes -a x$enable_render_metal = xyes; then
|
||||
EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-framework,Metal"
|
||||
fi
|
||||
;;
|
||||
*-*-darwin* )
|
||||
# This could be either full "Mac OS X", or plain "Darwin" which is
|
||||
@@ -24351,6 +24361,7 @@ $as_echo "#define SDL_VIDEO_RENDER_OGL_ES2 1" >>confdefs.h
|
||||
CheckDummyAudio
|
||||
CheckDLOPEN
|
||||
CheckCOCOA
|
||||
CheckMETAL
|
||||
CheckX11
|
||||
CheckMacGL
|
||||
CheckOpenGLX11
|
||||
@@ -24420,6 +24431,10 @@ $as_echo "#define SDL_TIMER_UNIX 1" >>confdefs.h
|
||||
EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-framework,Cocoa"
|
||||
EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-framework,Carbon"
|
||||
EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-framework,IOKit"
|
||||
|
||||
if test x$enable_render = xyes -a x$enable_render_metal = xyes; then
|
||||
EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-framework,QuartzCore -Wl,-weak_framework,Metal"
|
||||
fi
|
||||
;;
|
||||
*-nacl|*-pnacl)
|
||||
ARCH=nacl
|
||||
|
||||
+6
-2
@@ -2056,8 +2056,8 @@ AC_HELP_STRING([--enable-video-cocoa], [use Cocoa video driver [[default=yes]]])
|
||||
CheckMETAL()
|
||||
{
|
||||
AC_ARG_ENABLE(render-metal,
|
||||
AC_HELP_STRING([--enable-render-metal], [enable the Metal render driver [[default=no]]]),
|
||||
, enable_render_metal=no)
|
||||
AC_HELP_STRING([--enable-render-metal], [enable the Metal render driver [[default=yes]]]),
|
||||
, enable_render_metal=yes)
|
||||
if test x$enable_render = xyes -a x$enable_render_metal = xyes; then
|
||||
dnl This should maybe make sure you have a supported SDK version.
|
||||
AC_DEFINE(SDL_VIDEO_RENDER_METAL, 1, [ ])
|
||||
@@ -3794,6 +3794,10 @@ AC_HELP_STRING([--enable-render-d3d], [enable the Direct3D render driver [[defau
|
||||
EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-framework,Cocoa"
|
||||
EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-framework,Carbon"
|
||||
EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-framework,IOKit"
|
||||
|
||||
if test x$enable_render = xyes -a x$enable_render_metal = xyes; then
|
||||
EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,-weak_framework,QuartzCore -Wl,-weak_framework,Metal"
|
||||
fi
|
||||
;;
|
||||
*-nacl|*-pnacl)
|
||||
ARCH=nacl
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2015 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2017 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
@@ -32,10 +32,12 @@
|
||||
#include <Metal/Metal.h>
|
||||
#include <QuartzCore/CAMetalLayer.h>
|
||||
|
||||
// these are in SDL_shaders_metal.c, regenerate it with build-metal-shaders.sh
|
||||
extern const unsigned char sdl_metallib[];
|
||||
extern const unsigned int sdl_metallib_len;
|
||||
|
||||
/* Regenerate these with build-metal-shaders.sh */
|
||||
#ifdef __MACOSX__
|
||||
#include "SDL_shaders_metal_osx.h"
|
||||
#else
|
||||
#include "SDL_shaders_metal_ios.h"
|
||||
#endif
|
||||
|
||||
/* Apple Metal renderer implementation */
|
||||
|
||||
@@ -141,10 +143,6 @@ MakePipelineState(METAL_RenderData *data, NSString *label, NSString *vertfn,
|
||||
mtlpipedesc.colorAttachments[0].pixelFormat = data->mtlbackbuffer.texture.pixelFormat;
|
||||
|
||||
switch (blendmode) {
|
||||
case SDL_BLENDMODE_NONE:
|
||||
mtlpipedesc.colorAttachments[0].blendingEnabled = NO;
|
||||
break;
|
||||
|
||||
case SDL_BLENDMODE_BLEND:
|
||||
mtlpipedesc.colorAttachments[0].blendingEnabled = YES;
|
||||
mtlpipedesc.colorAttachments[0].rgbBlendOperation = MTLBlendOperationAdd;
|
||||
@@ -174,6 +172,10 @@ MakePipelineState(METAL_RenderData *data, NSString *label, NSString *vertfn,
|
||||
mtlpipedesc.colorAttachments[0].sourceAlphaBlendFactor = MTLBlendFactorZero;
|
||||
mtlpipedesc.colorAttachments[0].destinationAlphaBlendFactor = MTLBlendFactorOne;
|
||||
break;
|
||||
|
||||
default:
|
||||
mtlpipedesc.colorAttachments[0].blendingEnabled = NO;
|
||||
break;
|
||||
}
|
||||
|
||||
mtlpipedesc.label = label;
|
||||
@@ -204,10 +206,10 @@ static inline id<MTLRenderPipelineState>
|
||||
ChoosePipelineState(id<MTLRenderPipelineState> *states, const SDL_BlendMode blendmode)
|
||||
{
|
||||
switch (blendmode) {
|
||||
case SDL_BLENDMODE_NONE: return states[0];
|
||||
case SDL_BLENDMODE_BLEND: return states[1];
|
||||
case SDL_BLENDMODE_ADD: return states[2];
|
||||
case SDL_BLENDMODE_MOD: return states[3];
|
||||
default: return states[0];
|
||||
}
|
||||
return nil;
|
||||
}
|
||||
@@ -244,8 +246,9 @@ METAL_CreateRenderer(SDL_Window * window, Uint32 flags)
|
||||
renderer->driverdata = data;
|
||||
renderer->window = window;
|
||||
|
||||
data->mtldevice = MTLCreateSystemDefaultDevice(); // !!! FIXME: MTLCopyAllDevices() can find other GPUs...
|
||||
if (data->mtldevice == nil) {
|
||||
#ifdef __MACOSX__
|
||||
id<MTLDevice> mtldevice = MTLCreateSystemDefaultDevice(); // !!! FIXME: MTLCopyAllDevices() can find other GPUs...
|
||||
if (mtldevice == nil) {
|
||||
SDL_free(renderer);
|
||||
SDL_free(data);
|
||||
SDL_SetError("Failed to obtain Metal device");
|
||||
@@ -256,10 +259,10 @@ METAL_CreateRenderer(SDL_Window * window, Uint32 flags)
|
||||
|
||||
NSView *nsview = [syswm.info.cocoa.window contentView];
|
||||
|
||||
// !!! FIXME: on iOS, we need to override +[UIView layerClass] to return [CAMetalLayer class] right from the start, and that's more complicated.
|
||||
CAMetalLayer *layer = [CAMetalLayer layer];
|
||||
// CAMetalLayer is available in QuartzCore starting at OSX 10.11
|
||||
CAMetalLayer *layer = [NSClassFromString( @"CAMetalLayer" ) layer];
|
||||
|
||||
layer.device = data->mtldevice;
|
||||
layer.device = mtldevice;
|
||||
//layer.pixelFormat = MTLPixelFormatBGRA8Unorm; // !!! FIXME: MTLPixelFormatBGRA8Unorm_sRGB ?
|
||||
layer.framebufferOnly = YES;
|
||||
//layer.drawableSize = (CGSize) [nsview convertRectToBacking:[nsview bounds]].size;
|
||||
@@ -269,6 +272,11 @@ METAL_CreateRenderer(SDL_Window * window, Uint32 flags)
|
||||
[nsview setLayer:layer];
|
||||
|
||||
[layer retain];
|
||||
#else
|
||||
|
||||
#endif
|
||||
|
||||
data->mtldevice = layer.device;
|
||||
data->mtllayer = layer;
|
||||
data->mtlcmdqueue = [data->mtldevice newCommandQueue];
|
||||
data->mtlcmdqueue.label = @"SDL Metal Renderer";
|
||||
@@ -318,8 +326,8 @@ METAL_CreateRenderer(SDL_Window * window, Uint32 flags)
|
||||
|
||||
NSError *err = nil;
|
||||
|
||||
// The compiled .metallib is embedded in a static array in SDL_shaders_metal.c,
|
||||
// but the original shader source code is in SDL_shaders_metal.metal.
|
||||
// The compiled .metallib is embedded in a static array in a header file
|
||||
// but the original shader source code is in SDL_shaders_metal.metal.
|
||||
dispatch_data_t mtllibdata = dispatch_data_create(sdl_metallib, sdl_metallib_len, dispatch_get_global_queue(0, 0), ^{});
|
||||
data->mtllibrary = [data->mtldevice newLibraryWithData:mtllibdata error:&err];
|
||||
SDL_assert(err == nil);
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Regular → Executable
+12
-7
@@ -2,12 +2,17 @@
|
||||
|
||||
set -x
|
||||
set -e
|
||||
|
||||
cd `dirname "$0"`
|
||||
rm -f sdl.air sdl.metalar sdl.metallib
|
||||
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/usr/bin/metal -std=osx-metal1.1 -Wall -O3 -o ./sdl.air ./SDL_shaders_metal.metal
|
||||
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/usr/bin/metal-ar rc sdl.metalar sdl.air
|
||||
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/usr/bin/metallib -o sdl.metallib sdl.metalar
|
||||
xxd -i sdl.metallib |perl -w -p -e 's/\Aunsigned /const unsigned /;' >./SDL_shaders_metal.c
|
||||
rm -f sdl.air sdl.metalar sdl.metallib
|
||||
|
||||
generate_shaders()
|
||||
{
|
||||
platform=$1
|
||||
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/usr/bin/metal -std=$platform-metal1.1 -Wall -O3 -o ./sdl.air ./SDL_shaders_metal.metal || exit $?
|
||||
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/usr/bin/metal-ar rc sdl.metalar sdl.air || exit $?
|
||||
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/usr/bin/metallib -o sdl.metallib sdl.metalar || exit $?
|
||||
xxd -i sdl.metallib | perl -w -p -e 's/\Aunsigned /const unsigned /;' >./SDL_shaders_metal_$platform.h
|
||||
rm -f sdl.air sdl.metalar sdl.metallib
|
||||
}
|
||||
|
||||
generate_shaders osx
|
||||
generate_shaders ios
|
||||
|
||||
Reference in New Issue
Block a user