M1 Mac mini がやってきた
我が家に M1 Chip の Mac mini がやってきました。これまで、Metal の試行錯誤は、Intel Mac の Simulator と 実際の iPhone や iPad でサポートしている機能が違うので、試行錯誤の効率が悪かったのですが、M1 Chip Mac を入手したので、A12相当の機能の試行錯誤などの効率があがるものと期待していました。しかし、M1 Chip の Mac の Simulator で検証コードを動かすと、思いもよらぬところで落ちました。
「あれ?」と思い、iPad Pro で実行すると、落ちません。そこで、色々調べ始めると、M1 Chip + Big Sur + Xcode 12.2 のシミュレータでは、A8相当にしかならない事に気がつきました。そこで、2020年10月21日つまり比較的最近アップデートされた、Metal Feature Set Tables を調べてみても、M1 の記述が全くありません。
Metal Feature Set Tables
Appleの公式ドキュメントはこれです。
iOS, macOSの実行環境は結構組み合わせが多い
よくよく考えると、macOS, iOS で動作するアプリの環境は様々です。
- iOS native on A chip
- iOS simulator on Intel Mac
- iOS simulator on M chip
- macOS native on Intel Mac
- macOS native on M chip
- macCatalyst on Intel Mac
- macCatalyst on M chip
例えば最終的な実行環境はA chipのみを対象としていても、開発工程で simulator などを使うと効率が上がる場合があります。Metal で試行錯誤を繰り返すには、どの機能がどの環境で動作するのか明確にする必要があると思いました。
MetalFeatureQuery
そこで、簡単にテストできるプロジェクトを作ってみました。上記の組み合わせで動作する筈ですが、まだ全てで試した訳ではありません。
環境
執筆時点の環境は以下の通りです。
Apple Swift version 5.3.1 (swiftlang-1200.0.41 clang-1200.0.32.8)
Target: arm64-apple-darwin20.1.0
Xcode Version 12.2 (12B45b)
macOS Big Sur 11.0.1 (20B29)
License
MIT License