Metalのコマンドラインツールでライブラリを構築する
2020年6月25日 (木) 02:45時点におけるAdministrator (トーク | 投稿記録)による版
Metalのコマンドラインツールでライブラリを構築する
Metal Shading Language(.metalファイル)のコンパイルはXcodeやXamarin.Mac(Visual Studio for Mac)を使うと全自動で行われるので特に意識することはない。
これはSPIR-Vからmetallibファイルを生成するツールを作る際に必要になったものであり普通の人には縁のない話だと思われる。
作る
1つのソースコード(.metalファイル)は1つの中間コード(.airファイル)にコンパイルされる。
xcrun -sdk macosx metal -c vertex.metal -o vertex.air xcrun -sdk macosx metal -c fragment.metal -o fragment.air
複数の中間コード(.airファイル)をリンクして最終的な1つのライブラリ(.metallibファイル)を生成する。
xcrun -sdk macosx metallib *.air -o MyLibrary.metallib
備考
当初、xcrunコマンドを叩くと以下のようなエラーがでた。
xcrun: error: unable to find utility "metal", not a developer tool or in PATH
Xcodeの「Command Line Tools」の設定が空欄になっていたのが原因のようだ。homebrewをインストールした直後はなぜか空欄になってしまうようだ。
使う
ライブラリ(.metallibファイル)をXcodeやXamarin.Macのプロジェクトに追加する。
guard let libraryFile = Bundle.main.path(forResource: "MyLibrary", ofType: "metallib") else { return }
do {
let myLibrary = try device.makeLibrary(filepath: libraryFile)
} catch let error {
print("Library error: \(error.localizedDescription)")
}