Ce document décrit l'optimisation des performances pour optimiser les performances matérielles.
Propriétés OpenGLRenderer (libhwui)
Ce document décrit les propriétés permettant de contrôler le pipeline de rendu 2D à accélération matérielle d'Android. Définissez ces propriétés dans device.mk comme PRODUCT_PROPERTY_OVERRIDES.
Propriétés pour toutes les versions d'Android
| Propriété | Saisie | Valeur par défaut | Description | 
|---|---|---|---|
| ro.zygote.disable_gl_preload | boolean | false | Active ou désactive le préchargement des pilotes EGL/GL dans Zygote au démarrage.
  Lorsque cette propriété est définie sur false, Zygote précharge les pilotes GL en appelanteglGetDisplay(EGL_DEFAULT_DISPLAY). Cela charge le code de la bibliothèque dynamique dans Zygote pour le partager avec tous les autres processus. Si un pilote ne prend pas en charge le partage, définissez cette propriété surtrue. | 
Propriétés pour Android 8.0 et versions antérieures
| Propriété | Saisie | Valeur par défaut | Description | 
|---|---|---|---|
| ro.hwui.disable_scissor_opt | boolean | false | Active ou désactive l'optimisation du ciseau. Les valeurs acceptées sont  Lorsqu'il est désactivé, OpenGLRenderer maintient le test de ciseaux GL activé et modifie le rectangle de ciseaux selon les besoins. Certains GPU (par exemple, le SGX 540) sont plus performants lorsque le rectangle de ciseaux est modifié plus souvent que lorsque le test de ciseaux est activé ou désactivé fréquemment. | 
| ro.hwui.texture_cache_size | float | 24 | Définit la taille, en mégaoctets, du cache de textures par processus. Nous vous recommandons d'utiliser un cache suffisamment grand pour contenir plusieurs écrans de textures 32 bits. Par exemple, sur un écran de 1 280 x 800, un tampon plein écran utilise environ 4 Mo. Le cache doit donc être d'au moins 20 Mo. | 
| ro.hwui.layer_cache_size | float | 16 | Définit la taille, en mégaoctets, du cache des calques par processus. Nous vous recommandons d'utiliser un cache suffisamment grand pour contenir quatre fois l'écran en 32 bits. Par exemple, sur un écran de 1 280 x 800, un tampon plein écran utilise environ 4 Mo. Le cache doit donc être d'au moins 16 Mo. | 
| ro.hwui.gradient_cache_size | float | 0.5 | Définit la taille, en mégaoctets, du cache de gradients par processus. Un seul gradient occupe généralement entre 1 Ko et 4 Ko de mémoire. Nous vous recommandons d'utiliser un cache suffisamment grand pour contenir au moins 12 gradients. | 
| ro.hwui.patch_cache_size | integer | 128 | Définit la taille, en kilo-octets, du cache 9-patch par processus. Ce cache ne contient que des données de vertex. Vous pouvez donc le garder petit. Chaque sommet se compose de quatre valeurs flottantes, soit 16 octets. | 
| ro.hwui.path_cache_size | float | 4 | Définit la taille, en mégaoctets, du cache des chemins par processus. Nous vous recommandons d'utiliser un cache suffisamment grand pour contenir au moins un écran de textures 32 bits. Par exemple, sur un écran de 1 280 x 800, un tampon plein écran utilise environ 4 Mo. Le cache doit donc être d'au moins 4 Mo. | 
| ro.hwui.shape_cache_size | float | 1 | Définit la taille, en mégaoctets, du cache des formes par processus. Cette valeur est utilisée par plusieurs caches, tels que les cercles et les rectangles arrondis. Nous vous recommandons d'utiliser un cache suffisamment grand pour contenir au moins un écran 8 bits. Par exemple, sur un écran de 1 280 x 800, un tampon plein écran utilise environ 1 Mo. Le cache doit donc être d'au moins 1 Mo. | 
| ro.hwui.drop_shadow_cache_size | float | 2 | Définit la taille, en mégaoctets, du cache des ombres portées du texte par processus. Nous vous recommandons d'utiliser un cache suffisamment grand pour contenir deux écrans de textures 8 bits. Par exemple, sur un écran de 1 280 x 800, un tampon plein écran utilise environ 1 Mo. Le cache doit donc être d'au moins 2 Mo. | 
| ro.hwui.r_buffer_cache_size | float | 2 | Définit la taille, en mégaoctets, du cache des tampons de rendu par processus. Nous vous recommandons d'utiliser un cache suffisamment grand pour contenir deux fois l'écran en 8 bits. Par exemple, sur un écran de 1 280 x 800, un tampon plein écran utilise environ 1 Mo. Le cache doit donc être d'au moins 2 Mo. Le cache peut être plus petit si l'appareil est compatible avec les tampons de pochoir 4 bits ou 1 bit. | 
| ro.hwui.texture_cache_flush_rate | float | 0.6 | Définit le pourcentage du cache de texture à conserver après un vidage de la mémoire. Le système déclenche des vidages de mémoire lorsqu'il doit récupérer de la mémoire dans toutes les applications. Dans ce cas, nous vous recommandons de libérer environ 50 % du cache. | 
| ro.hwui.text_small_cache_width | integer | 1024 | Définit la largeur, en pixels, du cache de police par défaut. La limite supérieure dépend de la vitesse à laquelle le GPU peut importer des textures. Nous vous recommandons d'utiliser une résolution d'au moins 1 024 pixels et d'au plus 2 048 pixels. Utilisez également une valeur qui est une puissance de deux. | 
| ro.hwui.text_small_cache_height | integer | 256 | Définit la hauteur, en pixels, du cache de police par défaut. La limite supérieure dépend de la vitesse à laquelle le GPU peut importer des textures. Nous vous recommandons d'utiliser au moins 256 pixels, mais pas plus de 1 024 pixels. | 
| ro.hwui.text_large_cache_width | integer | 2048 | Définit la largeur, en pixels, du cache de grande taille de la police. Ce cache est utilisé pour les glyphes trop volumineux pour tenir dans le cache de police par défaut. La limite supérieure dépend de la vitesse à laquelle le GPU peut importer des textures. Nous vous recommandons d'utiliser une image d'au moins 2 048 pixels, mais d'au plus 4 096 pixels. Utilisez également une valeur qui est une puissance de deux. | 
| ro.hwui.text_large_cache_height | integer | 512 | Définit la hauteur, en pixels, du cache de grande taille de la police. Le cache de police de grande taille est utilisé pour les glyphes trop grands pour tenir dans le cache de police par défaut. La limite supérieure dépend de la vitesse à laquelle le GPU peut importer des textures. Nous vous recommandons d'utiliser une taille d'au moins 512 pixels et d'au plus 2 048 pixels. Utilisez également une valeur qui est une puissance de deux. | 
| hwui.text_gamma_correction | string | lookup | Sélectionne la technique de correction gamma du texte. Quatre choix sont possibles : 
 lookuppar défaut, qui offre un bon compromis en termes de qualité, de vitesse et d'utilisation de la mémoire. | 
| hwui.text_gamma | float | 1.4 | Définit la valeur gamma utilisée pour la correction gamma du texte. Vous pouvez ajuster cette valeur en fonction de l'écran de l'appareil. | 
| hwui.text_gamma.black_threshold | integer | 64 | Définit le seuil de luminance en dessous duquel la correction gamma noire est appliquée. La valeur doit être comprise entre 0 et 255. | 
| hwui.text_gamma.white_threshold | integer | 192 | Définit le seuil de luminance au-dessus duquel la correction gamma blanche est appliquée. La valeur doit être comprise entre 0 et 255. | 
| hwui.use_gpu_pixel_buffers | boolean | true | Active ou désactive l'utilisation des PBO sur le matériel OpenGL ES 3.0. Le moteur de rendu utilise des PBO pour effectuer des importations de textures asynchrones, en particulier pour le cache de police. Cette propriété doit toujours rester activée, mais vous pouvez la désactiver lors de la mise en service ou du développement si les PBO entraînent des corruptions ou de mauvaises performances. C'est pourquoi la propriété n'est pas en lecture seule. | 
