La PowerVR PCX1, (presque) la première des PowerVR

J’ai déjà parlé des PowerVR il y a un moment parce que j’ai une carte PowerVR qui n’en est pas vraiment une. En effet, elle sert pour le Virtua Gun de la Saturn sur un PC. Mais depuis, j’ai trouvé deux vrais cartes PowerVR, une PCX1 et une PCX2.

Les PowerVR sont des cartes fascinantes pour les adeptes des débuts de la 3D, pour différents points. Premièrement, ce sont les principales concurrentes des premières 3dfx, avec des choix intéressants sur le côté technique et des possibilités inégalées, comme la possibilité de jouer en 1 024 x 768 en 32 bits, quand les Voodoo Graphics se limitaient au 640 x 480 en 16 bits dans la configuration classique. Ensuite, il y a une aura liée à Sega, avec Dreamcast : la console utilisaient une carte PowerVR de seconde génération. Enfin, il y a un rapport avec Apple : les GPU Apple (et avant ceux des iPhone, sous licence) se basent sur la même technologie.

Ma PCX1

Un rendu bizarre

Je vais tenter de résumer de façon claire, mais vous trouverez une version longue et détaillée là. Dans une carte 3D classique de l’époque, le fonctionnement est basique : le GPU – qui ne porte pas encore ce nom – calcule les triangles et applique les textures directement. C’est efficace, simple, mais ça demande beaucoup de bande passante. L’intérêt, c’est qu’une puce avec une bonne puissance de calcul brute peut obtenir de bonnes performances. Le défaut, c’est qu’on perd une partie des données. Si un triangle texturé est derrière un autre qui est calculé plus tard dans la scène, il a été rendu pour rien. On a donc une perte de puissance de calcul et de bande passante.

Avec le rendu différé des cartes PowerVR, c’est plus compliqué mais plus économe. L’écran est divisé en tile (on parle parfois de tile rendering) de petite taille (32 x 16 dans les cartes PCX1/PCX2) et la carte calcule les triangles pour ce qui se trouve dans cette portion de l’écran, sans ajouter les textures. Ensuite, les textures sont appliquées uniquement sur les triangles visibles, ce qui permet de réduire la bande passante et maximiser la puissance de la carte. Sur le papier, c’est une excellente idée et c’est parfait pour les puces mobiles avec une bande passante faible.

Pas de sortie vidéo

En pratique, les moteurs 3D de l’époque attendent un rendu immédiat et les performances vont dépendre en partie de la géométrie. Si elle est complexe, on arrive vite aux limites de la partie qui calcule ce qui est visible. Et avec le temps, elle est devenue complexe : quand nVidia a introduit le T&L avec la première GeForce, on a commencé à voir les limites des cartes.

Des évolutions discrètes

La première génération contient trois cartes : une version très rare proposée dans des PC Compaq, la PCX1 (Midas 4) et la PCX2 (Midas 5). Ici, j’ai testé la PCX1, la PCX2 suivra. La seconde génération est très rare, avec la carte Neon 250, sortie uniquement au Japon. C’est la génération intégrée dans Dreamcast. La troisième, vous la connaissez peut-être : ce sont les cartes Kyro. A l’époque, elles concurrençaient les GeForce 2 GTS avec un prix au niveau des GeForce 2 MX, mais nVidia n’aimait pas ça. Les générations suivantes se retrouvent dans les SoC des PDA de l’époque et dans les premiers iPhone. Au fil du temps, Apple a intégré les puces d’Imagination (la société à l’origine des PowerVR) avant de visiblement licencier les technologies. Les GPU des Apple M2 et autres A15 dérivent donc (de façon lointaine) des cartes PowerVR de l’époque.

Des bugs visuels

Une carte PCX1, ça donne quoi ?

La carte PCX1 d’origine NEC que je possède a un petit dissipateur et c’est une carte purement accélératrice. Elle n’a pas de sortie vidéo et ne se relie pas en analogique à la carte principale comme les 3dfx, ce qui a des avantages. On peut en effet utiliser une sortie numérique, on ne perd pas en qualité sur le bureau et la carte est moins onéreuse à produire. Le défaut, c’est que comme les données passent par le bus PCI, on a quelques limites techniques en fonction de la carte principale.

