Louvre est une bibliothèque C++ hautes performances conçue pour créer des compositeurs Wayland en mettant fortement l'accent sur la facilité de développement.
Créer un compositeur Wayland peut être une entreprise ardue, qui nécessite souvent des mois, voire des années, de dévouement. Cette tâche difficile implique la maîtrise des API de saisie et graphiques Linux, la gestion des tampons graphiques et la mise en œuvre méticuleuse de nombreux protocoles Wayland et de leurs interfaces respectives.
Heureusement, Louvre simplifie ce processus complexe en gérant toutes les tâches complexes de bas niveau en votre nom. Il fournit même un moyen par défaut de gérer les protocoles, vous permettant de disposer d'un compositeur basique mais fonctionnel dès le premier jour et d'explorer et de personnaliser progressivement ses fonctionnalités pour répondre précisément à vos besoins.
Dans Louvre, vous avez la possibilité d'utiliser vos propres shaders/programmes OpenGL ES 2.0, d'utiliser la classe LPainter pour le rendu 2D fondamental, ou d'exploiter les systèmes LScene et LView, qui gèrent les dommages causés au tampon et peuvent également gérer les événements d'entrée pour vous. De plus, il est possible de combiner ces trois approches selon les besoins.
Louvre offre d’excellentes performances. Un benchmark consistant à rendre de nombreuses wl_subsurfaces mobiles (opaques et translucides), dans lequel l'exemple de compositeur louvre-weston-clone a été testé, montre que Louvre peut maintenir un taux de FPS élevé même dans des scénarios complexes. De plus, il utilise moins de ressources CPU et GPU que les compositeurs populaires comme Weston et Sway.
Machine | MacBook Pro A1398 (Retina, 15 pouces, mi-2015) |
Processeur | Intel Core i7-4770HQ à 2,20 GHz (jusqu'à 3,4 GHz) avec 6 Mo de cache L3 partagé |
Mémoire | 16 Go de DDR3L à 1 600 MHz |
GPU | Carte graphique Intel Iris Pro - i915 (Intel Graphics) version 1.6.0 (20201103) |
Afficher | Écran Retina de 15 pouces avec mode unique 2880 x 1800 à 60 Hz |
Système d'exploitation | Linux Mint 21 - Linux 5.15.0-86-générique |
Si vous êtes intéressé par les détails du fonctionnement du benchmark et souhaitez l'essayer vous-même, veuillez vous référer à ce lien.
Voici un graphique illustrant les résultats du benchmark. Il affiche le FPS moyen de chaque compositeur rendant 1 à 50 surfaces mobiles en utilisant une double mise en mémoire tampon sur un écran HiDPI.
Les résultats du benchmark n'ont pas été mis à jour depuis 2023 et peuvent ne pas refléter avec précision les performances actuelles des compositeurs testés.
La plupart des compositeurs Wayland utilisent un seul thread, ce qui ralentit considérablement leurs performances lors du rendu de scénarios complexes. La raison en est due à la synchronisation verticale , où le compositeur doit attendre quelques millisecondes avant de pouvoir échanger le framebuffer qu'il vient de restituer avec celui affiché à l'écran. Ceci est fait afin de synchroniser l'échange avec le taux de rafraîchissement de l'affichage ( vblank ) et d'éviter l' effet de déchirement . Lorsqu'ils travaillent avec un seul thread, les compositeurs ont des « temps morts » qui les empêchent de traiter et de restituer le contenu à temps pour l'image suivante. C'est pourquoi ils finissent par sauter un vblank , ce qui entraîne une baisse de moitié (ou plus) de leur taux de rafraîchissement. Pour éviter ce problème, Louvre fonctionne avec plusieurs threads. Chaque sortie (affichage) restitue son contenu sur son propre thread, permettant au compositeur de continuer à traiter les requêtes et de restituer vers d'autres sorties en attendant un vblank. Cela évite aux compositeurs Louvre d'avoir des « temps morts » et leur permet donc de maintenir un taux de rafraîchissement élevé.
Le graphique de gauche affiche les résultats bruts de consommation CPU, ce qui pourrait suggérer que Louvre utilise plus de ressources CPU. Cependant, cette comparaison n'est pas tout à fait juste, car le taux de rafraîchissement du Louvre est presque le double de celui des autres (60 FPS contre 30 FPS en moyenne). Lorsque nous divisons la consommation du CPU par les images par seconde (FPS), comme le montre le graphique de droite, il devient évident que Louvre, en fait, utilise moins de ressources CPU par rapport aux FPS par rapport aux autres compositeurs.
De la même manière qu'avec la consommation CPU, on peut observer que Louvre utilise moins de ressources GPU par rapport aux FPS que les autres compositeurs.