Haswell

Приветствуем!

Наконец-то мы доделали статью по Haswell-графике. Приятного чтения.

Вот информация по заводу Intel HD Graphics поколения Haswell.
На данный момент заводятся все GT2 и GT3 карты. GT1 не заводится вовсе.


Тактико-техническая информация.


Полный список Haswell графики:

  • HD Graphics (GT1) – не заводится;
  • HD4200 (GT2) – сегодня не встречается;
    [8086:0a1e]
  • HD4400 (GT2) – мобильная графика;
    [8086:0a16]
  • HD4600 (GT2) – мобильная и десктопная графика;
    [8086:0416] [8086:0a26]
  • HD5000 (GT3) – десктопная графика.
    [8086:0a26]

Список доступных ig-platform-id:

В AppleIntelFramebufferAzul очень много повторяющихся ig-платформ, с одинаковыми коннекторами.
Выписывать все нет смысла, выписаны только те, что могут принести пользу.
[ 0] : 0x04060000 – Mobile GT1
[ 1] : 0x0c060000 – SDV mobile GT1
[ 2] : 0x04160000 – Mobile GT2
[ 3] : 0x0a160000 – ULT mobile GT2 
[ 4] : 0x0c160000 – SDV mobile GT2 
[ 5] : 0x04260000 – Mobile GT3
[ 6] : 0x0a260000 – ULT mobile GT3
[ 7] : 0x0c260000 – SDV mobile GT3
[ 8] : 0x0d260000 – CRW mobile GT3 
[ 9] : 0x04160002 – Mobile GT2 (1c)
[10] : 0x0d220003 – CRW desktop GT3
[11] : 0x04120004 – CRW desktop GT3
[12] : 0x0a260005 – ULT mobile GT3
[13] : 0x0a260006 – ULT mobile GT3 
[14] : 0x0d260007 – CRW desktop GT3
[15] : 0x0a260007 – CRW desktop GT3
[16] : 0x0a2e0008 – CRW reserved GT3
В бинарном виде:
{0x00,0x00,0x06,0x04}, //FB: 64MB, Pipes: 3, Ports: 3, FBMem: 3 - mobile GT1 
00001000 02000000 30000000 // LVDS 
01051200 04000000 04000000 // DP 
02041200 00080000 82000000 // HDMI

[ 0] : 0x04060000
{0x00,0x00,0x06,0x0c}, //FB: 64MB, Pipes: 3, Ports: 3, FBMem: 3 - SDV mobile GT1 
00001000 02000000 30000000 // LVDS 
01051200 04000000 04000000 // DP 
02041200 00080000 82000000 // HDMI

[ 1] : 0x0c060000
{0x00,0x00,0x16,0x04}, //FB: 64MB, Pipes: 3, Ports: 3, FBMem: 3 - mobile GT2 
00001000 02000000 30000000 // LVDS 
01051200 04000000 04000000 // DP 
02041200 00080000 82000000 // HDMI

[ 2] : 0x04160000
{0x00,0x00,0x16,0x0a}, //FB: 64MB, Pipes: 3, Ports: 3, FBMem: 3 - ULT mobile GT2 
00001000 02000000 30000000 // LVDS 
01051200 04000000 04000000 // DP 
02041200 00080000 82000000 // HDMI

[ 3] : 0x0a160000
{0x00,0x00,0x16,0x0c}, //FB: 64MB, Pipes: 3, Ports: 3, FBMem: 3 - SDV mobile GT2 
00001000 02000000 30000000 // LVDS 
01051200 04000000 04000000 // DP 
02041200 00080000 82000000 // HDMI

[ 4] : 0x0c160000
{0x00,0x00,0x26,0x04}, //FB: 64MB, Pipes: 3, Ports: 3, FBMem: 3 - mobile GT3 
00001000 02000000 30000000 // LVDS 
01051200 04000000 04000000 // DP 
02041200 00080000 82000000 // HDMI

