Skip to content

Commit

Permalink
Version 1.0.3 sync
Browse files Browse the repository at this point in the history
  • Loading branch information
vit9696 committed Aug 5, 2017
1 parent 0572614 commit 06b6c07
Show file tree
Hide file tree
Showing 6 changed files with 50 additions and 9 deletions.
5 changes: 5 additions & 0 deletions Changelog.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,11 @@
WhateverGreen Changelog
=======================

#### v1.0.3
- Fixed `radpg` bit mask working incorrectly
- Added `-radprop` boot-arg to enable manual tuning of `aty_config`, `aty_properties`
- Changed HDMI audio layout-id to match HDEF layout-id if available

#### v1.0.2
- Added more GPU models to automatic detection
- Added basic automatic HDMI audio correction
Expand Down
13 changes: 10 additions & 3 deletions Manual/FAQ.en.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,9 @@ You could follow [this guide](https://www.techpowerup.com/forums/threads/amd-ati
- _When should I use a named framebuffer?_
Named framebuffers (Baladi, Futomaki, Lotus, etc.), enabled by "Clover GPU injection" or any other methods should _never ever be used_. This way of GPU injection is a common mistake, preventing automatic configuration of various important GPU parameters. This will inavoidably lead to borked GPU functioning in quite a number of cases.

- _When should I use custom connectors?_
In extremely rare cases VBIOS could (e.g. 290, 290X, 370 GPUs) be incompatible with automatic controller detection written in Apple kexts. WhateverGreen incorporates automatic connector correction that can be enabled via `-raddvi` boot argument. However, if you discovered that the automatically generated connectors are still wrong (you could find them in debug log), you may specify them as a GPU device property called `connects`, for example, via SSDT. You could pass your connectors in either 24-byte or 16-byte format, they will be automatically adapted to the running system. If you need to provide more or less connectors than it is detected automatically, you are to specify `connector-count` property as well.
- _When and how should I use custom connectors?_
In general automatic controller detection written in Apple kexts creates perfect connectors from your VBIOS. The logic of that can be found in [reference.cpp](https://github.com/vit9696/WhateverGreen/blob/master/Manual/reference.cpp). However, some GPU makers physically create different connectors but leave the VBIOS unchanged. This results in invalid connectors that are incompatible with your GPU. The proper way to fix the issues is to correct the data in VBIOS, however, just providing custom connectors can be easier.
For some GPUs (e.g. 290, 290X and probably some others) WhateverGreen incorporates automatic connector correction that can be enabled via `-raddvi` boot argument. For other GPUs you may specify them as a GPU device property called `connects`, for example, via SSDT. You could pass your connectors in either 24-byte or 16-byte format, they will be automatically adapted to the running system. If you need to provide more or less connectors than it is detected automatically, you are to specify `connector-count` property as well. Please note that automatically detected connectors appear in the debug log to give you a good start.

- _How can I change display priority?_
With 7xxx GPUs or newer you could simply add `connector-priority` GPU controller property with sense ids (could be seen in debug log) in the order of their importance. This property may help with black screen issues especially with the multi-monitor configurations.
Expand All @@ -33,8 +34,14 @@ Without this property specified all the connectors will stay with 0 priority. If
Very few! You should inject an `HDAU` device to your GPU controller, `hda-gfx` properties with a corresponding number to the amount of audio codecs you have, and that is basically all. If you need to mask to an unsupported GPU, additionally add `device-id`. It is also recommended to add some cosmetic properties: `AAPL,slot-name` (displayed slot name in system details), `@X,AAPL,boot-display` (boot logo drawing issues), `model` (GPU display name, if detection failed).
While not pretending to be perfect, there is a [SSDT sample](https://github.com/vit9696/WhateverGreen/blob/master/Manual/Sample.dsl) to get the general idea.

- _How could I tune my GPU configuration?_
ATI/AMD GPUs could be configured by `aty_config`, `aty_properties` parameters that one could find in AMDxxxxController.kext Info.plist files. Different framebuffers have overrides for these preferences for lower energy consumption, higher performance, or other reasons. Unfortunately in such combinations they often are unsuitable for different GPUs.
WhateverGreen allows to specify your own preferred parameters via GPU controller properties to achieve best GPU configuration. Use `CFG,` prefix for `aty_config` properties, `PP,` prefix for `aty_properties`, and `CAIL,` prefix for `cail_properties` from AMDRadeonXxxxx.kext Info.plist files. For example, to override `CFG_FB_LIMIT` value in `aty_config` you should use `CFG,CFG_FB_LIMIT` property.
Further details are available in [SSDT sample](https://github.com/vit9696/WhateverGreen/blob/master/Manual/Sample.dsl) to get the general idea.

- _When do I need to use `radpg` boot argument?_
This argument is as a replacement for the original igork's AMDRadeonX4000 Info.plist patch required for some 7xxx GPUs to start. WhateverGreen is not compatible with Verde.kext, and it should be deleted. The argument allows to force-enable certain power-gating flags like CAIL_DisableGfxCGPowerGating. The value is a bit mask of CAIL_DisableDrmdmaPowerGating, CAIL_DisableGfxCGPowerGating, CAIL_DisableUVDPowerGating, CAIL_DisableVCEPowerGating, CAIL_DisableDynamicGfxMGPowerGating, CAIL_DisableGmcPowerGating, CAIL_DisableAcpPowerGating, CAIL_DisableSAMUPowerGating. Therefore `radpg=15` activates the first four keys.
This argument is as a replacement for the original igork's AMDRadeonX4000.kext Info.plist patch required for some 7xxx GPUs to start. WhateverGreen is not compatible with Verde.kext, and it should be deleted. The argument allows to force-enable certain power-gating flags like CAIL_DisableGfxCGPowerGating. The value is a bit mask of CAIL_DisableDrmdmaPowerGating, CAIL_DisableGfxCGPowerGating, CAIL_DisableUVDPowerGating, CAIL_DisableVCEPowerGating, CAIL_DisableDynamicGfxMGPowerGating, CAIL_DisableGmcPowerGating, CAIL_DisableAcpPowerGating, CAIL_DisableSAMUPowerGating. Therefore `radpg=15` activates the first four keys.
Starting with 1.0.3 version you could achieve exactly the same result by manually specifying the necessary properties into your GPU controller (e.g. `CAIL,CAIL_DisableGfxCGPowerGating`). This is better, because it allows you to fine-tune each GPU separately instead of changing these parameters for all the GPUs.

- _How to change my GPU model?_
The controller kext (e.g. AMD6000Controller) replaces GPU model with a generic name (e.g. AMD Radeon HD 6xxx) if it performs the initialisation on its own. Injecting the properties and disabling this will break connector autodetect, and therefore is quite not recommended. WhateverGreen attempts to automatically detect the GPU model name if it is unspecified. If the autodetected model name is not valid (for example, in case of a fake device-id or a new GPU model) please provide a correct one via `model` property. All the questions about automatic GPU model detection correctness should be addressed to [The PCI ID Repository](http://pci-ids.ucw.cz). In special cases you may submit a [patch](https://github.com/vit9696/WhateverGreen/pulls) for [kern_model.cpp](https://github.com/vit9696/WhateverGreen/blob/master/WhateverGreen/kern_model.cpp). GPU model name is absolutely unimportant for GPU functioning.
Expand Down
13 changes: 10 additions & 3 deletions Manual/FAQ.ru.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,9 @@ UEFI без использования CSM. В случае отсутствия
- _В каких случаях стоит ли использовать именной фреймбуфер?_
Именной фреймбуфер (Baladi, Futomaki, Lotus и др.), включаемый "инжектом Clover" или любым другим способом, не следует использовать _ни при каких обстоятельствах_. Такой способ запуска видеокарты — распространённое заблуждение, приводящее к отключению автоматического конфигурирования множества важных параметров. В результате с высокой долей вероятности видеокарта будет работать неправильно.

- _В каких случаях необходимо использовать собственные коннекторы?_
В редких случаях видеобиос (например, видеокарты 290, 290X, 370) может быть не совместим с автоматическим детектированием коннекторов, реализованном в кекстах Apple. Для этих случаев в WhateverGreen предусмотрена автоматическая коррекция коннекторов, включаемая с помощью аргумента `-raddvi`. Тем не менее, если сгенерированные коннекторы не подошли (их можно посмотреть в режиме подробного логирования), то существует возможность указать пользовательские коннекторы в качестве свойства контроллера видеокарты `connectors`, например, через SSDT. Указывать коннекторы можно как в 24-байтном, так и в 16-байтном формате, они будут адаптированы под запущенную систему. Если нужно указать число коннектров больше или меньше, чем определяется автоматически, то необходимо также указать свойство `connector-count`.
- _Как и в каких случаях необходимо использовать собственные коннекторы?_
В большинстве случаев автоматическое детектирование коннекторов из видеобиоса, реализованное в кекстах Apple, работает без нареканий. Логика его работы описана в [reference.cpp](https://github.com/vit9696/WhateverGreen/blob/master/Manual/reference.cpp). К сожалению, некоторые производители видеокарт распаивают произвольные коннекторы, но не изменяют их в видеобиосе. В результате автодектирование создаёт несовместимые коннекторы. Более корректным решением является исправление данных в видеобиосе, но использование кастомных коннекторов проще.
Для некоторых видеокарт (например, 290, 290X и возможно других) в WhateverGreen есть автоматическая коррекция, включаемая с помощью аргумента загрузки `-raddvi`. Доя всех остальных карт существует возможность указать пользовательские коннекторы в качестве свойства контроллера видеокарты `connectors`, например, через SSDT. Указывать коннекторы можно как в 24-байтном, так и в 16-байтном формате, они будут адаптированы под запущенную систему. Если нужно указать число коннектров больше или меньше, чем определяется автоматически, то необходимо также указать свойство `connector-count`. Просмотреть автодетектированные коннекторы можно в отладочном логе WhateverGreen.

- _Как изменить приоритет мониторов?_
С видеокартами 7xxx достаточно указания свойства `connector-priority`, перечислив sense id (можно посмотреть в режиме подробного логирования) в порядке важности. Данное свойство иногда помогает решить проблему чёрного экрана в особенности на мультимониторных конфигурациях.
Expand All @@ -33,8 +34,14 @@ UEFI без использования CSM. В случае отсутствия
Минимум необходимых! Добавлять нужно устройство `HDAU` в контроллер видеокарты, свойства `hda-gfx` с соответствующим номером числу имеющихся кодеков аудио, по сути всё. Если требуется маскировка на поддерживаемую видеокарту, указывать следует только `device-id`. Разумно добавлять некоторые косметические свойства: `AAPL,slot-name` (отображаемое имя слота в свойствах системы), `@X,AAPL,boot-display` (частично исправляет лого при загрузке), `model` (название видеокарты, если автоматика не справилась).
Не самый идеальный [пример SSDT](https://github.com/vit9696/WhateverGreen/blob/master/Manual/Sample.dsl) для общего понимания.

- _Как указать более тонкую настройку видеокарты?_
Видеокарты 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](https://github.com/vit9696/WhateverGreen/blob/master/Manual/Sample.dsl).

- _Когда необходим аргумент загрузки `radpg`?_
Данный аргумент — замена оригинальному патчу Info.plist AMDRadeonX4000 для запуска некоторых видеокарт 7xxx от 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` активирует первые четыре ключа.
Данный аргумент — замена оригинальному патчу Info.plist AMDRadeonX4000.kext для запуска некоторых видеокарт 7xxx от 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](http://pci-ids.ucw.cz). В исключительных случаях вы можете отправить [патч](https://github.com/vit9696/WhateverGreen/pulls) для [kern_model.cpp](https://github.com/vit9696/WhateverGreen/blob/master/WhateverGreen/kern_model.cpp). На функционирование карты название никак не влияет.
Expand Down
Loading

0 comments on commit 06b6c07

Please sign in to comment.