Intel HD Graphics - Accélération - Audio HDMI
Voici un petit retour de mes expérimentations avec l'Intel HD 5000 de mon NUC sur l'accélération graphique, l'audio HDMI et le 4K ainsi que l'utilisation de plusieurs écrans.
Sommaire :
■ Outils
■ Recherches Préliminaires
■ Injection de "AAPL,ig-platform-id"
■ Audio HDMI
■ Patches Clover
◉ Outils :
■ DCPIManager
■ MaciASL
■ Clover
■ Le script AppleIntelFramebufferAzul.sh (Si vous avez un BDW ou un SKL vous pouvez lancer le script correspondant de ce pack)
◉ Recherches Préliminaires :
■ Ouvrez DCPIManager et allez dans l'onglet "PCI List" puis trouvez le "DeviceID" de votre Intel HD. (Vous pouvez confirmer ce "DeviceID" grâce au site l'Intel en cherchant votre processeur ou trouver des infos sur Wikipédia).
Dans mon cas, c'est "0A26 HASWELL ULT GT3"
PikerAlpha a fait un super boulot sur les framebuffers des CG Intel supportés par MacOSX et voici la liste qu'il a recensé :
IvyBridgeCODE
[ 1] : 0x01660000 - Ivy Bridge Mobile GT2
[ 2] : 0x01620006 - Ivy Bridge GT2
[ 3] : 0x01620007 - Ivy Bridge GT2
[ 4] : 0x01620005 - Ivy Bridge GT2
[ 5] : 0x01660001 - Ivy Bridge Mobile GT2
[ 6] : 0x01660002 - Ivy Bridge Mobile GT2
[ 7] : 0x01660008 - Ivy Bridge Mobile GT2
[ 8] : 0x01660009 - Ivy Bridge Mobile GT2
[ 9] : 0x01660003 - Ivy Bridge Mobile GT2
[10] : 0x01660004 - Ivy Bridge Mobile GT2
[11] : 0x0166000a - Ivy Bridge Mobile GT2
[12] : 0x0166000b - Ivy Bridge Mobile GT2
Haswell
CODE
[ 1] : 0x0c060000 - Haswell SDV Mobile GT1
[ 2] : 0x0c160000 - Haswell SDV Mobile GT2
[ 3] : 0x0c260000 - Haswell SDV Mobile GT3
[ 4] : 0x04060000 - Haswell Mobile GT1
[ 5] : 0x04160000 - Haswell Mobile GT2
[ 6] : 0x04260000 - Haswell Mobile GT3
[ 7] : 0x0d260000 - Haswell CRW Mobile GT3
[ 8] : 0x0a160000 - Haswell ULT Mobile GT2
[ 9] : 0x0a260000 - Haswell ULT Mobile GT3
[10] : 0x0a260005 - Haswell ULT Mobile GT3
[11] : 0x0a260006 - Haswell ULT Mobile GT3
[12] : 0x0a2e0008 - Haswell ULT E GT3
[13] : 0x0a16000c - Haswell ULT Mobile GT2
[14] : 0x0d260007 - Haswell CRW Mobile GT3
[15] : 0x0d220003 - Haswell CRW GT3
[16] : 0x0a2e000a - Haswell ULT E GT3
[17] : 0x0a26000a - Haswell ULT Mobile GT3
[18] : 0x0a2e000d - Haswell ULT E GT3
[19] : 0x0a26000d - Haswell ULT Mobile GT3
[20] : 0x04120004 - Haswell GT2
[21] : 0x0412000b - Haswell GT2
[22] : 0x0d260009 - Haswell CRW Mobile GT3
Broadwell
CODE
[ 1] : 0x16060000 – Broadwell GT1
[ 2] : 0x160e0000 – Broadwell GT1
[ 3] : 0x16160000 – Broadwell GT2
[ 4] : 0x161e0000 – Broadwell GT2 (MacBook)
[ 5] : 0x16260000 – Broadwell GT3 (MacBook Air)
[ 6] : 0x162b0000 – Broadwell GT3 (MacBook Pro)
[ 7] : 0x16220000 – Broadwell GT3
[ 8] : 0x160e0001 – Broadwell GT1
[ 9] : 0x161e0001 – Broadwell GT2 (MacBook)
[10] : 0x16060002 – Broadwell GT1
[11] : 0x16160002 – Broadwell GT2
[12] : 0x16260002 – Broadwell GT3 (MacBook Air)
[13] : 0x16220002 – Broadwell GT3
[14] : 0x162b0002 – Broadwell GT3 (MacBook Pro)
[15] : 0x16120003 – Broadwell GT2
[16] : 0x162b0004 – Broadwell GT3 (MacBook Pro)
[17] : 0x16260004 – Broadwell GT3 (MacBook Air)
[18] : 0x16260005 – Broadwell GT3 (MacBook Air)
[19] : 0x16260006 – Broadwell GT3 (MacBook Air)
SkylakeCODE
[ 1] 0x191e0000 - Intel® HD Graphics 515..........(ULX GT2)
[ 2] 0x19160000 - Intel® HD Graphics 520..........(ULT GT2)
[ 3] 0x19260000 - Intel® Iris™ Graphics 550.......(ULT GT3)
[ 4] 0x191b0000 - Intel® HD Graphics 530..........(Halo GT2)
[ 5] 0x193b0000 - Intel® Iris™ Pro Graphics 580...(Halo GT4)
[ 6] 0x19120000 - Intel® HD Graphics 530..........(Desktop GT2)
[ 7] 0x19020001 - Intel® HD Graphics 510..........(Desktop GT1)
[ 8] 0x19170001 - Skylake Desktop.................(GT1.5)
[ 9] 0x19120001 - Intel® HD Graphics 530..........(Desktop GT2)
[10] 0x19320001 - Skylake Desktop.................(GT4)
[11] 0x19160002 - Intel® HD Graphics 520..........(ULT GT2)
[12] 0x19260002 - Intel® Iris™ Graphics 540.......(ULT GT3)
[13] 0x191e0003 - Intel® HD Graphics 515..........(ULX GT2)
[14] 0x19260004 - Intel® Iris™ Graphics 540.......(ULT GT3)
[15] 0x193b0005 - Intel® Iris™ Pro Graphics 580...(Halo GT4)
[16] 0x193b0006 - Intel® Iris™ Pro Graphics 580...(Halo GT4)
Attention : [7],[8],[9] et [10 ]semblent ne pas fonctionner…
Il suffit ensuite de trouver les cartes qui peuvent correspondre à la vôtre et à son "DeviceID". Dans mon cas "0A26 HASWELL ULT GT3" :
Citation
[ 9] : 0x0a260000 - Haswell ULT Mobile GT3
[10] : 0x0a260005 - Haswell ULT Mobile GT3
[11] : 0x0a260006 - Haswell ULT Mobile GT3
...
[15] : 0x0d220003 - Haswell CRW GT3
...
[17] : 0x0a26000a - Haswell ULT Mobile GT3
[19] : 0x0a26000d - Haswell ULT Mobile GT3
J'ai donc 6 framebuffers a priori compatibles à tester. J'ai laissé "0x0d220003" car c'est un peu le couteau suisse des cartes Ivy Bridge/Haswell (HD 4600).
◉ Injection de "AAPL,ig-platform-id" :
Il est possible de faire cela de tout plein de façons (la méthode Clover "arbitrary device property injection" devrait marcher aussi bien, je m'y attellerai plus tard), je ne vais détailler que celle par SSDT ici.
Il suffit de créer un fichier SSDT-IGPU.aml avec deux parties :
■ "IGPU" avec le bon framebuffer à tester dans buffer en LSB (et pas MSB, cf wiki) en gros, par paire et en commençant par la droite.
Dans mon cas "0x0a26000d" devient "0D 00 26 0A"
■ "HDAU" pour l'HDMI Audio… bref l'HDMI audio.
Il est essentiel que ces deux parties aient une section avec "hda-gfx"="onboard-1" pour que l'audio HDMI fonctionne.
CODE
DefinitionBlock ("iASLu1dIHi.aml", "SSDT", 1, "toleda", "ami8hdm1", 0x00003000)
{
External (_SB_.PCI0, DeviceObj)
Scope (_SB.PCI0)
{
Device (IGPU)
{
Name (_ADR, 0x00020000)
Method (_DSM, 4, NotSerialized)
{
If (LEqual (Arg2, Zero))
{
Return (Buffer (One)
{
0x03
})
}
Return (Package (0x04)
{
"AAPL,ig-platform-id",
Buffer (0x04)
{
0x0D, 0x00, 0x26, 0x0A
},
"hda-gfx",
Buffer (0x0A)
{
"onboard-1"
}
})
}
}
Device (HDAU)
{
Name (_ADR, 0x00030000)
Method (_DSM, 4, NotSerialized)
{
If (LEqual (Arg2, Zero))
{
Return (Buffer (One)
{
0x03
})
}
Return (Package (0x04)
{
"hda-gfx",
Buffer (0x0A)
{
"onboard-1"
}
})
}
}
}
}
Il suffit maintenant de tester ce fichier avec les 6 possibilités :
■ Créez une Clé USB de test avec Clover et une copie de votre EFI.
■ Copiez le fichier SSDT-IGPU.aml dans CLOVER/ACPI/patched.
■ Bootez sur cette clé
Regardez si le résultat est convenable en lançant un partie d'échecs par exemple et en et regardant la transparence des fenêtres.
Sinon, esayez la possibilité suivante :
Dans mon cas la meilleur performance est avec "0x0a26000d" mais "0x0d220003" marche aussi.
Attention : il ne faut absolument rien injecter à propos de cet IGPU avec Clover (partie "Graphics") !
◉ Audio HDMI :
■ Lancez DCPIManager et restez sur la page "Status" et recherchez l'Audio Device correspondant au "Codec Name" Intel :
Dans mon cas, c'est : 0x80860A0C
0x80860D0C et 0x80860A0C sont supportés nativement.
0x80860C0C ne l'est pas.
Dans ce cas là, il suffit d'installer deux kexts dans /EFI/CLOVER/kext/Other/ :
• FakePCIID.kext
• FakePCIID_Intel_HDMI_Audio.kext
Si votre codec n'apparait pas sur cette page, tout n'est pas perdu !
Allez dans la page "Misc" et cherchez (Cmd+F) votre VendorID suivie de votre DeviceID (8086 0A0C dans mon cas) et vous devriez trouver une ligne du style :
Citation
0:101 0:000 PCI (00|00:03.00) : 8086 0A0C class=040300
Modifiez votre SSDT-IGP.aml avec une nouvelle adresse pour votre HDAU :
Citation
Name (_ADR, 0x00030000)
Exemple pour l'Intel HD 520 :
Citation
0:101 0:000 PCI (00|00:1F.03) : 8086 9D70 class=040300
Name (_ADR, 0x001F0003)
CODE
Device (HDAU)
{
Name (_ADR, 0x001F0003)
Method (_DSM, 4, NotSerialized)
{
If (LEqual (Arg2, Zero))
{
Return (Buffer (One)
{
0x03
})
}
Return (Package (0x02)
{
"hda-gfx",
Buffer (0x0A)
{
"onboard-1"
}
})
}
▸ Si vous avez un Ivy Bridge ou un Haswell, lancez le script de PikerAlpha :
■ Tapez "8" et "Entrée"
■ Faites une capture écran (Maj+Cmd+4).
▸ Si vous avez un Broadwell ou un Skylake
■ Lancez le script du pack Show_AppleIntelFramebuffer correspondant à votre processeur :
■ Faites une capture écran (Maj+Cmd+4).
◉ Patches audio Clover :
Nous allons commencer par modifier le "connector type" en "HDMI" au lieu de "DisplayPort" car MacOSX ne semble pas laisser passer de son sur un port DP.
■ Pour ce faire il suffit de créer le patch Clover suivant :
Code
Comment : port 0x05 DP to HDMI
Find :01050900 00040000 070100
Name : AppleIntelFramebufferAzul
Replace : 01050900 00080000 070100
Code
Comment : port 0x06 DP to HDMI
Find :02040A00 00040000 070100
Name : AppleIntelFramebufferAzul
Replace : 02040A00 00080000 070100
CODE
<dict>
<key>KernelAndKextPatches</key>
<dict>
<key>KextsToPatch</key>
<array>
<dict>
<key>Comment</key>
<string>port 0x05 DP to HDMI</string>
<key>Find</key>
<data>
AQUJAAAEAAAHAQA=
</data>
<key>Name</key>
<string>AppleIntelFramebufferAzul</string>
<key>Replace</key>
<data>
AQUJAAAIAAAHAQA=
</data>
</dict>
<dict>
<key>Comment</key>
<string>port 0x06 DP to HDMI</string>
<key>Find</key>
<data>
AgQKAAAEAAAHAQA=
</data>
<key>Name</key>
<string>AppleIntelFramebufferAzul</string>
<key>Replace</key>
<data>
AgQKAAAIAAAHAQA=
</data>
</dict>
</array>
<key>debug</key>
<true/>
</dict>
</dict>
■ Redémarrez avec ce patch.
Si cela ne marche pas, essayer avec un autre "connector attribute":
■ Redémarrez
Si cela ne marche toujours pas, essayez avec un autre "pipe attribute" et recommencez avec chaque "connector attribute":
Normalement une combinaison devrait marcher, dans mon cas : 01051200 00080000 070100
Voilà ! Bon courage !
Mises à jour :
• 2016 05 14 : Adresse différente de 00:03.0 (00:1F.3) par exemple pour HD520
• 2016 05 19 : BDW et SKL avec script remanié
• 2018 03 11 : Remise en page + corrections mineures