Este documento descreve o ajuste de desempenho para otimizar a performance do hardware.
Propriedades do OpenGLRenderer (libhwui)
Este documento descreve as propriedades para controlar o pipeline de renderização 2D acelerado por hardware 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 |
Ativa ou desativa o pré-carregamento de drivers EGL/GL no Zygote durante a inicialização.
Quando essa propriedade é false , o Zygote pré-carrega os drivers GL invocando eglGetDisplay(EGL_DEFAULT_DISPLAY) . Isso carrega o código da biblioteca dinâmica no Zygote para compartilhá-lo com todos os outros processos. Se um
driver não for compatível com o compartilhamento, defina essa propriedade como true . |
Propriedades para o Android 8.0 e versões anteriores
Propriedade | Tipo | Valor padrão | Descrição |
---|---|---|---|
ro.hwui.disable_scissor_opt |
boolean |
false |
Ativa ou desativa a otimização de tesoura. Os valores aceitos são
Quando desativado, o OpenGLRenderer mantém o teste de tesoura GL ativado e muda o retângulo de tesoura conforme necessário. Algumas GPUs (por exemplo, a SGX 540) têm um desempenho melhor quando a mudança do retângulo de corte é mais frequente do que a ativação ou desativação do teste de corte. |
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 de texturas de 32 bits. Por exemplo, em uma tela de 1280x800, um buffer de tela cheia usa cerca de 4 MB. Portanto, o cache precisa 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 armazenar quatro 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 precisa ter pelo menos 16 MB. |
ro.hwui.gradient_cache_size |
float |
0.5 |
Define o tamanho, em megabytes, do cache de gradientes por processo. Um único gradiente geralmente ocupa entre 1 KB e 4 KB de memória. Recomendamos usar um cache grande o suficiente para armazenar pelo menos 12 gradientes. |
ro.hwui.patch_cache_size |
integer |
128 |
Define o tamanho, em kilobytes, do cache de nove patches por processo. Esse cache contém apenas dados de vértices, então você pode mantê-lo pequeno. Cada vértice consiste em quatro números de ponto flutuante 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 de texturas de 32 bits. Por exemplo, em uma tela de 1280x800, um buffer de tela cheia usa cerca de 4 MB. Portanto, o cache precisa ter pelo menos 4 MB. |
ro.hwui.shape_cache_size |
float |
1 |
Define o tamanho, em megabytes, do cache 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 armazenar pelo menos uma tela de 8 bits. Por exemplo, em uma tela de 1280x800, um buffer de tela cheia usa cerca de 1 MB. Portanto, o cache precisa 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 de texturas de 8 bits. Por exemplo, em uma tela de 1280x800, um buffer de tela cheia usa cerca de 1 MB. Portanto, o cache precisa 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. Recomendamos usar um cache grande o suficiente para armazenar o dobro da tela em 8 bits. Por exemplo, em uma tela de 1280x800, um buffer de tela cheia usa cerca de 1 MB. Portanto, o cache precisa ter pelo menos 2 MB. O cache pode ser menor se o dispositivo aceitar 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 limpeza de memória. O sistema aciona liberações de memória quando 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 velocidade com que a GPU pode fazer upload de texturas. Recomendamos usar pelo menos 1024 pixels, mas no máximo 2048 pixels. Use também um valor de potência de dois. |
ro.hwui.text_small_cache_height |
integer |
256 |
Define a altura, em pixels, do cache de fontes padrão. O limite superior depende da velocidade com que a GPU pode fazer upload de 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 velocidade com que a GPU pode fazer upload de texturas. Recomendamos usar pelo menos 2048 pixels, mas no máximo 4096 pixels. Use também um valor de potência de dois. |
ro.hwui.text_large_cache_height |
integer |
512 |
Define a altura, em pixels, do cache de fontes grandes. O cache de fontes grandes é usado para glifos muito grandes para caber no cache de fontes padrão. O limite superior depende da velocidade com que a GPU pode fazer upload de texturas. Recomendamos usar pelo menos 512 pixels, mas no máximo 2048 pixels. Use também um valor de potência de dois. |
hwui.text_gamma_correction |
string |
lookup |
Seleciona a técnica de correção gama de texto. Há quatro opções possíveis:
lookup , 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. É possível ajustar esse valor com base na tela do dispositivo. |
hwui.text_gamma.black_threshold |
integer |
64 |
Define o limite de luminância abaixo do qual a correção gama preta é aplicada. O valor precisa estar no intervalo de 0 a 255. |
hwui.text_gamma.white_threshold |
integer |
192 |
Define o limite de luminância acima do qual a correção gama branca é aplicada. O valor precisa estar no intervalo de 0 a 255. |
hwui.use_gpu_pixel_buffers |
boolean |
true |
Ativa ou desativa o uso de PBOs em hardware OpenGL ES 3.0. O renderizador usa PBOs para fazer uploads assíncronos de textura, especialmente para o cache de fontes. Essa propriedade deve sempre permanecer ativada, mas é possível desativá-la durante a inicialização ou o desenvolvimento se os PBOs causarem corrupções ou desempenho ruim. É por isso que a propriedade não é somente leitura. |