Я создаю приложение, которое должно вести себя по-другому, если «Предпочитать внешний графический процессор» включено или нет.
Объяснение это быстро: в Мохаве, теперь вы можете включить опцию
называется "Предпочитать внешний графический процессор" для любого приложения в его "Получить
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 или с помощью команды терминала? (Я бы предпочел первый вариант, но в случае, если нет другого способа, я могу запустить команду терминала в приложении).