Configuración de OpenGLRenderer

En este documento, se describe el ajuste del rendimiento para optimizar el rendimiento del hardware.

Propiedades de OpenGLRenderer (libhwui)

En este documento, se describen las propiedades para controlar la canalización de renderización 2D acelerada por hardware de Android. Establece estas propiedades en device.mk como PRODUCT_PROPERTY_OVERRIDES.

Propiedades para todas las versiones de Android

Propiedad Tipo Valor predeterminado Descripción
ro.zygote.disable_gl_preload boolean false Habilita o inhabilita la carga previa de los controladores EGL/GL en Zygote durante el inicio. Cuando esta propiedad es false, Zygote carga previamente los controladores GL invocando eglGetDisplay(EGL_DEFAULT_DISPLAY). Esto carga el código de la biblioteca dinámica en Zygote para compartirlo con todos los demás procesos. Si un controlador no admite el uso compartido, establece esta propiedad en true.

Propiedades para Android 8.0 y versiones anteriores

Propiedad Tipo Valor predeterminado Descripción
ro.hwui.disable_scissor_opt boolean false

Habilita o inhabilita la optimización de tijeras. Los valores aceptados son true y false. Cuando la optimización de tijeras está habilitada, OpenGLRenderer intenta minimizar el uso de tijeras habilitando y deshabilitando de forma selectiva la prueba de tijeras GL.

Cuando está inhabilitada, OpenGLRenderer mantiene habilitada la prueba de tijeras GL y cambia el rectángulo de tijeras según sea necesario. Algunas GPUs (por ejemplo, la SGX 540) funcionan mejor cuando se cambia el rectángulo de tijeras con más frecuencia que cuando se habilita o inhabilita la prueba de tijeras con frecuencia.