[ 5] : 0x04260000
{0x00,0x00,0x26,0x0a}, //FB: 64MB, Pipes: 3, Ports: 3, FBMem: 3 - ULT mobile GT3 
00001000 02000000 30000000 // LVDS 
01051200 04000000 04000000 // DP 
02041200 00080000 82000000 // HDMI

[ 6] : 0x0a260000
{0x00,0x00,0x26,0x0c}, //FB: 64MB, Pipes: 3, Ports: 3, FBMem: 3 - SDV mobile GT3 
00001000 02000000 30000000 // LVDS 
01051200 04000000 04000000 // DP 
02041200 00080000 82000000 // HDMI

[ 7] : 0x0c260000
{0x00,0x00,0x26,0x0d}, //FB: 64MB, Pipes: 3, Ports: 3, FBMem: 3 - CRW mobile GT3 
00001000 02000000 30000000 // LVDS 
01051200 04000000 04000000 // DP 
02041200 00080000 82000000 // HDMI

[ 8] : 0x0d260000
{0x02,0x00,0x16,0x04}, //FB: 64MB, Pipes: 1, Ports: 1, FBMem: 1 - mobile GT2 
00001000 02000000 30000000 // Неизвестный науке коннектор, предположение что это VGA.

[ 9] : 0x04160002
{0x03,0x00,0x22,0x0d}, //FB: 32MB, Pipes: 3, Ports: 3, FBMem: 3 - CRW Desktop GT3 
01051200 00040000 87000000 // DP 
02041400 00040000 87000000 // DP 
03061000 00040000 11000000 // DP

[10] : 0x0d220003
{0x04,0x00,0x12,0x04}, //FB: 0MB, Pipes: 0, Ports: 0, FBMem: 0 - CRW Desktop GT3
//Коннекторов 0. Используется для завода AirPlay и H.264 декодера.

[11] : 0x04120004
{0x05,0x00,0x26,0x0a}, //FB: 32MB, Pipes: 3, Ports: 3, FBMem: 3 - ULT mobile GT3 
00001000 02000000 30000000 // LVDS 
01051200 00040000 87000000 // DP 
02041200 00040000 87000000 // DP

[12] : 0x0a260005
{0x06,0x00,0x26,0x0a}, //FB: 32MB, Pipes: 3, Ports: 3, FBMem: 3 - ULT mobile GT3 
00001000 02000000 30000000 // LVDS 
01051200 00040000 87000000 // DP 
02041200 00040000 87000000 // DP

[13] : 0x0a260006
{0x07,0x00,0x26,0x0d}, //FB: 64MB, Pipes: 3, Ports: 4, FBMem: 3 - CRW desktop GT3 
00001000 02000000 30000000 // LVDS 
01051200 00040000 07010000 // DP 
02041400 00040000 07010000 // DP 
03061200 00080000 06000000 // HDMI

[14] : 0x0d260007
{0x08,0x00,0x26,0x0a}, //FB: 64MB, Pipes: 3, Ports: 3, FBMem: 3 - ULT mobile GT3 
00001000 02000000 30000000 // LVDS 
01051200 00040000 07010000 // DP 
02041400 000C0000 07010000 // ThunderBolt

[15] : 0x0a260007
{0x08,0x00,0x2e,0x0a}, //FB: 64MB, Pipes: 3, Ports: 3, FBMem: 3 - ULT reserved GT3 
00001000 02000000 30000000 // LVDS 
01051200 00040000 07010000 // DP 
02041400 000C0000 07010000 // ThunderBolt

[16] : 0x0a2e0008


Разбор по моделям:

Haswell – архитектура, заполонившая рынок. Очень неприхотливая в заводе.

Подходящие SMBIOS’ы:

  • iMac14,1;
    Лучше подходит для стационарных HD Graphics, которая используется в качестве основной карты для вывода изображения;
  • iMac14,2;
    Лучше подходит для стационарных HD Graphics, работающей в паре с Nvidia;
  • iMac15,1;
    Лучше подходит для стационарных HD Graphics, работающей в паре с AMD Radeon;
  • MacBookPro11,1/11,2/11,4/12,1;
    Лучше подходит для мобильных HD Graphics с большой мощностью процессора;
  • MacBookAir6,1/6,2;
    Лучше подходит для мобильных HD Graphics с энергоэффективным процессором.

