17 votos

¿Alguien puede explicar todas estas Opciones de Desarrollador?

¿Alguien puede explicar estas opciones para desarrolladores?

  • Forzar renderizado de GPU
  • Deshabilitar operaciones de recorte no rectangulares
  • Forzar 4X MSAA
  • Deshabilitar superposiciones de HW

¿Cuáles son los posibles efectos que puedo ver en mi dispositivo al deshabilitar/habilitarlas? [Nota: He encontrado otras opciones buscando en Google pero no estas.]

¿Las configuraciones para desarrolladores afectan la vida de la batería al usar menores velocidades de animación (todas a exactamente 2x) o mayores velocidades de animación (0.5x exactamente) a expensas de la experiencia del usuario?

21voto

RossC Puntos 3725

Por favor ten en cuenta que estas son opciones de Desarrollador, y pueden no tener utilidad, o tener un impacto negativo en el rendimiento de tu dispositivo.

Forzar representación de GPU

La GPU es la Unidad de Procesamiento Gráfico. Es muy similar a la CPU, pero en lugar de procesar números y encargarse de tareas para el sistema operativo y hardware, la GPU renderiza información gráfica y la muestra en la pantalla para ti.

La CPU puede procesar instrucciones gráficas sin problema, pero hacerlo quita tiempo para realizar otras computaciones, y puede causar retrasos mientras se procesan las instrucciones gráficas.

Desde Ice Cream Sandwich en adelante, los desarrolladores (o usuarios avanzados) tienen la opción de forzar a las aplicaciones a utilizar la representación de GPU, ya sea que esa opción esté activada o desactivada en el manifiesto de la aplicación. Esto no necesariamente hace que la aplicación sea más rápida, y puede causar problemas.


Desactivar operaciones de recorte no rectangulares

Esto es demasiado técnico para que lo explique con gran detalle. Básicamente se usa un "lienzo" para dibujar. El código fuente de Android contiene esto:

/**
     * Activar para **depurar operaciones de recorte no rectangulares**.
     *
     * Valores posibles:
     * "ocultar", para desactivar este modo de depuración
     * "realzar", resalta los comandos de dibujo probados contra un recorte no rectangular
     * "plantilla", representa la región de recorte en pantalla cuando está activo
     *
     * @hide
     */
    public static final String DEBUG_SHOW_NON_RECTANGULAR_CLIP_PROPERTY =
            "debug.hwui.show_non_rect_clip";

Puedes desactivarlo para crear áreas de lienzo inusuales (no rectangulares). Ver aquí para más detalles sobre esto.

Como menciona @IanNi-Lewis en su comentario:

Probablemente vale la pena señalar que "regiones de recorte no rectangulares" es un poco engañoso. Debería ser "regiones de recorte que no son rectángulos alineados con la pantalla". Si tienes una región de recorte rectangular que está girada por algún múltiplo no de 90 grados, entonces se utiliza la misma ruta lenta que una región de recorte con forma de rosquilla o algo similar. (La ruta lenta utiliza el búfer de esténcil, y probablemente no necesita ser tan lenta como lo es; es un buen área para futuras optimizaciones).


Forzar 4X MSAA

Forzar 4x MSAA no requiere un dispositivo con acceso root. Esta opción hace lo mismo que cualquier filtro de Anti Aliasing en juegos de PC: suaviza toda la pixelación y proporciona una mejor renderización, lo que significa gráficos de mejor calidad. Los usuarios deben saber que esta función solo se recomienda para dispositivos que tengan una GPU capaz de soportar nativamente MSAA.

De Wikipedia:

En procesamiento de señales y disciplinas relacionadas, el aliasing es un efecto que hace que diferentes señales se vuelvan indistinguibles (o alias entre sí) al ser muestreadas. También se refiere a la distorsión o artefacto que resulta cuando la señal reconstruida a partir de muestras es diferente de la señal continua original.


Desactivar superposiciones de hardware

Sin una superposición de hardware, cada aplicación que muestra cosas en la pantalla compartirá memoria de video y deberá verificar constantemente colisiones y recortes para renderizar una imagen adecuada, lo que puede consumir mucha potencia de procesamiento. Con una superposición de hardware, cada aplicación obtiene su propia porción de memoria de video, eliminando la necesidad de verificar colisiones y recortes.

Como dijo @DanHulme: Las ventanas en Android siempre se componen en lugar de renderizarse en memoria de video compartida. Normalmente, SurfaceFlinger utiliza la GPU para la composición, pero usará una superposición de hardware cuando sea posible, lo que es más rápido y consume menos batería. Deshabilitar las superposiciones significa que siempre utilizará la representación de GPU. Solo es útil para depurar integración de sistema o decodificación de video de hardware: ni siquiera los desarrolladores de aplicaciones necesitan activar esta opción.

2 votos

4xMSAA podría no ser realmente más lento. En ciertas GPU como Mali-400, la diferencia de velocidad entre 4xMSAA y sin anti-aliasing es insignificante debido a cómo se ejecutan los fragment shaders. También vale la pena mencionar que esto solo afecta a las aplicaciones GLES y no hará que el texto e iconos en aplicaciones normales se vean más nítidos.

3 votos

No creo que tu descripción de superposiciones de hardware sea correcta. En Android, las ventanas siempre se componen en lugar de renderizarse en la memoria de video compartida. Normalmente, SurfaceFlinger utiliza la GPU para la composición, pero utilizará una superposición de hardware cuando sea posible, lo que es más rápido y consume menos batería. Deshabilitar las superposiciones significa que siempre se utilizará la renderización GPU. Solo es útil para depurar la integración del sistema o la decodificación de video de hardware: ni siquiera los desarrolladores de aplicaciones necesitan activar esta opción.

0 votos

Estoy lejos de mi PC, editaré tan pronto como pueda, me confundí un poco. O si prefieres, siéntete libre de editar.

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X