Cette dépêche est tirée du journal de bjacob.
Je m'essaye à l'exercice de la publication LinuxFr pour apporter quelques explications sur le statut de l'accélération graphique dans Firefox 4 sous Linux (plus généralement X11). Je suis le type qui a fait la modification restreignant OpenGL au seul pilote NVIDIA propriétaire dans Firefox 4 sous Linux, donc si vous n'êtes pas contents, c'est moi qu'il faut gronder.
Si vous êtes pressés, je vous conseille de lire au moins
ce mail que j'ai envoyé à la liste mesa-dev.
Le fait est qu'on a plein de plantages dans tous les pilotes OpenGL, sauf avec le driver proprio NVIDIA. Donc j'ai restreint OpenGL à ce seul pilote, et j'ai écrit (lien ci-dessus) a mesa-dev pour leur expliquer la situation et leur montrer comment reproduire les problèmes, ce qu'ils ont pu faire très vite, et ils ont fait des rapports de bugs, cf. ce fil de discussion.
Donc les choses avancent : on a une batterie de tests officielle pour WebGL qui permet de valider tranquillement les pilotes et, bien entendu, dès qu'un pilote sera validé, on se dépêchera de l'activer pour Firefox 4.
Ça ne sera pas forcément avant la sortie de Firefox 4 : il ne reste pas beaucoup de temps. Mais ça pourra être dans une sortie mineure, et de toute façon on va se mettre à sortir 3 versions "majeures" par an.
Quelques autres précisions maintenant :
- Vous pouvez débloquer votre pilote en définissant la variable d'environnement MOZ_GLX_IGNORE_BLACKLIST avant de lancer Firefox.
Voir le mail à mesa-dev ci-dessus si vous voulez exécuter les tests WebGL.
- L'accélération due à XRender, via Cairo, est toujours présente. Seul OpenGL est bloqué.
On utilise potentiellement OpenGL pour 2 choses : pour WebGL et pour les 'Layers' (phase de composition des couches d'une page web, ce qui inclut le redimensionnement et les conversions d'espaces de couleurs pour les images et la vidéo).
- WebGL est activé par défaut, donc dès que votre pilote est débloqué (voir ci-dessus), vous pouvez faire tourner du WebGL. Votre pilote OpenGL sera utilisé pour exécuter WebGL, mais pour que le résultat soit utilisé directement pour l'affichage sans repasser par la mémoire centrale (ce qui permet d'accélérer encore plus), il vous faut les Layers, voir ci-dessous :
- les Layers, par contre, ne sont pas encore activés par défaut sous Linux, indépendamment des pilotes, parce qu'il y a un bout de code qui reste à écrire pour ne pas perdre le bénéfice de XRender. (En gros, permettre aux pixmaps de rester sur le serveur X sans faire d'aller-retours inutiles). Tant que ça n'est pas fait, activer les layers cause une perte de performance sur certains benchmarks à base de canvas 2D. Par contre, ça accélère déjà très bien la vidéo et WebGL, par exemple. Si vous voulez activer les Layers, allez sur about:config et activez layers.acceleration.force-enabled.
Dès que les bugs graves qui restent à régler dans Firefox 4.0 seront corrigés, je voudrais m'attaquer à activer les layers par défaut sous Linux. Je pense que ça sera dans la version +1 d'ici quelques mois ; puis, à terme, on a aussi des plans pour se débarrasser complètement de XRender et simplement tout faire par OpenGL, ce qui règlerait pas mal de problèmes : c'est ce qui se passe déjà sous Windows, ou l'équivalent de XRender, Direct2D, est une simple bibliothèque logicielle appelant Direct3D 10. On devrait pouvoir faire aussi bien avec OpenGL à la place de Direct3D 10.