Accélération Intel Graphics HD530 "offline" / Quick Sync / Skylake

cosmoscosmos

Membre confirmé
12 Août 2007
39
3
Bruxelles
But recherché:
activer l'accélération graphique matérielle du Core i7 skylake aussi appelée Intel Graphics HD530 ou encore Intel Quick Sync, technologie que l'on trouve nottemment dans le Monitor Airplay, Facetime, Quicktime encoder et par exemple dans MacX DVD Ripper et MacX Video Converter Pro (demo ici: https://www.macxdvd.com/mac-video-converter-pro/hardware-encoding-performance.htm)

configuration initiale:
mobo: GA Z170X gaming 5
CPU: Corei7 Skylake
GPU: GTX 960 2Gb avec 2 moniteurs (aucun moniteur sur la sortie iGPU -> "offline")
Clover: SMBIOS 17.1 Sierra 10.12.4

Après beaucoup d'essais/erreurs je suis tombé sur cette page où une solution semble possible:
https://www.tonymacx86.com/threads/...phics-in-imac-17-1.216447/page-6#post-1480854

En simplifiant, j'ai retenu cette solution qui semble marcher:
réglage BIOS:
Primary boot display : PCIe slot 1 (NVidia GTX 960)
Internal Graphics Enbaled PRE 64GB + MAX + Intrnal AUDIO : Enabled

Juste copier ce fichier Toledo SSDT (SSDT-HDMI-HD530-Airplay.aml) dans /EFI/Clover/ACPI/patched/
disponible ici: https://www.tonymacx86.com/attachments/ssdt-hdmi-hd530-airplay-aml.248460/
(je n'ai pas copié les shiki.kext et lilu.kexts)

Résultat:
- doublement fps en encodage avec DVD Video Converter Pro (900+ fps sur une video SD)
- l'apparition du Airplay monitor
- activité CPU beaucoup plus modérée lors d'un encodage h264

Question: Seule truc bizarre, iStat Pro montre Intel HD Graphics 7000 et Apple Rapport Sytème ne montre que la GTX960 dans "cartes graphiques..."
Est-ce normal ? Est-ce "propre" ?
 
Dernière édition:
Je pense que ce serait plus propre en prenant le fichier directement chez Toleda

Dans le fichier récupéré chez Tonymac, il y a ces lignes qui ne me semblent pas se justifier :

Bloc de code:
                    "model",
                    Buffer (0x17)
                    {
                        "Intel HD Graphics 7000"
                    },

Pour info, la combinaison Lilu et Shiki permet la lecture des films achetés sur iTunes qui sont protégés par DRM.
 
  • J’aime
Réactions: polyzargone
Je pense que ce serait plus propre en prenant le fichier directement chez Toleda

Dans le fichier récupéré chez Tonymac, il y a ces lignes qui ne me semblent pas se justifier :

Merci pour l'info. Mais le patch .aml posté chez Toleda ne marche pas et donne après reboot "hardware supported = no" dans MacX Ripper Pro
Entretemps j'avais remplacé dans le fichier en post #1 ci-dessus
"Graphics 7000" par "Graphics HD 530"
et resauvé (pensant que c'était juste cosmétique).

Ci-dessous: une capture avec les différences entre les deux:
- à gauche: ma version cosmétiquement corrigée
- à droite: la version de Toleda (qui ne marche pas chez moi)
J'ai posté le patch .aml corrigé ici:
https://www.tonymacx86.com/attachments/ssdt-hdmi-hd530-airplay-aml.252175/
 

Fichiers joints

  • Capture d’écran 2017-05-07 à 11.47.30.png
    Capture d’écran 2017-05-07 à 11.47.30.png
    164,5 KB · Affichages: 411
Est-ce qu'iBooks fonctionne correctement avec cette configuration ? Pas de problème de fenêtre devenant transparente lorsqu'on ouvre un livre ?
Si. Fenêtre entièrement transparente avec des livres sans images.
Est-ce que les kext lilu et shiki arrangent ce problème ?
(à vrai dire je ne trouve aucun tuto d'insatllation - à part les readme - pour ces 2 kext encore un peu mystérieux pour moi ;-)
 
Non, c'est un bug apparemment imputable à Nvidia.

Pour l'instant, on ne connait qu'une solution de contournement, c'est de faire apparaître la GPU Intel comme étant "online". Mais du coup, c'est incompatible avec cette accélération.
 
  • J’aime
Réactions: cosmoscosmos
Tada ! Vous pouvez voir : en premier plan iBooks en pleine forme, en deuxième plan MacX Video Converter avec l'accélération matérielle QuickSync…
Capture d’écran QuickSync+iBooks.jpg

L'astuce principale est le kext NVWebDriverLibValFix installé dans Clover.

Mais une astuce secondaire que j'ai trouvée presque par hasard est le nom du modèle : au lieu de "Graphics 7000" ou "Graphics HD 530", j'utilise "Skylake Desktop GT2" qui modifie le comportement de l'ensemble. Ça supprime des avertissements dans les logs, et je vois des différences de comportement dans certains programmes.

Je mets ci-après mon SSDT (attention, lorsqu'on change une chaîne de caractère injectée, il faut aussi adapter la définition de sa longueur). Ce SSDT remplace les "rename GFX0 to IGPU" et "replace HECI to IMEI".

Une situation complète de cette nouvelle config en test peut être téléchargée ici.



Bloc de code:
/*
* Intel ACPI Component Architecture
* AML/ASL+ Disassembler version 20160422-64(RM)
* Copyright (c) 2000 - 2016 Intel Corporation
*
* Disassembling to non-symbolic legacy ASL operators
*
* Disassembly of iASLMU8y1U.aml, Tue Aug  1 20:35:55 2017
*
* Original Table Header:
*     Signature        "SSDT"
*     Length           0x000001B7 (439)
*     Revision         0x01
*     Checksum         0x3E
*     OEM ID           "toleda"
*     OEM Table ID     "100s530"
*     OEM Revision     0x00003000 (12288)
*     Compiler ID      "INTL"
*     Compiler Version 0x20160422 (538313762)
*/
DefinitionBlock ("", "SSDT", 1, "toleda", "100s530", 0x00003000)
{
    External (_SB_.PCI0, DeviceObj)    // (from opcode)
    External (_SB_.PCI0.GFX0._ADR, UnknownObj)    // (from opcode)
    External (_SB_.PCI0.HECI._ADR, UnknownObj)    // (from opcode)

    Scope (\_SB.PCI0)
    {
        Name (GFX0._STA, Zero)  // _STA: Status
        Device (IGPU)
        {
            Name (_ADR, 0x00020000)  // _ADR: Address
            Method (_INI, 0, NotSerialized)  // _INI: Initialize
            {
                Store (Zero, \_SB.PCI0.GFX0._ADR)
            }

            Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
            {
                If (LEqual (Arg2, Zero))
                {
                    Return (Buffer (One)
                    {
                         0x03                                         
                    })
                }

                Return (Package (0x08)
                {
                    "AAPL,ig-platform-id",
                    Buffer (0x04)
                    {
                         0x01, 0x00, 0x12, 0x19                       
                    },

                    "model",
                    Buffer (0x14)
                    {
                        "Skylake Desktop GT2"
                    },

                    "AAPL,GfxYTile",
                    Buffer (0x04)
                    {
                         0x01, 0x00, 0x00, 0x00                       
                    },

                    "hda-gfx",
                    Buffer (0x0A)
                    {
                        "onboard-1"
                    }
                })
            }
        }

        Name (HECI._STA, Zero)  // _STA: Status
        Device (IMEI)
        {
            Name (_ADR, 0x00160000)  // _ADR: Address
            Method (_INI, 0, NotSerialized)  // _INI: Initialize
            {
                Store (Zero, \_SB.PCI0.HECI._ADR)
            }

            Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
            {
                If (LEqual (Arg2, Zero))
                {
                    Return (Buffer (One)
                    {
                         0x03                                         
                    })
                }

                Return (Package (0x02)
                {
                    "device-id",
                    Buffer (0x04)
                    {
                         0x3A, 0xA1, 0x00, 0x00                       
                    }
                })
            }
        }
    }

    Store ("ssdt-ami_100_skl-hd530_v2.0 github.com/toleda", Debug)
}
 
Dernière édition:
  • J’aime
Réactions: cosmoscosmos
Excellent ! ça marche ici aussi avec le le kext NVWebDriverLibValFix.
Le Terminal montre que ça mouline beaucoup de choses (compilation) pour le build de ce kext.
terminal_OUT.jpg
iBooks montre enfin des fenêtres texte !
(par contre toujours pas de iTunes video DRM avec shiki ici...)
 
J'enfonce sans doute une porte déjà ouverte mais as tu déjà, pour obtenir les videos DRM avec iTunes, renseigné dans graphics : l'ig-platform-id avec 0x19120001 ou 0x19120000 ?
 
Le SSDT contient déjà l'id 0x19120001…
Ici, les vidéos iTunes DRM fonctionnent bien.

Par contre de nouveaux petits soucis avec la sortie d'hibernation. Enquête en cours… (mais ça risque d'être long, il faut accumuler beaucoup de cycles pour commencer à voir quelques "certitudes")
 
J'enfonce sans doute une porte déjà ouverte mais as tu déjà, pour obtenir les videos DRM avec iTunes, renseigné dans graphics : l'ig-platform-id avec 0x19120001 ou 0x19120000 ?
J'avais effectivement déjà essayé avec ces valeurs dans Clover. Sans succès.
Je dois (re)préciser que je n'ai aucun écran branché sur la sortie Intel mais 2 écrans branchés sur la GTX960.
Ceci explique aussi pê celà.
 
Mmmh… Cette question d'accélération matérielle semble plus complexe que cela.

J'ai MacX Video Convert Pro qui me dit que QuickSync est disponible.
Malgré cela, si je lis avec QuickTime une grosse vidéo (genre celle là, 673 Mo), j'ai un process VTDecoderXPCService qui bouffe toute la CPU alors que Intel Power Gadget montre que la GPU reste inactive.
Problème également rapporté par d'autres hackers.
 
ça a l'air d'autant plus complexe que même sous Win10, je dois obligatoirement brancher un écran sur la sortie Intel pour pouvoir utiliser QuickSync.
 
Est-ce qu'iBooks fonctionne correctement avec cette configuration ? Pas de problème de fenêtre devenant transparente lorsqu'on ouvre un livre ?
Je viens de passer à High Sierra et sans manip particulière iBooks fonctionne parfaitement, sans artefacts d'aucune sorte.
 
Je viens de passer à High Sierra et sans manip particulière iBooks fonctionne parfaitement, sans artefacts d'aucune sorte.
C'est logique puisque tu utilises NVWebDriverLibValFix.kext

Sous Sierra, seules quelques applications comme iBooks étaient affectées si un driver de la carte graphique n'était pas correctement signé. Avec High Sierra et la généralisation de l'utilisation de Metal, c'est WindowServer lui-même qui bloque lorsque le système détecte un driver patché.

De ce fait, NVWebDriverLibValFix (ou une astuce comparable) devient incontournable avec tous les SMBIOS qui ont été confrontés au problème d'écran noir avec les drivers Nvidia et qui nécessitent un patch pour contourner le problème. A noter d'ailleurs que le développeur de NvidiaGraphicsFixup est en train d'incorporer le code de NVWebDriverLibValFix dans son propre plugin, ce qui devrait simplifier les choses.

Autre conséquence de ces changements, pour l'heure, l'argument de boot `nv_disable=1` ne suffit plus pour être sûr de démarrer avec un écran à peu près exploitable quel que soit l'état de son driver Nvidia. Bref, ceux qui ont choisi de rester sur le SMBIOS iMac14,2 n'ont probablement pas à regretter leur choix…

PS : suis-je le seul à trouver l'utilisation de ce forum insupportable avec Safari sous macOS 10.13 ? La page se recharge en erreur quasiment chaque fois qu'elle essaie de faire une correction orthographique ou une mise en forme du texte tapé.
 
Bref, ceux qui ont choisi de rester sur le SMBIOS iMac14,2 n'ont probablement pas à regretter leur choix…

Sauf pour installer High Sierra qui leur enverra un message d'erreur firmware ou autre. Me trompe je ? A moins qu'on utilise une version "08/21/2017" dudit smbios, peut être ?

Sinon je n'ai pour l'heure pas de problème avec l'utilisation du forum telle que tu l'indiques...
 
Dernière édition:
Sauf pour installer High Sierra qui leur enverra un message d'erreur firmware ou autre. Me trompe je ? A moins qu'on utilise une version "08/21/2017" dudit smbios, peut être ?

Je n'ai pas retesté avec un SMBIOS iMac14,2, mais les versions récentes de Clover savent en principe injecter les bons paramètres pour la version de firmware. Je n'ai modifié ni BiosReleaseDate ni BiosVersion dans mon config.plist et pourtant ça marche…
 
Pas de soucis avec un SMBios d'iMac14,2 sur ma config Haswell pour ma part et comme je n'avais pas de problème d'écran noir avec Sierra, pas besoin de NVWebDriverLibValFix.kext ni de NvidiaGraphicsFixup.kext non plus.

Et je confirme que les versions récentes de Clover injectent automatiquement les bonnes infos concernant les Firmware Features, Features Mask, Platform Feature, etc.

Bloc de code:
1:427  0:000  Using ProductName from config
1:427  0:000  ProductName: MacBookPro11,1
1:427  0:000  Using latest BiosVersion from clover
1:427  0:000  BiosVersion: MBP111.88Z.0142.B00.1708080655
1:427  0:000  BiosReleaseDate: 08/08/2017
1:427  0:000  Using FirmwareFeatures from clover
1:427  0:000  FirmwareFeatures: 0xE80FE137
1:427  0:000  Using FirmwareFeaturesMask from clover
1:427  0:000  FirmwareFeaturesMask: 0xFF1FFF3F
1:427  0:000  Using PlatformFeature from clover
1:427  0:000  PlatformFeature: 0x2
1:427  0:000  Board-ID set from config as Mac-189A3D4F975D5FFC
1:427  0:000  BoardType: 0xA
1:427  0:000  ChassisType: 0x8

Elles prennent le pas sur celles du config.plist :

Bloc de code:
BiosVersion: MBP111.88Z.0139.B01.1706261010
BiosReleaseDate: 06/26/2017
 
Et je confirme que les versions récentes de Clover injectent automatiquement les bonnes infos concernant les Firmware Features, Features Mask, Platform Feature, etc.

Elles prennent le pas sur celles du config.plist
Plus précisément : les valeurs dans le config.plist ne seront prises en compte que si elles font référence à un BIOS plus récent que ceux codés pour la plate-forme en question dans Clover.

Donc si on teste une version beta de macOS, on peut mettre si nécessaire les bonnes valeurs en attendant que Clover soit mis à jour.

Source : historique de Clover, révisions 4161 et 4179
http://www.insanelymac.com/forum/topic/304530-clover-change-explanations/?p=2478539