金属着色语言IR格式

时间:2018-04-13 06:45:31

标签: ios metal

这些天我正在尝试Apple'Metal。 似乎金属着色语言与vulkan glsl非常相似。

一些问题: 1.有没有开源编译器来编译Metal着色语言?或者它可以翻译成另一种着色语言? glslspirv

  1. Apple'Metal编译器的输出格式是什么?我看到有人提到它是LLVM IR,但我找不到任何文档。

  2. 金属游戏必须将已编译的IR发送给驱动程序进行渲染,对吗?他们可以使用高级金属着色语言,例如opengl游戏直接使用glsl吗?

  3. 想知道是否有一些文档描述了Apple的Metal IR?

    谢谢!

2 个答案:

答案 0 :(得分:2)

编译MSL的metal工具是clang的修改版本,但我不认为这些修改是开源的。它接受许多与clang相同的命令行选项来生成各种输出文件。

默认情况下,它会生成.air个文件,这些文件是LLVM bitcode。您可以使用llvm-dis之类的工具来反汇编它们。

Metal应用程序可以使用预编译着色器,也可以在运行时从MSL源编译。应用会针对后者使用-newLibraryWithSource:... MTLDevice方法之一。

答案 1 :(得分:0)

发件人:https://developer.apple.com/metal/Metal-Shading-Language-Specification.pdf

  

Metal使用clang和LLVM,因此开发人员可以使用编译器,为在GPU上执行的代码提供接近金属性能的编译器

有关在此处构建的更多信息:

https://developer.apple.com/library/archive/documentation/Miscellaneous/Conceptual/MetalProgrammingGuide/Dev-Technique/Dev-Technique.html#//apple_ref/doc/uid/TP40014221-CH8-SW1

  

使用命令行实用程序构建库文件

xcrun -sdk macosx metal MyLibrary.metal -o MyLibrary.air
xcrun -sdk macosx metallib MyLibrary.air -o MyLibrary.metallib