Skip to content

Commit

Permalink
Version 1.0.2 sync
Browse files Browse the repository at this point in the history
  • Loading branch information
vit9696 committed Aug 2, 2017
1 parent 5710844 commit 4f7e024
Show file tree
Hide file tree
Showing 7 changed files with 343 additions and 44 deletions.
8 changes: 8 additions & 0 deletions Changelog.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,14 @@
WhateverGreen Changelog
=======================

#### v1.0.2
- Added more GPU models to automatic detection
- Added basic automatic HDMI audio correction
- Fixed WhateverName os version requirements
- Disabled connector ordering by default (use `connector-priority` if needed)
- Changed `connector-priority` default type importance
- Added version info for easier debugging

#### v1.0.1
- Added more GPU models to automatic detection
- Disabled DVI transmitter changes by default (use `-raddvi` boot-arg)
Expand Down
11 changes: 8 additions & 3 deletions Manual/FAQ.en.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,11 @@ You could follow [this guide](https://www.techpowerup.com/forums/threads/amd-ati
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 for such cases. 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.
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.

- _How can I change display priority?_
To do so there is no need to use custom connectors with 7xxx GPUs or newer. Add `connector-priority` GPU controller property with sense ids (could be seen in debug log) in the order of their importance. This property may sometimes help with the multi-monitor configurations.
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.
Without this property specified all the connectors will stay with 0 priority. If there are unspecified connectors they will be ordered by type: LVDS, DVI, HDMI, DP, VGA. Read [SSDT sample](https://github.com/vit9696/WhateverGreen/blob/master/Manual/Sample.dsl) for more details.

- _What properties should I inject for my GPU?_
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).
Expand All @@ -38,6 +39,9 @@ This argument is as a replacement for the original igork's AMDRadeonX4000 Info.p
- _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.

- _How should I read EFI driver version?_
This value is by WhateverGreen for debugging reasons. For example, WEAD-102-2017-08-03 stands for WhateverGreen with automatic frame (i.e. RadeonFramebuffer), debug version 1.0.2 compiled on 03.08.2017. Third letter can also be F for fake frame, and B for invalid data. Fourth letter could be R for release builds.

- _What to do when my GPU does not wake until I start typing on the keyboard?_
If this bothers you, either wait a bit longer or try adding `darkwake=0` boot argument.

Expand All @@ -57,7 +61,8 @@ Generally hardware video decoding is performed by an IGPU, and thus you are requ
Several screens may not support 30-bit video output, but the GPU may not detect this. The result will look as distorted blinking colours. To resolve the issue either buy a more powerful display or add `-rad24` boot argument.

- _How do I get HDMI audio to work?_
In general it should be enough to inject the devices and properties mentioned above. In some cases you may also need to add a supported `device-id` property to HDAU and patch the identifier in AppleHDAController. More details are available in this [SSDT sample](https://github.com/vit9696/WhateverGreen/blob/master/Manual/Sample.dsl).
In general it should be enough to rely on WhateverGreen automatic HDAU correction. It renames the device to HDAU, and injects missing layout-id and hda-gfx (starting with onboard-2) properties. This will not work well with two or more cards of different vendors (e.g. NVIDIA and ATI/AMD), please manually inject the properties in such a case.
For identifiers not present in AppleHDAController and AppleHDA you have to add necessary kext patches, see AppleALC [example for 290X](https://github.com/vit9696/AppleALC/commit/cfb8bef310f31fd330aeb4e10623487a6bceb84d#diff-6246954ac288d4f6dd7eb780c006419d).

- _May I access the source code?_
Model detection code is [open](https://github.com/vit9696/WhateverGreen/blob/master/WhateverGreen/kern_model.cpp) as well as [Lilu](https://github.com/vit9696/Lilu). If you want to contribute a feature you have an implementation for please contact me. For example, getting better handling of AMD Switchable Graphics or providing more complete research on connector detection would be nice.
11 changes: 8 additions & 3 deletions Manual/FAQ.ru.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,11 @@ UEFI без использования CSM. В случае отсутствия
Именной фреймбуфер (Baladi, Futomaki, Lotus и др.), включаемый "инжектом Clover" или любым другим способом, не следует использовать _ни при каких обстоятельствах_. Такой способ запуска видеокарты — распространённое заблуждение, приводящее к отключению автоматического конфигурирования множества важных параметров. В результате с высокой долей вероятности видеокарта будет работать неправильно.

- _В каких случаях необходимо использовать собственные коннекторы?_
В редких случаях видеобиос (например, видеокарты 290, 290X, 370) может быть не совместим с автоматическим детектированием коннекторов, реализованном в кекстах Apple. Для этих случаев в WhateverGreen предусмотрена автоматическая коррекция коннекторов. Тем не менее, если сгенерированные коннекторы не подошли (их можно посмотреть в режиме подробного логирования), то существует возможность указать пользовательские коннекторы в качестве свойства контроллера видеокарты `connectors`, например, через SSDT. Указывать коннекторы можно как в 24-байтном, так и в 16-байтном формате, они будут адаптированы под запущенную систему. Если нужно указать число коннектров больше или меньше, чем определяется автоматически, то необходимо также указать свойство `connector-count`.
В редких случаях видеобиос (например, видеокарты 290, 290X, 370) может быть не совместим с автоматическим детектированием коннекторов, реализованном в кекстах Apple. Для этих случаев в WhateverGreen предусмотрена автоматическая коррекция коннекторов, включаемая с помощью аргумента `-raddvi`. Тем не менее, если сгенерированные коннекторы не подошли (их можно посмотреть в режиме подробного логирования), то существует возможность указать пользовательские коннекторы в качестве свойства контроллера видеокарты `connectors`, например, через SSDT. Указывать коннекторы можно как в 24-байтном, так и в 16-байтном формате, они будут адаптированы под запущенную систему. Если нужно указать число коннектров больше или меньше, чем определяется автоматически, то необходимо также указать свойство `connector-count`.

- _Как изменить приоритет мониторов?_
С видеокартами 7xxx и новее для этого нет необходимости использовать собственные коннекторы. Добавьте свойство контроллера видеокарты `connector-priority`, перечислив sense id (можно посмотреть в режиме подробного логирования) в порядке важности. Данное свойство иногда помогает решить проблемы с мультимониторными конфигурациями.
С видеокартами 7xxx достаточно указания свойства `connector-priority`, перечислив sense id (можно посмотреть в режиме подробного логирования) в порядке важности. Данное свойство иногда помогает решить проблему чёрного экрана в особенности на мультимониторных конфигурациях.
Без данного свойства приоритет всех коннекторов остаётся 0. При наличии оставшихся sense id без приоритета коннекторы сортируются по типам: LVDS, DVI, HDMI, DP, VGA. Подробности указаны в [примере SSDT](https://github.com/vit9696/WhateverGreen/blob/master/Manual/Sample.dsl).

- _Какие свойства нужно инжектировать для завода видеокарты?_
Минимум необходимых! Добавлять нужно устройство `HDAU` в контроллер видеокарты, свойства `hda-gfx` с соответствующим номером числу имеющихся кодеков аудио, по сути всё. Если требуется маскировка на поддерживаемую видеокарту, указывать следует только `device-id`. Разумно добавлять некоторые косметические свойства: `AAPL,slot-name` (отображаемое имя слота в свойствах системы), `@X,AAPL,boot-display` (частично исправляет лого при загрузке), `model` (название видеокарты, если автоматика не справилась).
Expand All @@ -41,6 +42,9 @@ UEFI без использования CSM. В случае отсутствия
- _Что делать, если видеокарта для просыпания требует нескольких нажатий на клавиатуре?_
Если это действительно беспокоит, можно подождать чуть дольше или попробовать добавить аргумент загрузки `darkwake=0`.

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

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

Expand All @@ -57,7 +61,8 @@ UEFI без использования CSM. В случае отсутствия
На некоторых мониторах нет поддержки 30-битного цвета, при этом видеокарта об этом может не знать. В результате цвета на экране будут мигать с искажениями. Для решения проблемы необходимо либо приобрести другой дисплей, либо добавить аргумент загрузки `-rad24`.

- _Как заставить работать HDMI звук?_
В большинстве случаев инжектирования вышеуказанных устройств и свойств достаточно. В некоторых случаях нужно также добавлять свойство `device-id` с поддерживаемым идентификатором в HDAU и патч AppleHDAController. Подробности описаны в [примере SSDT](https://github.com/vit9696/WhateverGreen/blob/master/Manual/Sample.dsl).
В большинстве случаев достаточно автоматического исправления HDAU в WhateverGreen, производящего переименование устройства в HDAU, и добавляющего отсутствующие свойства layout-id и hda-gfx (начиная с onboard-2). При использовании двух карт разных производителей (например, AMD/ATI и NVIDIA) свойства необходимо прописывать вручную.
В случае отсутствия совместимых идентификаторов в AppleHDAController и AppleHDA необходимо их добавить с помощью патчей ([пример для 290X](https://github.com/vit9696/AppleALC/commit/cfb8bef310f31fd330aeb4e10623487a6bceb84d#diff-6246954ac288d4f6dd7eb780c006419d) из AppleALC).

- _Могу ли я получить исходный код?_
Код автодетектирования модели [открыт](https://github.com/vit9696/WhateverGreen/blob/master/WhateverGreen/kern_model.cpp), как и код [Lilu](https://github.com/vit9696/Lilu). Если есть желание и знание, как добавить некоторый функционал, пишите. Например, неплохо бы добавить нормальную совместимость с AMD Switchable Graphics или более подробно разобрать детектирование коннекторов.
Loading

0 comments on commit 4f7e024

Please sign in to comment.