Procesamiento de androides usando CPU pero no GPU?

Es realmente extraño que en la herramienta systrace cuando vi la ejecución de comandos de dibujo y la composición de la ventana por surfaceflinger, esto se está ejecutando en la CPU, pero no en la GPU. Pero según la charla de Google por Romain Guy, les dijeron que esta composición y ejecución de comandos de dibujo se ejecutan en GPU. Mi dispositivo con GPU, incluso entonces están utilizando el núcleo de la CPU. Creo que si los núcleos de la CPU son libres, entonces utiliza núcleo de la CPU de lo contrario, utiliza la GPU.

Hay tres maneras de hacer la composición superficial:

  1. Uso de planos de superposición. La mayoría de los dispositivos recientes componen hasta cuatro planos a medida que los píxeles se envían a la pantalla. Ésta es (generalmente) la manera más eficiente de hacer la composición superficial. Es necesario para el vídeo DRM, ya que actualmente no hay forma de que GLES componga superficies "seguras".
  2. En la GPU, con OpenGL ES. SurfaceFlinger recurrirá a esto si tiene más de cuatro planos para componer. También se utiliza para pantallas virtuales y cosas como screenrecord . En algunos dispositivos, si ninguna de las superficies se ha actualizado en un bit, el compositor hardware utilizará la GPU para componer las superficies y, a continuación, sólo mostrar el búfer único. Esto es más eficaz en cuanto a ancho de banda que los planos de superposición si no hay nada que cambie (porque no tiene que recorrer todas las superficies, lo que significa que necesita menos ancho de banda de memoria, lo que significa que puede reducir las horas, lo que significa que puede utilizar menos energía ).
  3. En la CPU. Nadie hace esto más.

Lo que hace exactamente varía entre dispositivos y ha evolucionado con el tiempo. Si quieres ver exactamente lo que está haciendo, intenta adb shell dumpsys SurfaceFlinger . Los detalles del compositor de hardware (cerca de la parte inferior) son la parte más interesante. Es posible que tenga que activar activamente algo en la pantalla del dispositivo mientras ejecuta el comando para evitar la optimización de GLES.

Supongo que usted está viendo es el prepare() y set() llamadas y la gestión de búfer, no la composición real de píxeles, en su systrace.

Actualización: hay un artículo muy bueno en este post .

Actualización 2: ahora hay una visión general del sistema completo en el documento de gráficos de nivel de sistema de Android .

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.