Les cartes 3D sous Linux : Introduction

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 ?


Table des matières :

Projet Mesa 3D Projet Utah-GLX DRI pour XFree86 Site officiel OpenGL Drivers Linux Nvidia