Este documento descreve o ajuste de desempenho que você pode fazer para obter o máximo de seu hardware.
Propriedades do OpenGLRenderer (libhwui)
Este documento lista todas as propriedades que você pode usar para controlar o pipeline de renderização acelerada por hardware 2D do Android. Defina essas propriedades no device.mk
como PRODUCT_PROPERTY_OVERRIDES
.
Propriedades para todas as versões do Android
Propriedade | Modelo | Valor padrão | Descrição |
---|---|---|---|
ro.zygote.disable_gl_preload | boolean | false | Usado para habilitar/desabilitar o pré-carregamento de drivers EGL/GL no Zygote no momento da inicialização. Quando esta propriedade é definida como false, o Zygote irá pré-carregar os drivers GL invocando eglGetDisplay(EGL_DEFAULT_DISPLAY). O objetivo é carregar o código das bibliotecas dinâmicas no Zygote para compartilhá-lo com todos os outros processos. Se um driver não suportar o compartilhamento, defina essa propriedade como true. |
Propriedades para Android 8.0 e inferior
Propriedade | Modelo | Valor padrão | Descrição |
---|---|---|---|
ro.hwui.disable_scissor_opt | boolean | false | Usado para habilitar ou desabilitar a otimização de tesoura. Os valores aceitos são true e false. Quando a otimização de tesoura está habilitada, o OpenGLRenderer tenta minimizar o uso de tesoura ativando e desativando seletivamente o teste de tesoura GL. Quando a otimização está desabilitada, o OpenGLRenderer mantém o GL scissor test habilitado e altera o scissor rect conforme necessário. Algumas GPUs (por exemplo, a SGX 540) apresentam melhor desempenho ao alterar o scissor rect com mais frequência do que ativar ou desativar o scissor test com frequência. |
ro.hwui.texture_cache_size | float | 24 | Define o tamanho, em megabytes, do cache de textura por processo. Recomendamos usar um cache grande o suficiente para conter várias telas com texturas de 32 bits (por exemplo, em uma tela de 1280x800, um buffer de tela inteira usa cerca de 4 MB, portanto o cache deve ter pelo menos 20 MB). |
ro.hwui.layer_cache_size | float | 16 | Define o tamanho, em megabytes, do cache de camadas por processo. Recomendamos usar um cache grande o suficiente para conter 4 vezes a tela em 32 bits. Por exemplo, em uma tela de 1280x800, um buffer de tela cheia usa cerca de 4 MB, portanto, o cache deve ter pelo menos 16 MB. |
ro.hwui.gradient_cache_size | 0.5 | float | Define o tamanho, em megabytes, do cache de gradientes por processo. Um único gradiente geralmente ocupa entre 1 e 4 KB de memória. Recomenda-se usar um cache grande o suficiente para conter pelo menos doze gradientes. |
ro.hwui.patch_cache_size | integer | 128 | Define o tamanho, em kilobytes, do cache de 9 patches, por processo. Esse cache contém apenas dados de vértice e, portanto, pode ser mantido pequeno. Cada vértice é composto por 4 floats, ou 16 bytes. |
ro.hwui.path_cache_size | float | 4 | Define o tamanho, em megabytes, do cache de caminhos por processo. Recomendamos usar um cache grande o suficiente para conter pelo menos uma tela de texturas de 32 bits. Por exemplo, em uma tela de 1280x800, um buffer de tela inteira usa cerca de 4 MB, portanto, o cache deve ter pelo menos 4 MB. |
ro.hwui.shape_cache_size | float | 1 | Define o tamanho, em megabytes, dos caches de formas por processo. Esse valor é usado por vários caches, como círculos e retângulos arredondados. Recomendamos usar um cache grande o suficiente para conter pelo menos uma tela de 8 bits. Por exemplo, em uma tela de 1280x800, um buffer de tela inteira usa cerca de 1 MB, portanto, o cache deve ter pelo menos 1 MB. |
ro.hwui.drop_shadow_cache_size | float | 2 | Define o tamanho, em megabytes, do cache de sombras de texto por processo. Recomendamos usar um cache grande o suficiente para conter duas telas de texturas de 8 bits. Por exemplo, em uma tela de 1280 x 800, um buffer de tela inteira usa cerca de 1 MB, portanto, o cache deve ter pelo menos 2 MB. |
ro.hwui.r_buffer_cache_size | float | 2 | Define o tamanho, em megabytes, do cache de buffers de renderização por processo. Recomenda-se usar um cache grande o suficiente para conter o dobro da tela em 8 bits. Por exemplo, em uma tela de 1280 x 800, um buffer de tela inteira usa cerca de 1 MB, portanto, o cache deve ter pelo menos 2 MB. O cache pode ser menor se o dispositivo suportar buffers de estêncil de 4 bits ou 1 bit. |
ro.hwui.texture_cache_flush_rate | float | 0.6 | Define a porcentagem do cache de textura a ser mantida após um flush de memória. As descargas de memória são acionadas quando o sistema precisa recuperar memória em todos os aplicativos. Recomendamos liberar cerca de 50% do cache nessas situações. |
ro.hwui.text_small_cache_width | integer | 1024 | Define a largura em pixels do cache de fonte padrão. O limite superior depende de quão rápido a GPU pode carregar texturas. Recomendamos usar pelo menos 1024 pixels, mas no máximo 2048 pixels. Você também deve usar uma potência de dois valores. |
ro.hwui.text_small_cache_height | integer | 256 | Define a altura em pixels do cache de fonte padrão. O limite superior depende de quão rápido a GPU pode carregar texturas. Recomendamos usar pelo menos 256 pixels, mas no máximo 1024 pixels. |
ro.hwui.text_large_cache_width | integer | 2048 | Define a largura em pixels do cache de fonte grande. Esse cache é usado para glifos muito grandes para caber no cache de fonte padrão. O limite superior depende de quão rápido a GPU pode carregar texturas. Recomendamos usar pelo menos 2.048 pixels, mas no máximo 4.096 pixels. Você também deve usar uma potência de dois valores. |
ro.hwui.text_large_cache_height | integer | 512 | Define a altura em pixels do cache de fonte grande. O cache de fonte grande é usado para glifos muito grandes para caber no cache de fonte padrão. O limite superior depende de quão rápido a GPU pode carregar texturas. Recomendamos usar pelo menos 512 pixels, mas no máximo 2048 pixels. Você também deve usar uma potência de dois valores. |
hwui.text_gamma_correction | string | lookup | Seleciona a técnica de correção de gama de texto. Há quatro escolhas possíveis:
lookup padrão, que oferece um bom compromisso em termos de qualidade, velocidade e uso de memória. |
hwui.text_gamma | float | 1.4 | Define o valor de gama usado para correção de gama de texto. Esse valor pode ser ajustado com base na exibição usada pelo dispositivo. |
hwui.text_gamma.black_threshold | integer | 64 | Define o limite de luminância abaixo do qual a correção de gama preta é aplicada. O valor deve ser definido no intervalo 0..255. |
hwui.text_gamma.white_threshold | integer | 192 | Define o limite de luminância acima do qual a correção de gama branca é aplicada. O valor deve ser definido no intervalo 0..255. |
hwui.use_gpu_pixel_buffers | boolean | true | Usado para habilitar ou desabilitar o uso de PBOs no hardware OpenGL ES 3.0. Os PBOs são usados pelo renderizador para realizar uploads de texturas assíncronas, especialmente para o cache de fontes. Esta propriedade deve sempre permanecer habilitada, mas pode ser desabilitada durante a ativação ou desenvolvimento se o uso de PBOs causar corrupções ou desempenho ruim. É por isso que a propriedade não é somente leitura. |