Quartz Extrême et Core Image dans un Power Mac G3

Continuons avec le Power Mac G3 Yosemite. Un des défauts de cette machine, c’est sa carte graphique : la Rage 128 16 Mo, même en PCI 66 MHz, est franchement lente. De plus, elle ne gère ni Quartz Extrême (qui accélère pas mal l’affichage) ni Core Image. Mais il est possible de mettre une carte graphique plus récente sans trop de soucis dans cette machine.

Sur ce modèle là, il y a un souci : la carte graphique est en PCI, comme sur les premiers Mac. D’une part les cartes PCI restent assez rares et d’autre part, la bande passante reste faible. Dans le meilleur des cas, avec une carte PCI 32 bits 66 MHz (ou 64 bits 33 MHz), on a 266 Mo/s. Dans beaucoup de cas, on est même limité à 32 bits 33 MHz, soit seulement 133 Mo/s. En comparaison, le Thunderbolt limite avec 1 Go/s et on a 32 Go/s en PCI-Express 3.0 x16.

La méthode est simple : on va prendre une carte graphique pour PC et flasher le firmware de la carte avec un firmware compatible Mac. C’est obligatoire sur les Mac PowerPC : les PC ont un firmware adapté au BIOS, les Mac un firmware adaptée à l’Open Firmware.

La manipulation n’est pas triviale : on va avoir besoin d’un PC doté de ports PCI, si possible avec une carte graphique d’une marque qui n’est pas celle de la carte à flasher (une Radeon si vous flashez une GeForce, une GeForce si vous flashez une Radeon). On va aussi avoir besoin d’un CD de boot DOS et évidemment d’un firmware compatible.

Pour le firmware, le site suivant propose pas mal de firmware pour les cartes PC. Après, il y a le choix de la carte, et c’est important.

D’abord, il faut une carte graphique PCI, ensuite une carte qui existe en version Mac. Petite liste (non-exhaustive) : Radeon 7000, Radeon 9100, Radeon 9200, Radeon 9200SE, Radeon 9250, GeForce 2 MX, GeForce 3 (je ne suis pas certain qu’elle existe, mais la ROM est compatible), GeForce 4 MX et GeForce FX5200.

Le choix de la ROM est important : toutes les cartes ATi (Radeon) pour Mac ont une ROM de 128 ko, alors que la majorité des cartes PC ont une ROM de 64 ko. Il y a deux solutions : soit changer la puce (bonne chance…) soit utiliser une ROM modifiée. Même chose pour les GeForce, il faut choisir la ROM en fonction de votre carte, ses sorties, sa mémoire, etc.

Soyons clair : ce n’est pas une science exacte. J’ai essayé, sans succès, de faire fonctionner une Radeon 7000 PCI 64 Mo dans mon Power Mac. Impossible, rien, nada. Avec une GeForce FX5200 256 Mo achetée à vil prix sur eBay, ça fonctionne par contre très bien.

Une fois qu’on a la carte, un PC, une ROM, il faut ajouter le programme de flash (atiflash ou nvflash) et la ROM dans l’ISO. Comme je suis un gars sympa, je vous fournis un fichier avec les bonnes versions et quelques ROMs (Radeon 7000 et 9200, GeForce 2 MX et GeForce FX 5200 256 Mo). Oui, parce qu’il faut utiliser une vieille version de nvflash, sinon ça ne fonctionne pas.

Maintenant, vous démarrez sur le CD, vous allez dans le dossier c:/flash (attention, clavier QWERTY…) et vous flashez la carte.

Pour une Radeon, il faut récupérer l’identifiant de la carte (a priori 0 si vous avez bien une GeForce en principal).

atiflash -i

Ensuite, on force le flash.

atiflash -p 0 mac.rom -f

Attention, vous risquez de planter la carte. Ne le faites pas si la carte est importante.

Pour une GeForce, il faut récupérer l’identifiant de la carte (a priori 0 si vous avez bien une Radeon en principal).

nvflash --list

Ensuite, on force le flash.

nvflash --index=0 -4 -5 -6 file.rom

Attention, vous risquez de planter la carte. Ne le faites pas si la carte est importante.

Une fois que c’est fait, il faut placer la carte dans le Mac… et espérer.

FX 5200 PCI 256 Mo, passive, 2 VGA

FX 5200 PCI 256 Mo, passive, 2 VGA

Activer Quartz Extrême

Maintenant qu’on a une carte graphique plus récente dans le Mac, si on activait Quartz Extrême ? Par défaut, Apple bloque cette accélération de l’affichage sur les cartes PCI, pour des raisons de performances. Sans entrer dans le détail, Quartz Extrême permet d’utiliser OpenGL pour accélérer l’affichage, en rendant chaque fenêtre comme une texture. Efficace, mais avec un défaut : il faut beaucoup de mémoire vidéo. Une fenêtre sur un écran en 1 024 x 768 prend par exemple environ 3 Mo. Quand la mémoire vidéo est remplie, ça passe sur la mémoire vive et avec un bus PCI, on tue les performances de la machine, parce que le bus — aussi utilisé pour le disque dur, l’USB, le FireWire, etc., est saturé et bien trop lent.

C’est utilisable en théorie avec une carte 16 Mo, mais je vous conseille une 64 ou une 128 Mo.

Dans mon cas, j’utilise la carte graphique PCI la plus puissante disponible : une GeForce FX 5200 256 Mo.

Pour la modification, il faut aller modifier le fichier suivant :

/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/CoreGraphics.framework/Versions/A/Resources/Configuration.plist

Il faut remplacer IOAGPDevice par IOPCIDevice.

Ensuite, on redémarre et ça devrait fonctionner.

Quartz Extrême

Quartz Extrême

La FX 5200 est aussi compatible Core Image (c’est a priori la seule disponible en PCI), ce qui permet d’avoir quelques effets sous Tiger, comme on le voit dans la vidéo.

Au final, ça accélère bien l’affichage, et c’est visible. Une petite vidéo pour montrer que les deux technologies sont actives : la goutte d’eau dans le Dashboard (Core Image) et le cube pour le changement d’utilisateur (Quartz Extrême).

Mon seul regret, c’est que si ma carte est passive (attention, toutes les GeForce FX 5200 ne le sont pas), elle ne propose malheureusement que deux sorties VGA. J’aurais apprécié une sortie DVI, mais trouver une GeForce FX 5200 256 Mo PCI passive, avec du DVI et qui ressemble à un modèle de référence (pour éviter les soucis de compatibilité), ce n’est pas une sinécure.

Enfin, petit effet collatéral dans ma machine, mon SSD est plus rapide. En fait, comme le SSD (plus exactement la carte SATA) et la carte graphique se partagent le bus PCI, la vitesse de l’un influe sur la vitesse de l’autre. Et si la carte graphique d’origine est en PCI 66 MHz, la GeForce FX 5200 est en PCI 33 MHz, ce qui libère de la bande passante pour les autres périphériques, dont le SSD.