Une carte graphique en Thunderbolt sur Mac

Je viens de publier le dossier sur Tom’s Hardware, on va donc en parler ici aussi, en aprofondissant certains points : comment utiliser une carte graphique Thunderbolt sur Mac.

Si vous utilisez OS X Yosemite, c’est ici.

C’est le graal pour certains : il est possible d’utiliser une carte graphique en Thunderbolt sur un Mac. Ce n’est pas simple et il y a quelques petits soucis, mais ça marche assez bien.

Le matériel

Dans mon cas, j’utilise un boîtier ViDock 3 (un boîtier ExpressCard, déjà utilisé sur mon ancien MacBook Pro), un adaptateur Sonnet Thunderbolt vers ExpressCard (la version Pro, compatible PCI-Express 2.0) et un câble Thunderbolt.

Question carte graphique, n’importe quel modèle nVidia pas trop vieux — j’ai testé une GeForce GTX 260 Zotac, une GeForce GT120 Apple et une Quadro K5000 pour Mac — fonctionne. Au quotidien, j’ai installé une GeForce GT610 passive (entrée de gamme) simplement pour gérer des écrans. Les cartes AMD fonctionnent, mais avec de gros bugs graphiques, donc je vous le déconseille pour le moment.

Une Quadro K5000

Une Quadro K5000

On peut remplacer le boîtier ViDock par un PE4L de chez Bplus, c’est moins cher et aussi performant.

Globalement, avec une carte graphique milieu de gamme, on s’en tire pour environ 500 €.

Le système

Mac OS X, par défaut, ne charge tout simplement pas les pilotes GPU en Thunderbolt. La raison est simple : il faut normalement des pilotes adaptés au branchement à chaud pour travailler en Thunderbolt, et les pilotes GPU ne le sont pas. Mais il est assez simple d’ajouter ce qu’il faut dans les pilotes pour qu’ils se chargent en Thunderbolt, même si le branchement à chaud n’est pas supporté. Attention, donc, si on débranche le câble ordinateur allumé, c’est kernel panic assuré.

Quadro installée

Quadro installée

Pour les cartes graphiques nVidia, il y a trois fichiers à modifier. Les deux premiers sont liés à l’affichage, le troisième à la prise en charge du son via une sortie HDMI ou DisplayPort.

/System/Library/Extensions/NVDAStartup.kext
/System/Library/Extensions/IONDRVSupport.kext
/System/Library/Extensions/AppleHDA.kext/Contents/PlugIns/AppleHDAController.kext

Il faut aller chercher chaque fichier, ouvrir le paquet (clic secondaire -> Afficher le contenu du paquet) et ouvrir le fichier Info.plist avec un éditeur de texte qui supporte l’édition des fichiers systèmes (par exemple TextWrangler dans sa version qui ne provient pas du Mac App Store).

Dans ce fichier, il faut chercher les sections qui commencent par <key>CFBundleIdentifier</key> et ajouter, juste avant le </dict>, les deux lignes suivantes.

<key>IOPCITunnelCompatible</key>
<true/>

Une fois que c’est fait dans les trois fichiers (attention, il y a plusieurs occurences dans IONDRVSupport.kext), il suffit de redémarrer et la carte devrait s’activer et fonctionner. Dans mon cas, ça a marché avec tous les GPU testés.

Attention à un point, il faut refaire la manipulation à chaque mise à jour mineure du système (par exemple au passage à la 10.8.5).

Les performances

Le Thunderbolt bride assez peu les cartes graphiques dans la pratique. Bien évidemment, certaines tâches et certains jeux sont limités par le bus (qui est ici équivalent à 2 lignes PCI-Express classiques, 500 Mo/s) mais ça reste largement plus performant que la carte graphique intégrée ou même — avec un bon GPU — la carte graphique dédiée d’un MacBook Pro.

Sous Mac OS X, des jeux comme Batman Arkham City ou Starcraft 2 sont parfaitement fluides en 1 600 x 1 200 sur un MacBook Air 11 pouces 2012 avec un gros GPU (la Quadro K5000, équivalente à une GeForce GTX 660/670), même avec les détails au maximum.

Sous Windows, les performances dans un test comme 3D Mark sont meilleures que celles d’un ordinateur portable pour les joueurs, tant qu’on reste sur un écran externe. Les pilotes NVIDIA, sous Windows, permettent en effet de renvoyer l’image vers l’écran interne du portable, mais la fonction n’existe pas sous Mac OS X et a un gros impact sur les performances.

Pour les personnes qui veulent jouer sous Windows, un petit programme est nécessaire pour initialiser la carte graphique. Il se trouve là, et l’auteur est réactif pour la configuration.

Si vous avez des questions ou si vous voulez des précisions, les commentaires sont là.