Завод.


В статье мы рассмотрим 3 варианта – мобильная, десктопная, и десктопная в паре с дискретной.


Мобильная Intel HD4200, HD4400 и HD4600:

Рассмотрим завод на примере HD4400. 4200 и 4600 карты для нас различаются лишь названием.

Для завода графики достаточно:

  • Проинжектить ig-platform-id0x0A260006;
  • FakeID: 0x0412 (под Intel HD Graphics 5000);
  • FakeID для IMEI контроллера (опционально);
  • Переименовать в ACPI видеокарту GFX0 -> IGPU (для AGPM);
  • Установить в биосе под видеокарту 96мб (64 так же допускается).
ОЧЕНЬ ВАЖНО: Помните, что при инжекции через Arbitrary, вы должны отключить все прочие инжекции, типа Grapchis/Inject/Intel, или удалить соответствующий _DSM в DSDT!

Инжекция параметров видеокарты:

%d1%81%d0%bd%d0%b8%d0%bc%d0%be%d0%ba-%d1%8d%d0%ba%d1%80%d0%b0%d0%bd%d0%b0-2016-09-23-%d0%b2-8-51-03

Разберем ключи:

  1. model = Intel HD Graphics 4400 – косметика;
  2. device-id = 12040000 (0x0412)  – инжекция подменённого ID;
  3. AAPL,ig-platform-id = 06002616 (0x16260006) – инжекция ig-platform-ID;
  4. hda-gfx = onboard-1 – свойство для HDMI звука;
  5. graphics-options = 0C000000 – на всякий случай;
  6. boot-gamma-restored = <00000000 00000000> – задаём динамический подбор этого параметра при загрузке;
  7. IOHibernateState = <00000000> – правильное значение для сна;
  8. subsystem-id = 86800000 (8086 = Intel) – косметика;
  9. subsystem-vendor-id = 6B100000 (106B = Apple) – косметика;
  10. PciAddr = 00:02.00 – стандартный PCI адрес встроенной графики.

Стационарные Intel HD4600 и HD5000 без дискретной карты:

Рассмотрим завод на примере HD4600. 5000 отличается лишь названием в секции Model.

Для завода графики достаточно:

  • Проинжектить ig-platform-id0x0D260000 или 0x0D220003 (мы возьмём второй вариант);
  • FakeID: 0x0412 (под Intel HD Graphics 5000);
  • FakeID для IMEI контроллера (опционально);
  • Переименовать в ACPI видеокарту GFX0 -> IGPU (для AGPM);
  • Установить в биосе под видеокарту 96мб.
ОЧЕНЬ ВАЖНО: Помните, что при инжекции через Arbitrary, вы должны отключить все прочие инжекции, типа Grapchis/Inject/Intel, или удалить соответствующий _DSM в DSDT!

Инжекция параметров видеокарты:

%d1%81%d0%bd%d0%b8%d0%bc%d0%be%d0%ba-%d1%8d%d0%ba%d1%80%d0%b0%d0%bd%d0%b0-2016-09-23-%d0%b2-9-33-07

Разберем ключи:

  1. model = Intel HD Graphics 4600 – косметика;
  2. device-id = 12040000 (0x0412)  – инжекция подменённого ID;
  3. AAPL,ig-platform-id = 0300220d (0x0d220003) – инжекция ig-platform-ID;
  4. hda-gfx = onboard-1 – свойство для HDMI звука;
  5. graphics-options = 0C000000 – на всякий случай;
  6. boot-gamma-restored = <00000000 00000000> – задаём динамический подбор этого параметра при загрузке;
  7. IOHibernateState = <00000000> – правильное значение для сна;
  8. subsystem-id = 86800000 (8086 = Intel) – косметика;
  9. subsystem-vendor-id = 6B100000 (106B = Apple) – косметика;
  10. PciAddr = 00:02.00 – стандартный PCI адрес встроенной графики.

