首页 > 解决方案 > 如何指定金属着色器语言版本?

问题描述

我的应用程序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 Language 版本...

我希望编译器或 App Store Uploader 能抓住这一点。

更新 2:

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

标签: iosmetal

解决方案


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


推荐阅读