A partire dal 27 marzo 2025, ti consigliamo di utilizzare android-latest-release
anziché aosp-main
per compilare e contribuire ad AOSP. Per ulteriori informazioni, vedi Modifiche ad AOSP.
HAL Hardware Composer
Mantieni tutto organizzato con le raccolte
Salva e classifica i contenuti in base alle tue preferenze.
L'HAL Hardware Composer (HWC) determina il modo più efficiente per comporre i buffer con l'hardware disponibile. In quanto HAL, la sua implementazione è specifica del dispositivo e in genere viene eseguita dall'OEM dell'hardware del display.
Il valore di questo approccio è facile da riconoscere se si considerano i piani di sovrapposizione, che compongono più buffer nell'hardware di visualizzazione anziché nella GPU. Ad esempio, prendi in considerazione un tipico smartphone Android con orientamento verticale, con la barra di stato in alto, la barra di navigazione in basso e i contenuti dell'app ovunque. I contenuti di ciascun livello
si trovano in buffer separati. Puoi gestire la composizione utilizzando uno dei seguenti metodi:
- Eseguire il rendering dei contenuti dell'app in un buffer scratch, quindi eseguire il rendering della barra di stato sopra, della barra di navigazione sopra e infine passare il buffer scratch all'hardware del display.
- Passare tutti e tre i buffer all'hardware del display e chiedergli di leggere i dati da buffer diversi per parti diverse dello schermo.
Quest'ultimo approccio può essere notevolmente più efficiente.
Le funzionalità dei processori dei display variano notevolmente. Il numero di overlay, la possibilità di ruotare o fondere i livelli e le limitazioni relative al posizionamento e alla sovrapposizione possono essere difficili da esprimere tramite un'API. Per supportare queste opzioni, il Centro per la salute e il benessere degli animali esegue i seguenti calcoli:
- SurfaceFlinger fornisce a HWC un elenco completo dei livelli e chiede: "Come vuoi gestire questa situazione?"
- HWC risponde contrassegnando ogni livello come composizione del dispositivo o del client.
- SurfaceFlinger si occupa di qualsiasi client, passando il buffer di output
a HWC e lasciando che sia HWC a gestire il resto.
Poiché i fornitori di hardware possono personalizzare il codice decisionale, è possibile ottenere il rendimento migliore da ogni dispositivo.
I piani di overlay potrebbero essere meno efficienti della composizione GL quando non cambia nulla sullo schermo. Questo è particolarmente vero quando i contenuti in overlay hanno pixel trasparenti e i livelli sovrapposti vengono fusi. In questi casi,
l'HWC può richiedere la composizione GLES per alcuni o tutti i livelli e conservare
il buffer composito. Se SurfaceFlinger chiede di comporre lo stesso insieme di buffer, l'HWC può mostrare il buffer scratch composito in precedenza. In questo modo puoi migliorare la durata della batteria di un dispositivo inattivo.
In genere, i dispositivi Android supportano quattro piani di overlay.
Il tentativo di comporre più livelli rispetto agli overlay fa sì che il sistema utilizzi la composizione GLES per alcuni di essi, il che significa che il numero di livelli utilizzati da un'app può avere un impatto misurabile sul consumo energetico e sulle prestazioni.
I campioni di contenuti e codice in questa pagina sono soggetti alle licenze descritte nella Licenza per i contenuti. Java e OpenJDK sono marchi o marchi registrati di Oracle e/o delle sue società consociate.
Ultimo aggiornamento 2025-07-27 UTC.
[[["Facile da capire","easyToUnderstand","thumb-up"],["Il problema è stato risolto","solvedMyProblem","thumb-up"],["Altra","otherUp","thumb-up"]],[["Mancano le informazioni di cui ho bisogno","missingTheInformationINeed","thumb-down"],["Troppo complicato/troppi passaggi","tooComplicatedTooManySteps","thumb-down"],["Obsoleti","outOfDate","thumb-down"],["Problema di traduzione","translationIssue","thumb-down"],["Problema relativo a esempi/codice","samplesCodeIssue","thumb-down"],["Altra","otherDown","thumb-down"]],["Ultimo aggiornamento 2025-07-27 UTC."],[],[],null,["# Hardware Composer HAL\n\nThe Hardware Composer (HWC) HAL determines the most efficient\nway to composite buffers with the available hardware. As a HAL, its\nimplementation is device-specific and usually done by the display hardware OEM.\n\nThe value of this approach is easy to recognize when you consider *overlay\nplanes*, which composite multiple buffers in\nthe display hardware rather than the GPU. For example, consider a typical\nAndroid phone in portrait orientation, with the status bar on top, navigation\nbar at the bottom, and app content everywhere else. The contents for each layer\nare in separate buffers. You can handle composition using either of the\nfollowing methods:\n\n- Rendering the app content into a scratch buffer, then rendering the status bar over it, the navigation bar on top of that, and finally passing the scratch buffer to the display hardware.\n- Passing all three buffers to the display hardware and instructing it to read data from different buffers for different parts of the screen.\n\nThe latter approach can be significantly more efficient.\n\nDisplay processor capabilities vary significantly. The number of overlays,\nwhether layers can be rotated or blended, and restrictions on positioning and\noverlap can be difficult to express through an API. To accommodate these options, the HWC performs\nfollowing calculations:\n\n1. SurfaceFlinger provides HWC with a full list of layers and asks, \"How do you want to handle this?\"\n2. HWC responds by marking each layer as device or client composition.\n3. SurfaceFlinger takes care of any client, passing the output buffer to HWC, and lets HWC handle the rest.\n\nBecause hardware vendors can custom tailor decision-making code, it's possible\nto get the best performance out of every device.\n\nOverlay planes may be less efficient than GL composition when nothing on the\nscreen is changing. This is particularly true when overlay contents have\ntransparent pixels and overlapping layers are blended. In such cases,\nthe HWC can request GLES composition for some or all layers and retain\nthe composited buffer. If SurfaceFlinger asks to composite the same\nset of buffers, the HWC can show the previously composited scratch\nbuffer. This can improve the battery life of an idle device.\n\nAndroid devices typically support four overlay planes.\nAttempting to composite more layers than overlays causes the system to use GLES\ncomposition for some of them, meaning the number of layers used by an app can\nhave a measurable impact on power consumption and performance."]]