Я изначально подбирал материнскую плату со встроенным DisplayPort, поскольку где-то вычитал, что HDMI/DVI в хакинтоше не поддерживают разрешения выше Full HD. Монитор у меня как раз такой, но если он накроется, то на замену буду брать что-то побольше размером и разрешением.
Ну так вот, до прошлой пятницы монитор был подключен кабелем DVI и отлично работал. Заказанный одновременно со всеми запчастями кабель DisplayPort ехал на месяц с лишним дольше, покупать здесь смысла не было — и так работает же.
Получил, подключил, переключил вход у монитора на DP — тишина, сигнала нет. Перезагрузился — BIOS отлично, Clover видно, загрузка на 2/3 проходит, затем экран гаснет и монитор теряет сигнал. Система отлично грузится «в темную», можно переключиться обратно на DVI и все будет здорово. Закусило, стал пробовать и разбираться.
Драйвер com.apple.driver.AppleIntelSKLGraphicsFramebuffer грузился нормально, ioRegistryExplorer показывал 3 буфера для устройства IGPU@2, которое до переименования звалось GFX0. Монитор числился за AppleIntelFramebuffer@2, это был DVI. Я думал, что AppleIntelFramebuffer@1 — это мой DP и он почему-то капризничает. Взял паузу на почитать.
Ирония в том, что этот драйвер по-умолчанию считает все порты DP, у большинства проблемы как раз с HDMI и DVI, которые гораздо более популярны. Для решения используют патчи, которые меняют свойство connector-type (для справки: DVI <00 02 00 00> HDMI <00 08 00 00> DP <00 04 00 00>) для соответствующих портов. Также есть патч, который добавляет «четвертый монитор» встроенному Intel Graphics HD530 (и по наследству HD630).
Я попробовал — сходу не получилось, драйвер перестал грузиться, я получил «аварийную» графику по-умолчанию, которая кое-как работала, периодически пугая глюками и артефактами. Однако, теперь работали оба провода. По результатам хаотичного тыканья в кнопки вдумчивого анализа родилась рабочая конфигурация.
TL;DR — Intel HD Graphics HD630 @ Gigabyte GA-H270M-DS3H
Моя рабочая конфигурация, комментарии для config.plist и расширения.
- config.plist/ACPI переименовать GFX0 в IGPU
- config.plist/Devices IntelGFX = 0x19168086 + патч IntelGFX (AAPL,GfxYTile)
- config.plist/Graphics InjectIntel=true + ig-platform-id = 0x19120000 (не было никакого)
- config.plist/KextsToPatch здесь два патча для AppleIntelSKLGraphicsFramebuffer, один увеличивает число мониторов до 4, другой меняет тип коннектора для DVI
- FakePCIID.kext+FakePCIID_Intel_HD_Graphics.kext лежат в /L/E
Жирным выделил то, что изменилось по сравнению с предыдущим состоянием (рабочий DVI, нерабочий DP). Фэйки из п.5, как я понял, маскируют Kaby Lake под Skylake для драйверов, в частности HD630 под HD530. В итоге DP завелся на AppleIntelFramebuffer@3, которого до патча SKL вообще не было. Сейчас у меня как бы 2 монитора, в настройках включен mirror, можно переключать с DVI на DP и обратно — красота.
Что любопытно, настройки для мониторов отличаются. На DisplayPort подключении можно управлять поворотом, регулировать underscan неизвестно зачем. У DVI параметров меньше, так что какой-то зримой разницы я добился, хотя бы в бесполезных ползунках и галочках.
Остался вопрос — на каких началах DVI работал до этого?