Premier point, j’utilise habituellement une carte S3 Savage 4 dans mon PC retro, mais elle ne fonctionne pas avec les PowerVR. Quand la PCX1 prend la main, l’écran est brouillé, même sous DOS. Je suppose que ça vient de la façon dont les PowerVR gèrent l’affichage sans câble dédié. J’ai ensuite testé une ATi Radeon avec le même problème, puis une nVidia GeForce 2 MX. Avec cette dernière, j’avais une image mais pas la possibilité de passer en 1 024 x 768 avec Tomb Raider, avec une erreur liés aux extensions VESA. Finalement, j’ai installé une ATi Rage Pro en AGP qui fonctionne dans tous les cas.

Un petit problème de synchronisation

Deuxième point, la plateforme. Il faut idéalement un CPU costaud au niveau de la FPU – à l’époque, un Pentium II ou III -, un chipset Intel pour un bus PCI rapide et une carte graphique correcte en face. Ca marche sur les K6 et autres 6×86, mais c’est moins rapide que sur les puces Intel. De même, une carte principale en AGP est un plus, et il vaut mieux éviter de saturer le bus PCI avec des cartes d’extension (réseau, PATA, etc.). Enfin, la carte vidéo doit avoir 4 Mo de mémoire, ça évite les soucis sur les « hautes » définitions, comme le 1 024 x 768.

Troisième point, important, la carte prend la main sur le rendu dans tous les cas. Avec une 3dfx, on peut généralement choisir la carte à utiliser. Avec une PowerVR ce n’est visiblement pas le cas. La carte prend la main sur le rendu dans tous les cas, et rend invisible la carte principale.

La PCX1

Je n’ai pas testé tous les jeux compatibles, même s’il n’y en a pas tant que ça dans l’absolu. Je l’ai dit plus haut, il y a pas mal de soucis de performances, de textures, etc. Globalement, les jeux qui fonctionnent vraiment bien sont ceux qui emploient l’API maison (PowerSGL). On trouve une liste là, mais c’est finalement assez court. En plus des jeux purement PowerSGL, il existe aussi des jeux qui passent par Direct3D mais avec des réglages précis pour les PowerVR. C’est le cas d’un des jeux que j’aimais vraiment à l’époque, Moto Racer.

Moto Racer voit la carte


Pas de filtrage

La puce PCX1 est singulièrement limitée sur un point : elle ne propose pas de filtrage bilinéaire. Sur les jeux qui restent des dans définitions faibles, on a donc des pixels très visibles, ce qu’on peut aimer en 2023. Mais à l’époque, le gain visuel était net avec les 3dfx : les gens attendaient des textures floues filtrées. Pour le reste, la puce PCX1 tourne à 60 MHz, sans grosses possibilités d’overclocking : c’est possible uniquement en changeant un quartz sur la carte, et la puce chauffe pas mal au départ.

Des soucis de transparence

En pratique, ce n’est pas une carte très intéressante. C’est rapide avec Moto Racer, mais Final Reality, par exemple, est lent sur certains tests avec des bugs visuels. Et c’est encore pire avec 3DMark 99 Max, pas mal de choses sont absentes. Par contre, c’est plutôt sympa avec Tomb Raider : on peut jouer en 1 024 x 768 à (presque) 30 fps avec une image très fine ou en 64 x 480 à (presque) 60 fps, ce que ne permettaient pas les 3dfx, par exemple.

Il manque des trucs

Tomb Raider en 1 024 x 768. Sans filtrage mais à 30 fps.

La vidéo est un peu bizarre parce que la carte d’acquisition n’aime pas trop les changements de définition. On voit (dans l’ordre) Moto Racer en 640 x 480, Final Reality, les benchmarks « jeux » de 3DMark 99 Max et Tomb Raider en 640 x 480, en 800 x 600 et en 1 024 x 768.