Ce document décrit l'optimisation des performances que vous pouvez effectuer pour tirer le meilleur parti de votre matériel.
Propriétés OpenGLRenderer (libhwui)
Ce document répertorie toutes les propriétés que vous pouvez utiliser pour contrôler le pipeline de rendu accéléré matériel 2D d'Android. Définissez ces propriétés dans le device.mk
comme PRODUCT_PROPERTY_OVERRIDES
.
Propriétés pour toutes les versions d'Android
Propriété | Taper | Valeur par défaut | Description |
---|---|---|---|
ro.zygote.disable_gl_preload | boolean | false | Utilisé pour activer/désactiver le préchargement des pilotes EGL/GL dans Zygote au moment du démarrage. Lorsque cette propriété est définie sur false, Zygote préchargera les pilotes GL en appelant eglGetDisplay(EGL_DEFAULT_DISPLAY). Le but est de charger le code des bibliothèques dynamiques 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é sur true. |
Propriétés pour Android 8.0 et versions antérieures
Propriété | Taper | Valeur par défaut | Description |
---|---|---|---|
ro.hwui.disable_scissor_opt | boolean | false | Utilisé pour activer ou désactiver l'optimisation des ciseaux. Les valeurs acceptées sont vraies et fausses. Lorsque l'optimisation des ciseaux est activée, OpenGLRenderer tente de minimiser l'utilisation des ciseaux en activant et désactivant sélectivement le test de ciseaux GL. Lorsque l'optimisation est désactivée, OpenGLRenderer maintient le test de ciseaux GL activé et modifie le rect de ciseaux si nécessaire. Certains GPU (par exemple, le SGX 540) fonctionnent mieux en changeant le côté des ciseaux plus souvent qu'en activant ou en désactivant souvent le test des ciseaux. |
ro.hwui.texture_cache_size | float | 24 | Définit la taille, en mégaoctets, du cache de texture par processus. Nous vous recommandons d'utiliser un cache suffisamment grand pour contenir plusieurs écrans de textures 32 bits (par exemple, sur un affichage 1280 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 par couche de processus. Nous recommandons d'utiliser un cache suffisamment grand pour contenir 4 fois l'écran en 32 bits. Par exemple, sur un écran 1 280 x 800, une mémoire tampon plein écran utilise environ 4 Mo, le cache doit donc être d'au moins 16 Mo. |
ro.hwui.gradient_cache_size | 0.5 | float | Définit la taille, en mégaoctets, du cache des gradients par processus. Un seul dégradé occupe généralement entre 1 et 4 Ko de mémoire. Il est recommandé d'utiliser un cache suffisamment grand pour contenir au moins douze dégradés. |
ro.hwui.patch_cache_size | integer | 128 | Définit la taille, en kilo-octets, du cache de 9 correctifs, par processus. Ce cache ne contient que les données de sommet et peut donc rester petit. Chaque sommet est composé de 4 flottants, 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 1 280 x 800, une mémoire 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, des caches de 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 1 280 x 800, une mémoire 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 1 280 x 800, une mémoire 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. Il est recommandé d'utiliser un cache suffisamment grand pour contenir deux fois l'écran en 8 bits. Par exemple, sur un écran 1 280 x 800, une mémoire 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 prend en charge 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. Les vidages de mémoire sont déclenchés lorsque le système doit récupérer de la mémoire dans toutes les applications. Nous recommandons de libérer environ 50 % du cache dans de telles situations. |
ro.hwui.text_small_cache_width | integer | 1024 | Définit la largeur en pixels du cache de polices par défaut. La limite supérieure dépend de la vitesse à laquelle le GPU peut télécharger des textures. Nous recommandons d'utiliser au moins 1 024 pixels mais au maximum 2 048 pixels. Vous devez également utiliser une puissance de deux. |
ro.hwui.text_small_cache_height | integer | 256 | Définit la hauteur en pixels du cache de polices par défaut. La limite supérieure dépend de la vitesse à laquelle le GPU peut télécharger des textures. Nous recommandons d'utiliser au moins 256 pixels mais au maximum 1 024 pixels. |
ro.hwui.text_large_cache_width | integer | 2048 | Définit la largeur en pixels du cache des grandes polices. Ce cache est utilisé pour les glyphes trop grands pour tenir dans le cache de polices par défaut. La limite supérieure dépend de la vitesse à laquelle le GPU peut télécharger des textures. Nous recommandons d'utiliser au moins 2 048 pixels mais au maximum 4 096 pixels. Vous devez également utiliser une puissance de deux. |
ro.hwui.text_large_cache_height | integer | 512 | Définit la hauteur en pixels du cache des grandes polices. Le grand cache de polices est utilisé pour les glyphes trop grands pour tenir dans le cache de polices par défaut. La limite supérieure dépend de la vitesse à laquelle le GPU peut télécharger des textures. Nous recommandons d'utiliser au moins 512 pixels mais au maximum 2048 pixels. Vous devez également utiliser une puissance de deux. |
hwui.text_gamma_correction | string | lookup | Sélectionne la technique de correction gamma du texte. Il y a quatre choix possibles :
lookup par 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. Cette valeur peut être ajustée en fonction de l'affichage utilisé par l'appareil. |
hwui.text_gamma.black_threshold | integer | 64 | Définit le seuil de luminance en dessous duquel la correction gamma du noir est appliquée. La valeur doit être définie dans la plage 0..255. |
hwui.text_gamma.white_threshold | integer | 192 | Définit le seuil de luminance au-dessus duquel la correction gamma du blanc est appliquée. La valeur doit être définie dans la plage 0..255. |
hwui.use_gpu_pixel_buffers | boolean | true | Utilisé pour activer ou désactiver l'utilisation des PBO sur le matériel OpenGL ES 3.0. Les PBO sont utilisés par le moteur de rendu pour effectuer des téléchargements de textures asynchrones, notamment pour le cache de polices. Cette propriété doit toujours rester activée mais peut être désactivée lors de la mise en place ou du développement si l'utilisation de PBO provoque des corruptions ou des performances épouvantables. C'est pourquoi la propriété n'est pas en lecture seule. |