Стационарные Intel HD4600 и HD5000 с дискретной картой:

Рассмотрим завод на примере HD4600.

Для завода графики достаточно:

  • Проинжектить ig-platform-id0x04120004;
  • FakeID: 0x0412 (под Intel HD Graphics 5000);
  • FakeID для IMEI контроллера (опционально);
  • Переименовать в ACPI видеокарту GFX0 -> IGPU (для AGPM);
  • Установить в биосе под видеокарту 32мб.
ОЧЕНЬ ВАЖНО: Помните, что при инжекции через Arbitrary, вы должны отключить все прочие инжекции, типа Grapchis/Inject/Intel, или удалить соответствующий _DSM в DSDT!

Инжекция параметров видеокарты:

%d1%81%d0%bd%d0%b8%d0%bc%d0%be%d0%ba-%d1%8d%d0%ba%d1%80%d0%b0%d0%bd%d0%b0-2016-09-23-%d0%b2-9-54-49

Разберем ключи:

  1. model = Intel HD Graphics 4600 – косметика;
  2. device-id = 12040000 (0x0412)  – инжекция подменённого ID;
  3. AAPL,ig-platform-id = <04001204> (0x04120004) – инжекция ig-platform-ID;
  4. hda-gfx = onboard-1 – свойство для HDMI звука;
  5. graphics-options = 0C000000 – на всякий случай;
  6. boot-gamma-restored = <00000000 00000000> – задаём динамический подбор этого параметра при загрузке;
  7. IOHibernateState = <00000000> – правильное значение для сна;
  8. subsystem-id = 86800000 (8086 = Intel) – косметика;
  9. subsystem-vendor-id = 6B100000 (106B = Apple) – косметика;
  10. PciAddr = 00:02.00 – стандартный PCI адрес встроенной графики.

FakeID для IMEI.


Подмена необходима в случае не нативного id у данного девайса

Нативные ID:

Взят с iMac15,1 (чипсет HM97, id: 0x8cc3)

  • BA8C0000 (0x8cba)

Взяты из графических кекстов.

  • BA9C0000 (0x9cba)
  • 3A8C0000 (0x8c3a)
  • 3A9C0000 (0x9c3a)

Если вы не уверены в нативности id – сделайте маскировку:

%d1%81%d0%bd%d0%b8%d0%bc%d0%be%d0%ba-%d1%8d%d0%ba%d1%80%d0%b0%d0%bd%d0%b0-2016-09-23-%d0%b2-9-10-35

Разберём ключи:

  1. device-id = BA8C0000 (0x8cba) – подмена ID;
  2. subsystem-id = 70720000 – косметика;
  3. subsystem-vendor-id = 6B100000 – косметика;
  4. PciAddr = 00:16.00 (0x00160000) – PCI-адрес для Intel ME интерфейса.

Переименование видеокарты в ACPI таблицах с помощью бинарного патча.

Выполняется этот патч для завода управления питания (AGPM), и просто для более правильного определения карты в системе.

%d1%81%d0%bd%d0%b8%d0%bc%d0%be%d0%ba-%d1%8d%d0%ba%d1%80%d0%b0%d0%bd%d0%b0-2016-09-23-%d0%b2-9-12-35

Find: 47465830
Replace: 49475055

HDMI Звук.


Для завода звука по HDMI нам потребуются три вещи:

  1. Описанный девайс HDAU с помощью Arbitrary или через _DSM в DSDT;
  2. Свойство onboard-1 в устройствах HDEF и HDAU;
  3. Чтобы система видела HDMI как HDMI, а не как DP или прочий коннектор.

Для Haswell и Broadwell принято использовать B0D3 устройство (по адресу 0x00030000).


