Este documento descreve o ajuste de desempenho que você pode fazer para aproveitar ao máximo o hardware.
Propriedades do OpenGLRenderer (libhwui)
Este documento lista todas as propriedades que podem ser usadas para controlar
o pipeline de renderização 2D com aceleração de 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 |
Usado para ativar/desativar o pré-carregamento de drivers EGL/GL no Zygote no momento da inicialização. Quando essa propriedade é definida como falsa, o Zygote carrega os drivers GL antes de chamar 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 tiver suporte para 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 |
Usado para ativar ou desativar a otimização de tesoura. Os valores aceitos são "true" e "false". Quando a otimização de tesoura está ativada, o OpenGLRenderer tenta minimizar o uso de tesoura ativando e desativando seletivamente o teste de tesoura do GL. Quando a otimização está desativada, 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 melhor desempenho ao mudar o retângulo 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 de texturas de 32 bits. Por exemplo, em uma tela de 1280x800, um buffer de tela cheia usa cerca de 4 MB, então 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 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 precisa 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. É recomendável 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 9 patches por processo. Esse cache armazena apenas dados de vértices e, portanto, pode ser mantido pequeno. Cada vértice é feito de 4 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, 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 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 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. É recomendável usar um cache grande o suficiente para armazenar duas vezes a 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 oferecer suporte a buffers de stencil 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. Os despejos de memória são acionados quando o sistema precisa recuperar a 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 de upload de texturas da GPU. Recomendamos o uso de pelo menos 1.024 pixels, mas no máximo 2.048 pixels. Você também precisa usar 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 de upload de texturas da GPU. Recomendamos usar pelo menos 256 pixels, mas no máximo 1.024 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 de upload de texturas da GPU. Recomendamos o uso de pelo menos 2.048 pixels, mas no máximo 4.096 pixels. Você também precisa usar 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 de upload de texturas da GPU. Recomendamos usar pelo menos 512 pixels, mas no máximo 2.048 pixels. Você também precisa usar um valor de potência de dois. |
hwui.text_gamma_correction |
string |
lookup |
Seleciona a técnica de correção de 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 de gama usado para a correção de gama do texto. Esse valor pode ser ajustado com base na tela 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 precisa estar 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 precisa estar 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. Os PBOs são usados pelo renderizador para realizar uploads de texturas assíncronos, especialmente para o cache de fontes. Essa propriedade precisa estar sempre ativada, mas pode ser desativada durante a ativação ou o desenvolvimento se o uso de PBOs causar corrupção ou desempenho ruim. É por isso que a propriedade não é somente leitura. |