Как указать версию Metal Shader Language?

Мое приложение получил Binary Rejected в третий раз. Аварийные журналы не помогают (я их символизировал, но они не содержат журналов печати...).

Работает нормально на iPhone 6s, iPhone X а также iPad Pro 12.9

Я тестирую на iOS 12 с целью приложения iOS 11

Так как Metal для iOS нельзя запустить в симуляторе, я не тестировал на iOS 11

Так что я получил Crashlytics и получил некоторую информацию для crash_info_entry_0 ключ:

... Error Domain = AGXMetalA8X Code = 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.

1 ответ

Решение

В целях, которые содержат код Metal, есть параметр сборки, называемый "Редакция языка Metal" (фактический ключ MTL_LANGUAGE_REVISIONи допустимые значения включают Metal12 а также Metal20, что соответствует языковым версиям 1.2 и 2.0 соответственно), что позволяет указать предпочитаемую версию MSL. Если этот параметр не задан, этот параметр выбирает значение по умолчанию, подходящее для текущего SDK и цели развертывания, что в вашем случае представляется слишком агрессивным. Если вы не используете функции MSL 2.1, вы можете явно установить для этого "Metal 2.0" в разделе "Настройки сборки" настроек вашей цели.

Другие вопросы по тегам