Проверка, включен ли «Prefer External GPU» в Objective-C - PullRequest
0 голосов
/ 02 ноября 2018

Я создаю приложение, которое должно вести себя по-другому, если «Предпочитать внешний графический процессор» включено или нет.

Объяснение это быстро: в Мохаве, теперь вы можете включить опцию называется "Предпочитать внешний графический процессор" для любого приложения в его "Получить info " window.

Хотя я все еще не мог найти какой-либо метод для получения этой информации.

  • NSBundle не изменился со времен El Capitan, поэтому он не содержит никакой информации, связанной с eGPU.
  • MTLDevice не получил никакой функции isEnabled или подобной, и ни один из его новых методов Mojave, похоже, тоже не помог.
  • MTLCopyAllDevices возвращает массив ссылок на все устройства Metal в системе в соответствии с официальной документацией , так что включает в себя eGPU, даже выбранный вариант выбран.
  • MTLCopyAllDevicesWithObserver имеет ту же проблему, так как в примере в документации он возвращает всех металлических устройств, доступных для системы , так что в основном снова игнорируется упомянутая опция.
  • Команда терминала mdls, похоже, также не отображает никакой информации, связанной с eGPU (хотя я могу ошибаться, поскольку у меня нет никакого eGPU, чтобы проверить его вывод для приложения, если я включил упомянутую опцию) , Тем не менее, если он существует, он все еще недокументирован:

Ключи атрибутов общих метаданных https://developer.apple.com/documentation/coreservices/file_metadata/mditem/common_metadata_attribute_keys?language=objc

Ключи атрибутов метаданных файловой системы https://developer.apple.com/documentation/coreservices/file_metadata/mditem/file_system_metadata_attribute_keys?language=objc

Кто-нибудь знает, как проверить это в Objective-C или с помощью команды терминала? (Я бы предпочел первый вариант, но в случае, если нет другого способа, я могу запустить команду терминала в приложении).

...