如何指定Metal Shader语言版本?

时间:2018-10-11 19:16:21

标签: ios metal

我的应用第三次获得df.values*df.index.get_level_values(1)[:,None] Out[177]: Int64Index([[10, 0, 10], [0, 0, 0], [80, 80, 80]], dtype='int64') pd.DataFrame(df.values*df.index.get_level_values(1)[:,None],index=df.index,columns=df.columns) Out[181]: X Y Z A 10 10 0 10 B 50 0 0 0 C 80 80 80 80 。崩溃日志没有帮助(我已将其符号化,但是它们不包含任何打印日志...)。

Binary RejectediPhone 6siPhone X上运行良好

我正在iPad Pro 12.9上以应用程序目标为iOS 12进行测试

由于iOS版Metal无法在模拟器中运行,因此我尚未在iOS 11上进行过测试

所以我得到了Crashlytics并获得了iOS 11键的一些信息:

  

... Error Domain = AGXMetalA8X代码= 3“功能...使用的语言版本为2.1与此操作系统不兼容。” ...

它发生在运行crash_info_entry_0的{​​{1}}

所以我想问题是iPad Air 2 (A8)不支持金属iOS 11.4.1

如何将语言版本更改为iOS 11

更新1:

检查我的金属库后,确实确实有一个目标language version 2.1。在目标为2.0的情况下运行良好。我现在已经将Metal Lib目标更改为iOS 12,希望也能更改Metal Language版本...

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

更新2:

成功了!更改Metal Lib的iOS版本目标也会更改Metal Shader Language版本。

1 个答案:

答案 0 :(得分:2)

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