Par Serge Rossi
Le monde de la 3D sous Linux est en pleine
révolution : les principales cartes 3D du marché sont maintenant supportées.
On peut penser que toutes les futures versions des distributions majeures
pour Linux intègreront ce qu'il faut pour mettre en place l'accélération
3D dès l'installation. Avec l'arrivée de nombreux jeux 3D
(Quake III,
Unreal Tournament,
Soldier Of Fortune,
Heavy Gear II,
Descent 3,
Terminus,
Tribes 2 et dans le futur
SiN,
Shogo,
Deus Ex ainsi que le très attendu
Neverwinter Nights),
Linux va finalement devenir une plateforme de jeux alternative intéressante.
Il y a déjà eu quelques articles très bien
faits sur le sujet (par exemple ceux de
Linux Games,
d'AnandTech ou de
Tom's Hardware)
mais j'aurais aussi aimé y trouver les performances de machines plus ou moins
puissantes, y voir présenté toutes les solutions logicielles ou
mesurer l'influence d'une machine biprocesseur sur les performances 3D entre autres.
Comme j'ai 2 PC biproceseurs (bi PIII 550 et bi PII 266)
tous 2 équipés de cartes 3D (Matrox G400 Max et NVidia TNT2) et que je viens
de m'acheter une GeForce II MX pour faire évoluer tout ça, c'était le moment ou
jamais de tester toutes les configurations et d'écrire cet article :-)
Petite histoire de la 3D sous Linux
Tout a commencé début 1995 avec la publication
initiale de Mesa, une librairie 3D
offrant la même API qu'OpenGL et permettant de recompiler sous Linux (et autres
machines Unix), les applications 3D utilisant ces appels. Pas question d'accélération
matérielle à l'époque, tout est calculé par le processeur.
La première carte accélératrice 3D abordable pour PC,
la 3Dfx Voodoo 1 est sortie en
1996 et la librairie Glide pour Linux mi 1997. Il est enfin devenu possible de faire
de la 3D accélérée sous Linux en utilisant les API Glide directement ou en
utilisant les API OpenGL via Mesa utilisant lui même les API Glide pour accéder au
matériel. La 3D rapide n'était possible qu'en plein écran (la Voodoo 1 étant une
carte vidéo à part entière shuntant la carte 3D normale lors d'un affichage 3D).
L'affichage dans une fenêtre était possible via une ruse : recopier la mémoire
vidéo de la carte 3Dfx dans une fenetre sur l'écran X11 ! C'était beaucoup
plus lent et dangereux car lancer 2 applis 3D entrainait un crash !
C'est à la même époque qu'a démarré le projet XFree86/Mesa GLX
pour utiliser MesaGL sous X11 via le protocole GLX d'une façon bien plus standard, similaire
à ce qui se fait sur station Silicon Graphics par exemple. Mais bien sur ici, pas
d'accélération matérielle, l'architecture des cartes 3Dfx Voodoo 1 ne se prétant pas à
cette utilisation.
La situation n'était pas idéale : librairie
propriétaire, non open source, 3D rapide seulement en plein écran, utilisation
dangereuse en mode fenêtré... Mais bon,
c'était la seule possibilité donc tout le monde remerciait 3Dfx pour son support de Linux. Les
choses n'ont pas beaucoup bougé en 1998 à part le support des toutes nouvelles cartes Voodoo2
(ma première carte 3D sous Linux d'ailleurs :-).
Fin 1998, les choses ont recommencé à bouger avec la sortie d'autres
cartes 3D venant concurrencer sérieusement 3Dfx : NVidia TNT, Matrox G200, ATI Rage 64 et qui
surtout étaient de VRAIES cartes 2D + 3D. Matrox ayant publié les spécification de sa carte
G200, le projet Mesa GLX, rapidement renommé Utah-GLX, a pu redémarrer pour intégrer le support
de l'accélération 3D dans X11 sous Linux.
Par la suite, les spécifications techniques ont été obtenues pour
d'autres cartes. Nvidia a procédé différement en fournissant un code précompilé illisible permetant
au développeurs du projet Utah-GLX d'intégrer un support préliminaire des cartes TNT et TNT2 mais
ce code n'a jamais subi d'amélioration.
Parallèlement à cela, la future version du serveur X11 XFree86 4.0
était en développement. La publication en open source du code de GLX par
Silicon Graphics a permis l'intégration du tout dans XFree86 4.0 au sein d'une architecture
étudiée pour obtenir la meilleure intégration possible : la DRI (Direct Rendering Infrastructure).
Pour terminer, NVidia a publié début 2000 des drivers Linux hautement
optimisés pour toutes ses cartes graphiques mais fournis seulement sous forme binaire. Bien que nécessitant
XFree86 4, il n'utilisent pas la DRI mais une architecture propriétaire ! Ca nous fait donc 4 architectures
différentes pour accéder aux cartes 3D ! Et encore, je passe sous silence les serveurs X11 commerciaux
disponibles pour Linux... Heureusement que les API OpenGL et GLX fédèrent tout ça !
Page suivante : Comment fonctionne une carte accélératrice 3D ?
|