ro.hwui.texture_cache_size float 24 Define el tamaño, en megabytes, de la caché de texturas por proceso. Te recomendamos que uses una caché lo suficientemente grande como para contener varias pantallas de texturas de 32 bits. Por ejemplo, en una pantalla de 1280 x 800, un búfer de pantalla completa usa aproximadamente 4 MB, por lo que la caché debe ser de al menos 20 MB.
ro.hwui.layer_cache_size float 16 Define el tamaño, en megabytes, de la caché de capas por proceso. Te recomendamos que uses una caché lo suficientemente grande como para contener cuatro veces la pantalla en 32 bits. Por ejemplo, en una pantalla de 1280 x 800, un búfer de pantalla completa usa aproximadamente 4 MB, por lo que la caché debe ser de al menos 16 MB.
ro.hwui.gradient_cache_size float 0.5 Define el tamaño, en megabytes, de la caché de gradientes por proceso. Por lo general, un solo gradiente ocupa entre 1 KB y 4 KB de memoria. Te recomendamos que uses una caché lo suficientemente grande como para contener al menos 12 gradientes.
ro.hwui.patch_cache_size integer 128 Define el tamaño, en kilobytes, de la caché de 9 parches por proceso. Esta caché solo contiene datos de vértices, por lo que puedes mantenerla pequeña. Cada vértice consta de 4 flotantes o 16 bytes.
ro.hwui.path_cache_size float 4 Define el tamaño, en megabytes, de la caché de rutas por proceso. Te recomendamos que uses una caché lo suficientemente grande como para contener al menos una pantalla de texturas de 32 bits. Por ejemplo, en una pantalla de 1280 x 800, un búfer de pantalla completa usa aproximadamente 4 MB, por lo que la caché debe ser de al menos 4 MB.
ro.hwui.shape_cache_size float 1 Define el tamaño, en megabytes, de la caché de formas por proceso. Este valor lo usan varias cachés, como círculos y rectángulos redondeados. Te recomendamos que uses una caché lo suficientemente grande como para contener al menos una pantalla de 8 bits. Por ejemplo, en una pantalla de 1280 x 800, un búfer de pantalla completa usa aproximadamente 1 MB, por lo que la caché debe ser de al menos 1 MB.
ro.hwui.drop_shadow_cache_size float 2 Define el tamaño, en megabytes, de la caché de sombras paralelas de texto por proceso. Te recomendamos que uses una caché lo suficientemente grande como para contener dos pantallas de texturas de 8 bits. Por ejemplo, en una pantalla de 1280 x 800, un búfer de pantalla completa usa aproximadamente 1 MB, por lo que la caché debe ser de al menos 2 MB.
ro.hwui.r_buffer_cache_size float 2 Define el tamaño, en megabytes, de la caché de búferes de renderización por proceso. Te recomendamos que uses una caché lo suficientemente grande como para contener el doble de la pantalla en 8 bits. Por ejemplo, en una pantalla de 1280 x 800, un búfer de pantalla completa usa aproximadamente 1 MB, por lo que la caché debe ser de al menos 2 MB. La caché puede ser más pequeña si el dispositivo admite búferes de stencil de 4 o 1 bit.
ro.hwui.texture_cache_flush_rate float 0.6 Define el porcentaje de la caché de texturas que se retendrá después de un vaciado de memoria. El sistema activa los vaciados de memoria cuando necesita recuperar memoria en todas las aplicaciones. Te recomendamos que liberes aproximadamente el 50% de la caché en esas situaciones.
ro.hwui.text_small_cache_width integer 1024 Define el ancho, en píxeles, de la caché de fuentes predeterminada. El límite superior depende de la velocidad con la que la GPU puede subir texturas. Te recomendamos que uses al menos 1,024 píxeles, pero no más de 2,048 píxeles. Además, usa un valor de potencia de dos.
ro.hwui.text_small_cache_height integer 256 Define la altura, en píxeles, de la caché de fuentes predeterminada. El límite superior depende de la velocidad con la que la GPU puede subir texturas. Te recomendamos que uses al menos 256 píxeles, pero no más de 1,024 píxeles.
ro.hwui.text_large_cache_width integer 2048 Define el ancho, en píxeles, de la caché de fuentes grandes. Esta caché se usa para glifos demasiado grandes para caber en la caché de fuentes predeterminada. El límite superior depende de la velocidad con la que la GPU puede subir texturas. Te recomendamos que uses al menos 2,048 píxeles, pero no más de 4,096 píxeles. Además, usa un valor de potencia de dos.
ro.hwui.text_large_cache_height integer 512 Define la altura, en píxeles, de la caché de fuentes grandes. La caché de fuentes grandes se usa para glifos demasiado grandes para caber en la caché de fuentes predeterminada. El límite superior depende de la velocidad con la que la GPU puede subir texturas. Te recomendamos que uses al menos 512 píxeles, pero no más de 2,048 píxeles. Además, usa un valor de potencia de dos valor.
hwui.text_gamma_correction string lookup Selecciona la técnica de corrección gamma de texto. Hay cuatro opciones posibles: opciones:
  • lookup3: Una corrección basada en tablas de búsqueda. La corrección gamma difiere para el texto en blanco y negro (consulta los umbrales de la siguiente manera).
  • lookup: Una corrección basada en una sola tabla de consulta.
  • shader3: Una corrección aplicada por un sombreador GLSL. La corrección gamma difiere para el texto en blanco y negro (consulta los umbrales de la siguiente manera).
  • shader: Una corrección aplicada por un sombreador GLSL.
Las correcciones gamma de búsqueda funcionan mejor en GPUs con operaciones matemáticas de sombreador limitadas. Las correcciones gamma de sombreador son las mejores para guardar memoria. Te recomendamos que uses la técnica lookup predeterminada, que ofrece un buen compromiso en términos de calidad, velocidad y uso de memoria.
hwui.text_gamma float 1.4 Define el valor gamma que se usa para la corrección gamma de texto. Puedes ajustar este valor según la pantalla del dispositivo.
hwui.text_gamma.black_threshold integer 64 Define el umbral de luminancia por debajo del cual se aplica la corrección gamma negra. El valor debe estar en el rango de 0 a 255.
hwui.text_gamma.white_threshold integer 192 Define el umbral de luminancia por encima del cual se aplica la corrección gamma blanca. El valor debe estar en el rango de 0 a 255.
hwui.use_gpu_pixel_buffers boolean true Habilita o inhabilita el uso de PBO en hardware OpenGL ES 3.0. El renderizador usa PBO para realizar cargas de texturas asíncronas, en especial para la caché de fuentes. Esta propiedad siempre debe permanecer habilitada, pero puedes inhabilitar la durante el inicio o el desarrollo si los PBO causan daños o un rendimiento deficiente. Por eso, la propiedad no es de solo lectura.