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