Este documento descreve o ajuste de desempenho que você pode fazer para aproveitar ao máximo 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 | Tipo | Valor padrão | Descrição |
---|---|---|---|
ro.zygote.disable_gl_preload | boolean | false | Usado para ativar/desativar o pré-carregamento de drivers EGL/GL no Zygote durante a inicialização. Quando esta propriedade for definida como falsa, o Zygote 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, configure esta propriedade como true. |
Propriedades para Android 8.0 e inferior
Propriedade | Tipo | Valor padrão | Descrição |
---|---|---|---|
ro.hwui.disable_scissor_opt | boolean | false | Usado para ativar ou desativar a otimização de tesoura. Os valores aceitos são verdadeiro e falso. 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 teste de tesoura GL habilitado e altera o reto de tesoura conforme necessário. Algumas GPUs (por exemplo, a SGX 540) têm melhor desempenho ao alterar o reto de tesoura com mais frequência do que ativar ou desativar o teste de tesoura 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 armazenar várias telas com texturas de 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 20 MB). |
ro.hwui.layer_cache_size | float | 16 | Define o tamanho, em megabytes, do cache por camadas de processo. Recomendamos usar um cache grande o suficiente para armazenar 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 armazenar pelo menos uma tela com texturas de 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 4 MB. |
ro.hwui.shape_cache_size | float | 1 | Define o tamanho, em megabytes, dos caches de formas por processo. Este valor é usado por vários caches, como círculos e retângulos arredondados. Recomendamos usar um cache grande o suficiente para armazenar pelo menos uma tela de 8 bits. Por exemplo, em um monitor 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 projetadas de texto por processo. Recomendamos usar um cache grande o suficiente para armazenar duas telas com texturas de 8 bits. Por exemplo, em um monitor de 1280x800, 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 dos buffers de renderização por processo. Recomenda-se usar um cache grande o suficiente para armazenar o dobro da tela em 8 bits. Por exemplo, em um monitor de 1280x800, 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 ou 1 bit. |
ro.hwui.texture_cache_flush_rate | float | 0.6 | Define a porcentagem do cache de textura a ser mantida após uma liberação de memória. As liberações 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 fontes padrão. O limite superior depende da rapidez com que a GPU pode carregar texturas. Recomendamos usar pelo menos 1.024 pixels, mas no máximo 2.048 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 fontes padrão. O limite superior depende da rapidez com que 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 fontes grandes. Esse cache é usado para glifos muito grandes para caber no cache de fontes padrão. O limite superior depende da rapidez com que 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 fontes grandes. O cache de fontes grande é usado para glifos grandes demais para caber no cache de fontes padrão. O limite superior depende da rapidez com que a GPU pode carregar texturas. Recomendamos usar pelo menos 512 pixels, mas no máximo 2.048 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 gama de texto. Existem quatro opções 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 gama usado para correção gama de texto. Este valor pode ser ajustado com base no display utilizado pelo dispositivo. |
hwui.text_gamma.black_threshold | integer | 64 | Define o limite de luminância abaixo do qual a correção gama de preto é 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 gama de branco é aplicada. O valor deve ser definido no intervalo 0..255. |
hwui.use_gpu_pixel_buffers | boolean | true | Usado para ativar ou desativar o uso de PBOs no hardware OpenGL ES 3.0. PBOs são usados pelo renderizador para realizar uploads de textura assíncronos, especialmente para o cache de fontes. Esta propriedade deve permanecer sempre habilitada, mas pode ser desabilitada durante a inicialização ou desenvolvimento se o uso de PBOs causar corrupções ou desempenho péssimo. É por isso que a propriedade não é somente leitura. |