对于运行时生成的着色器代码,我有兴趣探索是否可以直接自动生成已编译的 Metal Shader Language(MSL)代码(如.metallib
文件中所示,和newLibraryWithData:error:
方法一起使用),而不是自动生成人类可读的MSL源代码(与newLibraryWithSource:options:error:
方法一起使用)。
基本原理有两个方面:
文档是否可用于编译的MSL代码格式,如.metallib
文件中所示?编译格式是GPU特定的,还是作为中间语言格式存在,在newLibraryWithData:error:
方法的最终编译阶段采用GPU级别?
答案 0 :(得分:5)
metallib
文件的格式未公开记录。库文件实质上包含元数据和编译的着色器代码,这些代码是LLVM派生的中间语言,与设备无关。还有第二个后端编译步骤,可将此中间语言转换为最终的机器代码。无法直接生成中间代码,但如果这是您想要的功能,则应向Apple提交增强请求错误。