如何指定Metal Shader Language版本?

Hex*_*ons 1 ios metal

我的应用程序Binary Rejected第三次获得。崩溃日志没有帮助(我已经对它们进行了符号化,但它们不包含任何打印日志......)。

运行良好iPhone 6siPhone X并且iPad Pro 12.9

我正在iOS 12使用应用程序目标进行测试iOS 11

由于 Metal for iOS 无法在模拟器中运行,所以我没有测试过iOS 11

所以我得到了 Crashlytics 并获得了密钥的一些信息crash_info_entry_0

...错误域=AGXMetalA8X代码=3“功能...正在使用与此操作系统不兼容的语言版本2.1。”...

它发生在iPad Air 2 (A8)跑步时iOS 11.4.1

所以我猜问题是iOS 11不支持金属language version 2.1

如何将语言版本更改为2.0

更新1:

检查我的 Metal Lib 后,它确实有一个目标iOS 12。不过,它在应用程序目标为iOS 11. 我现在已将 Metal Lib 目标更改为iOS 11,我希望也更改 Metal 语言版本...

我希望编译器或应用商店上传器能够捕捉到这一点。

更新2:

有效!更改 Metal Lib 的 iOS 版本目标也会更改 Metal Shader Language 版本。

war*_*enm 5

在包含 Metal 代码的目标中,有一个名为“Metal language revision”的构建设置(实际键为MTL_LANGUAGE_REVISION,有效值包括Metal12Metal20,分别对应于语言版本 1.2 和 2.0),允许您指定首选的 MSL 版本。如果未设置,此设置会选择适合当前 SDK 和部署目标的默认值,这在您的情况下似乎过于激进。如果您不使用 MSL 2.1 功能,则可以在目标设置的“构建设置”部分中明确将其设置为“Metal 2.0”。