|
Attention, ce qui suit est à déconseiller aux ames sensibles, je vous aurais prévenu :-)
A quoi sert GLX ?
Le but de GLX est d'encapsuler les commandes OpenGL dans le protocole X11. L'applicatif envoie une commande encapsulée au serveur X11, celui-ci la reçoit, la décode, et envoie l'ordre à la couche OpenGL pour affichage. L'avantage de cette méthode est qu'il est possible d'afficher une appli 3D accélérée sur un affichage distant en utilisant l'accélération 3D distante. Seules les commandes 3D passent par le réseau. Le défaut est qu'en affichage local, cet encodage/décodage des appels OpenGL dans X11 nuit énormément aux performances.
Pour résoudre ce problème, tous les drivers ici présents peuvent fonctionner de 2 façons :
- Indirect Rendering : les commandes OpenGL passent à la moulinette de l'encodage/décodage
- Direct Rendering : la couche X11 est court-circuitée et les commandes passent directement
de l'application à la couche OpenGL. Les performances sont maximales mais ça n'est applicable qu'en local, évidement.
Le driver NVidia et la couche DRI pour XFree 4 fonctionnent parfaitement en direct rendering, aucun problème. Le support de l'indirect rendering est par contre assez balutiant pour l'instant donc l'affichage distant d'applis 3D n'est pas encore la tasse de thé de ces drivers.
Le cas très particulier d'Utah-GLX
Les cas d'Utah-GLX est très différent. Comme il est basé sur XFree 3 qui ne prévoyait pas l'intégration de
l'accès direct à la carte 3D, les développeurs Utah-GLX ont rusé en permettant directement l'accès au matériel
aux librairies 3D en bloquant X11 (John Carmack explique ça mieux que moi dans le fichier X_dma_hack.txt que
vous trouverez dans le répertoire docs de a distribution Utah-GLX).
Qui dit accès au matériel sous Unix dit droits root et trou de
sécurité majeur. Pour bénéficier du direct rendering avec Utah-GLX et donc de l'accélération maximale, il
faut se connecter en tant que root ! De plus, une seule application peut bénéficier du direct rendering
à la fois. La seconde application 3D lancée repassera en indirect rendering. Ce sont les inconvénients majeurs
d'Utah-GLX mais l'intégration correcte dans XFree 3 était à ce prix. Dans XFree 4, la DRI (qui veut dire Direct
Rendering Infrastructure, je le rapelle) a été développée spécialement pour résoudre toutes ces limitations.
NVidia sécurisé ? Peut-être... :-)
Les drivers NVidia n'utilisent pas DRI car ils permettent l'accès direct au hardware
pour l'application. Ca n'est (à priori puique qu'on ne peut pas lire leur sources !) pas un problème de sécurité
puisque les cartes NVidia ont l'intéressante faculté de vérifier de façon matérielle tout ce qu'on leur envoie.
Une application mal intentionnée ne pourrait donc pas être écrite de façon à profiter de failles pour explorer
le reste de la mémoire de la machine et ainsi la pirater (ou surtout la crasher).
Pour information, la plupart des autres cartes 3D (dont les Matrox) ne disposent pas de cette fonction
et nécessitent donc une surcouche qui s'occupe de tout vérifier (DRI dans XFree 4) ou d'être root
pour aller vite (Utah-GLX).
Voilà, c'est tout pour cette plongée au coeur de la très complexe architecture des drivers de cartes 3D
dans un OS qui tient compte de la sécurité ! Si vous voulez en apprendre plus, je ne peux que vous conseiller
la lecture des documentations d'Utah-GLX et de la DRI.
Page suivante : Les cartes 3D testées
|