Skip to content

Latest commit

 

History

History
89 lines (65 loc) · 22.7 KB

FAQ.Radeon.ru.md

File metadata and controls

89 lines (65 loc) · 22.7 KB

Краткий FAQ:

  • Когда использовать WhateverGreen?
    В macOS 10.11 и выше (возможно и в 10.10) с видеокартами ATI/AMD 5xxx и новее.
    Проверить все серии видеокарт и их конфигурации возможности нет, используйте на свой страх и риск.

  • Как получить подробный лог?
    Установить DEBUG версии WhateverGreen и Lilu, добавить -wegdbg -liludbg в аргументы загрузки. После запуска выполнить команду в терминале:
    log show --predicate 'process == "kernel" AND (eventMessage CONTAINS "WhateverGreen" OR eventMessage CONTAINS "Lilu")' --style syslog --source
    Для macOS 10.11 и старее использовать:
    cat /var/log/system.log | egrep '(WhateverGreen|Lilu)'
    Следует обратить внимание, что если проблема с видеокартой, то лог можно получить через SSH. В этом случае стоит также проверить вывод kextstat.

  • Каково состояние поддержки 10.13?
    В момент выпуска 10.13 находится на стадии тестирования, потому об официальной поддержке речи не идёт. Известны случаи незапуска графики на чипсетах старше Nehalem. Если у вас имеется подобное железо, воздержитесь от обновления. В остальных случаях WhateverGreen может работать, при условии отстутствия значительных изменений в 10.13.

  • Какие прочие аппаратные требования для WhateverGreen?
    UEFI без использования CSM. В случае отсутствия поддержки UEFI видеокартой, её крайне желательно перешить. Непрошитая карта с высокой долей вероятности создаст проблемы при использовании нескольких мониторов или даже с одним монитором. Используйте материнские платы без UEFI на свой страх и риск. Известны проблемы мультимониторных конфигураций при использовании 2 и более видеокарт.

  • Как прошить видеокарту?
    Для самого процесса прошивки можно проследовать этой инструкции. Для создания прошивки можно использовать эту инструкцию. Также существует утилита и для macOS, но в случае её использование паддинг придётся убирать вручную.

  • В каких случаях стоит ли использовать именной фреймбуфер?
    Именной фреймбуфер (Baladi, Futomaki, Lotus и др.), включаемый "инжектом Clover" или любым другим способом, не следует использовать ни при каких обстоятельствах. Такой способ запуска видеокарты — распространённое заблуждение, приводящее к отключению автоматического конфигурирования множества важных параметров. В результате с высокой долей вероятности видеокарта будет работать неправильно.

  • Как и в каких случаях необходимо использовать собственные коннекторы?
    В большинстве случаев автоматическое детектирование коннекторов из видеобиоса, реализованное в кекстах Apple, работает без нареканий. Логика его работы описана в reference.cpp. К сожалению, некоторые производители видеокарт распаивают произвольные коннекторы, но не изменяют их в видеобиосе. В результате автодектирование создаёт несовместимые коннекторы. Более корректным решением является исправление данных в видеобиосе, но использование кастомных коннекторов проще.
    Для некоторых видеокарт (например, 290, 290X и возможно других) в WhateverGreen есть автоматическая коррекция, включаемая с помощью аргумента загрузки -raddvi. Доя всех остальных карт существует возможность указать пользовательские коннекторы в качестве свойства контроллера видеокарты connectors, например, через SSDT. Указывать коннекторы можно как в 24-байтном, так и в 16-байтном формате, они будут адаптированы под запущенную систему. Если нужно указать число коннектров больше или меньше, чем определяется автоматически, то необходимо также указать свойство connector-count. Просмотреть автодетектированные коннекторы можно в отладочном логе WhateverGreen.

  • Как изменить приоритет мониторов?
    С видеокартами 7xxx достаточно указания свойства connector-priority, перечислив sense id (можно посмотреть в режиме подробного логирования) в порядке важности. Данное свойство иногда помогает решить проблему чёрного экрана в особенности на мультимониторных конфигурациях.
    Без данного свойства приоритет всех коннекторов остаётся 0. При наличии оставшихся sense id без приоритета коннекторы сортируются по типам: LVDS, DVI, HDMI, DP, VGA. Подробности указаны в примере SSDT.

  • Какие свойства нужно инжектировать для завода видеокарты?
    Минимум необходимых! Добавлять нужно устройство HDAU в контроллер видеокарты, свойства hda-gfx с соответствующим номером числу имеющихся кодеков аудио, по сути всё. Если требуется маскировка на поддерживаемую видеокарту, указывать следует только device-id. Разумно добавлять некоторые косметические свойства: AAPL,slot-name (отображаемое имя слота в свойствах системы), @X,AAPL,boot-display (частично исправляет лого при загрузке), model (название видеокарты, если автоматика не справилась).
    Не самый идеальный пример SSDT для общего понимания.

  • Какие дополнительные свойства нужно инжектировать для мобильных видеокарт?
    Мобильные видеокарты AMD при условии физической связи между экраном и картой (т.е. поколения до AMD Switchable Graphics) проблем практически не имеют. В большинстве случаев необходимо инжектировать видеобиос (свойство ATY,bin_image) размера 64 килобайт. С этого момента внешние экраны должны функционировать. Для работы внутреннего экрана часто необходим инжект EDID (свойство AAPL00,override-no-connect) и установка представления цветового канала в 6 бит (свойства @0,display-link-component-bits и @0,display-pixel-component-bits). Для разрешение выше 1600x900 может также потребоваться установка @0,display-dual-link в 1.
    Подробности указаны в примере SSDT.

  • Как указать более тонкую настройку видеокарты?
    Видеокарты ATI/AMD настраиваются с помощью параметров aty_config, aty_properties, которые можно найти в Info.plist кекстов AMDxxxxController.kext. Различные фреймбуферы используют эти параметры для достижения пониженного энергопотребления, повышенной производительности и подобного. К сожалению, в большинстве случаев предустановленные конфигурации не приводят к положительному результату для большинства видеокарт.
    Для получения оптимальной конфигурации WhateverGreen позволяет изменять эти параметры по отдельности вручную посредством указания их в качестве свойств контроллера видеокарты. Для aty_config используется префикс CFG,, для aty_properties используется префикс PP,, для cail_properties из Info.plist кекстов AMDRadeonXxxxx.kext — CAIL,. Таким образом, для обновления значения CFG_FB_LIMIT в aty_config необходимо использовать свойство CFG,CFG_FB_LIMIT.
    Детали описаны в примере SSDT.

  • Когда необходим аргумент загрузки radpg?
    Данный аргумент — замена оригинальному патчу Info.plist AMDRadeonX4000.kext для запуска видеокарт HD 7730/7750/7770/R7 250/R7 250X от igork. WhateverGreen не совместим с Verde.kext, и его нужно удалить. Аргумент позволяет принудительно включить часть флагов технологии power-gating, например, CAIL_DisableGfxCGPowerGating. Значение является битовой маской из CAIL_DisableDrmdmaPowerGating, CAIL_DisableGfxCGPowerGating, CAIL_DisableUVDPowerGating, CAIL_DisableVCEPowerGating, CAIL_DisableDynamicGfxMGPowerGating, CAIL_DisableGmcPowerGating, CAIL_DisableAcpPowerGating, CAIL_DisableSAMUPowerGating. Так radpg=15 активирует первые четыре ключа.
    Начиная с версии 1.0.3, идентичного результата можно добиться с помощью указания необходимых свойств в контроллер видеокарты (например, CAIL,CAIL_DisableGfxCGPowerGating). Данный способ лучше, так как позволяет настроить каждую из установленных видеокарт раздельно.

  • Как изменить название видеокарты?
    Кекст контроллера (например, AMD6000Controller) при автоматической инициализации заменяет название видеокарты на обобщённое (например, AMD Radeon HD 6xxx). Инжектирование свойств и отключение этого лишь приведёт к сломанному автодетекту коннекторов, потому исключительно не рекомендуется. WhateverGreen пытается автоматически определить название карты, если оно не задано. Если название определяется неверно (например, в случае маскировки device-id или использования новой карты), достаточно указать верное название в свойстве model. Все вопросы по корректности автоматического определния должны быть отправлены в The PCI ID Repository. В исключительных случаях вы можете отправить патч для kern_model.cpp. На функционирование карты название никак не влияет.

  • Что делать, если видеокарта для просыпания требует нескольких нажатий на клавиатуре?
    Если это действительно беспокоит, можно подождать чуть дольше или попробовать добавить аргумент загрузки darkwake=0.

  • Как читать версию драйвера EFI?
    Данное значение устанавливается WhateverGreen для отладки. Например, WEAD-102-2017-08-03 означает WhateverGreen с автоматическим фреймом (RadeonFramebuffer), DEBUG версия 1.0.2, скомпилированная 03.08.2017. Третья буква может быть F (для фейкового фрейма) и B (для некоторректных значений). Четвёртая буква может быть R для RELEASE версий.

  • Как понять, что видеокарта инициализируется правильно?
    Один из наиболее простых показателей — время загрузки. При неправильном заводе загрузка происходит на 30 секунд дольше.

  • Нормально ли иметь в названии движка OpenGL/OpenCL Prototype?
    Да, нормально. В процессе обратной разработки удалось выяснить, что отображаемое название никак не влияет на производительность. Напротив, попытки поменять данное название патчем идентификаторов в кекстах (например, AMDRadeonX4000) могут привести к нестабильной работе системы. Для безалаберно написанных приложений, работающих неправильно с подобными названиями можно использовать libWhateverName.dylib.

  • Как использовать IGPU?
    В большинстве случаев желательно использовать IGPU для декодирования видео (с заводом на фрейм без коннекторов). В случае необходимости дополнительных мониторов возможно активировать IGPU полностью. При использовании WhateverGreen аргумент загрузки -radlogo не требуется.

  • Как получить рабочее аппаратное декодирование видео?
    Обычно это задача IGPU, заведённой на фрейм без коннекторов. На некоторых видеокартах (например, HD 7870, HD 6670, HD 7970) можно завести аппаратный декодер AMD. Подробности в FAQ Shiki. На моделях с принудительным forceOfflineRenderer может потребоваться аргумент загрузки shikigva=1.

  • Зачем принудительно выставлять 24-битный вывод цвета?
    На некоторых мониторах нет поддержки 30-битного цвета, при этом видеокарта об этом может не знать. В результате цвета на экране будут мигать с искажениями. Для решения проблемы необходимо либо приобрести другой экран, либо добавить аргумент загрузки -rad24.

  • Как заставить работать HDMI звук?
    В большинстве случаев достаточно автоматического исправления HDAU в AppleALC, производящего переименование устройства в HDAU, и добавляющего отсутствующие свойства layout-id и hda-gfx (начиная с onboard-1). При использовании двух карт разных производителей (например, AMD/ATI и NVIDIA) свойства необходимо прописывать вручную. Также можно использовать аргумент загрузки -radnoaudio или свойство контроллера видеокарты no-audio-autofix, которые явно запрещают автоматическое внесение свойств цифрового аудио в карту.
    В случае отсутствия совместимых идентификаторов в AppleHDAController и AppleHDA необходимо их добавить с помощью патчей (пример для 290X из AppleALC).

  • Почему количество фреймбуферов стало превышать количество коннекторов (начиная с 10.13.2)?
    Причиной является баг, который внесли Apple, исправляя другой баг. В некоторых кекстах (например, AMD9500Controller) они принудительно указывают 6 коннекторов как число доступных вне зависимости от полученного значения из видеобиоса. Как следствие, возникает чёрный экран при пробуждении или видеокарту невозможно отправить в сон.
    Для исправления необходимо указать корректное значение коннекторов в CFG,CFG_FB_LIMIT, например, с помощью SSDT. Начиная с версии 1.1.4, данная проблема исправляется автоматически.

  • Почему может не просыпаться подключённый по DisplayPort монитор с высоким разрешением (например, некоторые LG 4K)?
    Иногда причиной является опция AGDC в конфигурации. Для 4K и ниже мониторов имеет смысл попробовать её выключить посредством указания CFG,CFG_USE_AGDC — False (00) с помощью SSDT или аналогов.

  • Как сконфигурировать политику управления нагрузкой (workload policy)?
    Политика управления нагрузкой — это профиль оптимизации производительности для графической карты. В зависимости от политики ГПУ может потреблять меньше энергии или работать более отзывчиво. Настройка политики управления нагрузкой выполняется посредством указания PP,PP_WorkLoadPolicyMask с числом, соответствующим набору бит в маске: 0x01 — DEFAULT_WORKLOAD (по умолчанию), 0x02 — FULLSCREEN3D_WORKLOAD, 0x04 — POWERSAVING_WORKLOAD, 0x08 — VIDEO_WORKLOAD, 0x10 — VR_WORKLOAD, 0x20 — COMPUTE_WORKLOAD, 0x40 — CUSTOM_WORKLOAD.

  • Как принудительно активировать загрузку прошивки SMU?
    SMU — это сложно-функциональный блок, имеющийся в некоторых современных ГПУ (X5000 и новее). Данный блок используется для некоторых задач управления питанием и требует загрузки специальной прошивки на уровне драйвера. Прошивка загружается в случае наличия свойства ATY,EFIVersion с любым значением (т.е. указывается, что данная ГПУ имеет видеобиос производства Apple) или когда указано свойство Force_Load_FalconSMUFW со значением kOSBooleanTrue (в случае с WEG также можно передать 1 байт: 01).