Firefox apporte le feu: Déplacement de GLX à EGL
Vous pouvez (ou non) avoir entendu dire que Firefox passe de GLX à EGL pour la pile graphique Linux. C’est un indicateur de quelle manière les marées se déplacent dans le monde du logiciel. Regardons ce que cela signifie, pourquoi cela compte et pourquoi c’est cool.
Une pile graphique est un système complexe avec de nombreuses couches. Mais sur Linux, il doit y avoir une interface entre quelque chose comme OpenGL et un système de fenêtres comme x11. X11 propose un cadre fondamental pour dessiner et déplacer des fenêtres autour d’un écran, capturer une entrée utilisateur et identifier la mise au point, mais peu d’autre. Un serveur X11 n’est qu’un programme qui gère toutes les fenêtres (clients). Chaque fenêtre de X11 est considérée comme un client. Un client se connecte au serveur sur une prise de processus UNIX ou sur Internet.
OpenGL se concentre sur ce qu’il faut dessiner dans les limites de l’espace d’écran donné par le système de fenêtre. GLX (qui signifie l’extension OpenGL au système X Window) a été développé à l’origine par des graphiques de silicium. Il a changé au fil des ans, acquérant un support d’accélération matérielle et DRI (interface de rendu direct). DRI est un moyen pour OpenGL de parler directement au matériel graphique si le serveur et le client sont sur le même ordinateur. À son noyau, GLX offre aux fonctions OpenGL à X11, ajoute au protocole X en permettant d’envoyer des commandes de rendu 3D et une extension qui lit les commandes de rendu et les transmet à OpenGL.
EGL (bibliothèque graphique système intégrée) est un successeur de GLX, mais cela a commencé avec un environnement différent à l’esprit. Initialement, la mise au point était des systèmes intégrés et des dispositifs tels que Android, PI de framboise et Blackberry fortement appuyés sur EGL pour leurs besoins graphiques. Enfin, toutefois, Wayland a choisi d’utiliser EGL comme GLX apporté dans X11 dépendances et EGL fournit un accès plus étroitement au matériel.
Lorsque Martin Stránský a été initialement ajouté à Wayland Support à Firefox, il a utilisé EGL au lieu de GLX. De plus, la mise en œuvre de Wayland avait le partage de tampon GPU zéro-copie via DMABuf (sous-système de noyau Linux pour le partage de tampons). Malheureusement, Firefox ne pouvait pas allumer cette performance d’amélioration de WebGL pour X11 (il existait mais n’a jamais été assez stable). Néanmoins, les caractéristiques ont continué à faire de la cheminée (et par conséquent EGL) un citoyen beaucoup plus de première classe. Maintenant, EGL sera activé par défaut dans Firefox 94+ avec des chauffeurs MESA 21+ (MESA est une implémentation de OpenGL, Vulkan et d’autres spécifications qui traduisent les commandes en instructions que le GPU peut comprendre).
Pourquoi cette relocalisation compte
Comme indiqué précédemment, EGL a deux caractéristiques cruciales: des tampons partagés zéro-copie et un support de dommages partiels. Zero-Copy implique WebGL peut être sandbox et rapide. Les dommages partiels impliquent que toute la fenêtre n’a pas besoin d’être redessinée si seule une petite partie est modifiée, sauvegarde de l’énergie. Ce changement parle également aux marées en cours du monde du logiciel. Lentement mais sûrement, le monde se dirige vers le style de composition EGL / Wayland. Ce changement implique principalement de moins d’abstractions et de couches et d’un accès plus près au matériel. EGL bénéficie simplement d’être plus récent et (espérons-le) moins de buggy avec des cas de bord inhabituel. De plus, le passage de Wayland de manière native de Firefox plutôt que sur Xwayland est un changement important.
Anecdotage, des personnes qui l’ont essayé dire que les gains de performance ont été stellaires, en particulier lors de l’affichage de vidéos. La mémoire tampon partagée aide, pour de nombreux GPU, la vidéo est décodée (convertir le courant comprimé comme H.264 en un bitmap brut), puis composé. Avoir un tampon partagé et un accès plus étroitement au matériel permet au GPU de transférer ce cadre décodé directement dans le tampon compositeur, plutôt que de faire un voyage à la RAM CPU et de revenir au GPU pour les machines NUMA.
Pour de nombreux États-Unis, Firefox et d’autres programmes extrêmement complexes sont des boîtes mystérieuses de la magie. Un coup d’oeil à l’intérieur pour voir les personnes dévouées qui les font et comment ils prennent des décisions et la pesée des compromis est fascinante.
Curieux de plus en plus d’internes Linux? Pourquoi ne pas plonger dans un voyage à la main ()?