Compositeur de matériel HAL

La HAL Hardware Composer (HWC) détermine le moyen le plus efficace de composer des tampons avec le matériel disponible. En tant que HAL, sa mise en œuvre est spécifique au périphérique et généralement effectuée par l'OEM du matériel d'affichage.

La valeur de cette approche est facile de reconnaître si l' on considère superposition des plans, qui tampons multiples composites dans le matériel d'affichage plutôt que le GPU. Par exemple, considérons un téléphone Android typique en orientation portrait, avec la barre d'état en haut, la barre de navigation en bas et le contenu de l'application partout ailleurs. Le contenu de chaque couche se trouve dans des tampons séparés. Vous pouvez gérer la composition à l'aide de l'une des méthodes suivantes :

  • Rendre le contenu de l'application dans un tampon de travail, puis afficher la barre d'état dessus, la barre de navigation au-dessus de cela, et enfin passer le tampon de travail au matériel d'affichage.
  • Passer les trois tampons au matériel d'affichage et lui demander de lire les données de différents tampons pour différentes parties de l'écran.

Cette dernière approche peut être nettement plus efficace.

Les capacités du processeur d'affichage varient considérablement. Le nombre de superpositions, que les couches puissent être tournées ou mélangées, et les restrictions de positionnement et de chevauchement peuvent être difficiles à exprimer via une API. Pour tenir compte de ces options, le HWC effectue les calculs suivants :

  1. SurfaceFlinger fournit à HWC une liste complète des couches et demande : « Comment voulez-vous gérer cela ? »
  2. HWC répond en marquant chaque couche en tant que composition d'appareil ou de client.
  3. SurfaceFlinger s'occupe de n'importe quel client, transmet le tampon de sortie à HWC et laisse HWC s'occuper du reste.

Étant donné que les fournisseurs de matériel peuvent personnaliser le code de prise de décision, il est possible d'obtenir les meilleures performances de chaque appareil.

Les plans de superposition peuvent être moins efficaces que la composition GL lorsque rien à l'écran ne change. Cela est particulièrement vrai lorsque le contenu de la superposition a des pixels transparents et que les calques qui se chevauchent sont mélangés. Dans de tels cas, le HWC peut demander la composition GLES pour certaines ou toutes les couches et conserver le tampon composite. Si SurfaceFlinger demande de composer le même ensemble de tampons, le HWC peut afficher le tampon de travail précédemment composé. Cela peut améliorer la durée de vie de la batterie d'un appareil inactif.

Les appareils Android prennent généralement en charge quatre plans de superposition. Tenter de composer plus de couches que de superpositions amène le système à utiliser la composition GLES pour certaines d'entre elles, ce qui signifie que le nombre de couches utilisées par une application peut avoir un impact mesurable sur la consommation d'énergie et les performances.