Redefine derivations of MVK_APPLE_SILICON, MVK_MACOS_APPLE_SILICON, and MVK_XCODE_12.
Derive MVK_APPLE_SILICON from target CPU.
Derive MVK_MACOS_APPLE_SILICON from target CPU and macOS platform.
Derive MVK_XCODE_12 from macOS and iOS SDK versions.
Test for simulator on non-Apple GPU using MVK_OS_SIMULATOR && !MVK_APPLE_SILICON.
diff --git a/Common/MVKCommonEnvironment.h b/Common/MVKCommonEnvironment.h
index 6d72a85..2e61f97 100644
--- a/Common/MVKCommonEnvironment.h
+++ b/Common/MVKCommonEnvironment.h
@@ -77,19 +77,19 @@
# define MVK_OS_SIMULATOR TARGET_OS_SIMULATOR
#endif
-/** Building for macOS with support for Apple Silicon. */
-#ifndef MVK_MACOS_APPLE_SILICON
-# define MVK_MACOS_APPLE_SILICON (__MAC_OS_X_VERSION_MAX_ALLOWED >= 101600)
+/** Building for Apple Silicon on iOS, tvOS, or macOS platform. */
+#ifndef MVK_APPLE_SILICON
+# define MVK_APPLE_SILICON TARGET_CPU_ARM64
#endif
-/** Building for Apple Silicon. */
-#ifndef MVK_APPLE_SILICON
-# define MVK_APPLE_SILICON (MVK_IOS || MVK_TVOS || MVK_MACOS_APPLE_SILICON)
+/** Building for macOS with support for Apple Silicon. */
+#ifndef MVK_MACOS_APPLE_SILICON
+# define MVK_MACOS_APPLE_SILICON (MVK_MACOS && MVK_APPLE_SILICON)
#endif
/** Building with Xcode 12. */
#ifndef MVK_XCODE_12
-# define MVK_XCODE_12 (MVK_MACOS_APPLE_SILICON || \
+# define MVK_XCODE_12 ((__MAC_OS_X_VERSION_MAX_ALLOWED >= 101600) || \
(__IPHONE_OS_VERSION_MAX_ALLOWED >= 140000)) // Also covers tvOS
#endif
diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKDevice.mm b/MoltenVK/MoltenVK/GPUObjects/MVKDevice.mm
index 1396f72..10de877 100644
--- a/MoltenVK/MoltenVK/GPUObjects/MVKDevice.mm
+++ b/MoltenVK/MoltenVK/GPUObjects/MVKDevice.mm
@@ -1546,13 +1546,9 @@
#endif
}
- // iOS and tvOS adjustments necessary when running in the simulator on non-Apple GPUs.
- // Apple1 used as baseline for detecting Apple Silicon on macOS because Apple7 not supported for tvOS.
- // Must run after setting native iOS and tvOS values above.
-#if MVK_OS_SIMULATOR
- if ( !supportsMTLGPUFamily(Apple1) ) {
- _metalFeatures.mtlBufferAlignment = 256;
- }
+// iOS and tvOS adjustments necessary when running in the simulator on non-Apple GPUs.
+#if MVK_OS_SIMULATOR && !MVK_APPLE_SILICON
+ _metalFeatures.mtlBufferAlignment = 256;
#endif
}