【问题标题】:Metal shading language IR format金属底纹语言 IR 格式
【发布时间】:2018-04-13 06:45:30
【问题描述】:

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

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

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

  2. Metal 游戏必须将编译后的 IR 发送到驱动程序进行渲染,对吗?能不能用高级Metal着色语言,比如opengl游戏直接用glsl

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

谢谢!

【问题讨论】:

    标签: ios metal


    【解决方案1】:

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

    默认情况下,它会生成.air 文件,这些文件是 LLVM 位码。可以使用llvm-dis之类的工具来拆解。

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

    【讨论】:

    • 由于 metal 编译器生成 LLVM 位码,因此可以使用 SPIRV-LLVM-Translator 将其转换为 SPIRV。
    【解决方案2】:

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

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

    这里有更多关于构建的信息:

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-10
      • 1970-01-01
      • 1970-01-01
      • 2017-09-14
      • 1970-01-01
      • 2016-06-29
      • 2017-06-14
      • 1970-01-01
      相关资源
      最近更新 更多