Чтобы OS X его подхватила, его нужно переименовать в HDAU.
Мы сделаем это бинарным патчем:

%d1%81%d0%bd%d0%b8%d0%bc%d0%be%d0%ba-%d1%8d%d0%ba%d1%80%d0%b0%d0%bd%d0%b0-2016-09-23-%d0%b2-9-14-45

Find: 42304433
Replace: 48444155

Инжект свойств на B0D3 (HDAU) устройство через Arbitrary:

%d1%81%d0%bd%d0%b8%d0%bc%d0%be%d0%ba-%d1%8d%d0%ba%d1%80%d0%b0%d0%bd%d0%b0-2016-09-23-%d0%b2-9-36-16

Разберем ключи:

  • layout-id = 03000000 – лайоут звука, который используете для HDEF;
    //поменяйте на свой, если используете другой лайоут
  • hda-gfx = onboard-1;
  • PciAddr = 00:03.00.
Секция HDEF также вписана в конфиг, с лейаут-ид=3. Это 4ый айтем в Arbitrary, первый ключ отвечает за layout.

Патч коннекторов:

Поскольку мы используем 0x0A260006-платформу для ноутбуков и 0x0d220003-платформу для стационарных компьютеров, нужные патчи уже вписаны в соответствующие конфиги. Всё, что требуется от вас – выполнить остальные условия.
Если же вы используете другую платформу, то вы можете взять нужные патчи для нужного порта в файле HDMI Azul patch.plist.
Также напомню, что если мы завели iHD в паре с дискретной графикой, то HDMI нужно заводить для дискретной графики, а не для iHD.
Ну и раз тема зашла о секции KernelAndKextPatches, то заодно добавлен фикс на артефакты (глитчи) яблока.
%d1%81%d0%bd%d0%b8%d0%bc%d0%be%d0%ba-%d1%8d%d0%ba%d1%80%d0%b0%d0%bd%d0%b0-2016-09-23-%d0%b2-9-48-11

Правильная регулировка яркости ноутбука.


Яркость любой Intel-графики управляется через специальный регистр. При наличии PNLF устройства в DSDT/SSDT, OS X подключается к нему, и, используя заготовленные настройки к монитору, вписывает туда значение текущей яркости, а для конечного пользователя появляется ползунок. Таким образом минимальный фикс для яркости это фиксы кловера: AddDTGP + AddPNLF (включены в конфиг)

При таком подходе возникают проблемы:

  1. Яркость изменяется не равномерно;
  2. Ползунок на максимум не дает полную яркость монитора, а после сна резко вспыхивает.

Первая проблема из-за того, что OS X не знает 16 ключевых уровней яркости конкретно нашего монитора, и использует стандартный линейный пресет. Вторая проблема связанна с ограничением максимального уровня яркости на системном уровне.

Решение проблем:

Фиксы кловера (AddDTGP + AddPNLF), и подкинуть в кловер IntelBacklight.kext от Rehabman’а.
Написан специально для Intel HD. Знает все особенности Sandy, Ivy, Haswell, Broadwell, и Skylake графики.


Файлы.


Прописанные секции из статьи в формате *.plist. Остальные настройки за вами.

Вынесенные патчи для всех фреймбуфферов, коннекторов DP –> HDMI:

Кексты:

  • IntelBacklight.kext – кекст на управление яркостью монитора ноутбуков;
  • FakePCIID.kext — сам кекст обманщик. Он всё равно не помешает, даже если у вас карта с нативным ID;
  • FakePCIID_Intel_HD_Graphics.kext.zip — плагин для подмены ID на HD Graphics.

Спасибо за прочтение!
Андрей Чернышов — материал и оформление.

2 комментария to “Haswell

  • Доброго времени суток!
    Мне не понятен один пункт:
    Установить в биосе под видеокарту 96мб
    Как это сделать?
    Дело в том, что видеокарта у мен заработала и отображается корректно, только вот памяти у меня 7 мб.

Добавить комментарий

%d такие блоггеры, как: