2011-01-02 20 views
37

no he encontrado una explicación clara de cómo funciona el sistema de gráficos Android, específicamente, ¿utiliza un servidor de pantalla, está basado en que DirectFB o X11, etc.Android gráficos Internos

Por lo que he logró juntar, Android depende de Linux frame buffer. No he encontrado mucho sobre qué tipo de servidor de pantalla o window manager usa Android para el acceso multiplexado al framebuffer, por lo que cualquier puntero sería muy apreciado.

Finalmente, por lo que entiendo, el conjunto de instrucciones ARM proporciona instrucciones para acelerar OpenGL, pero no está claro cómo se integra con el servidor de pantalla, es decir. ¿las aplicaciones cliente negocian un búfer de memoria compartido en el que el cliente escribe directamente?

¿Están abiertas las bibliotecas OpenGL para el acelerador de plataforma? He encontrado algunas referencias que sugieren que son binarios de código cerrado. Una vez más, cualquier puntero sería apreciado.

+0

+1. Muy útil para personas como yo, a las que de repente se les presentan problemas relacionados con la pantalla ... :) podrían modificar el enlace de la memoria intermedia de linux. Cambió y parece que ya no tiene soporte. Gracias de antemano .. –

Respuesta

38

Hay dos piezas centrales para gráficos Android: SurfaceFlinger y Skia. SurfaceFlinger es el compositor de Android, utilizado por el administrador de ventanas para crear y mostrar ventanas (en realidad denominadas superficies) SurfaceFlinger está implementado sobre OpenGL ES 1.x actualmente y también puede usar otras técnicas de aceleración de hardware cuando esté disponible (MDP, un blitter 2D en el T-Mobile G1, o superposiciones de hardware en el Xoom.)

Cada aplicación se procesa en sus ventanas (o superficies) utilizando principalmente Skia. Skia es la biblioteca de gráficos 2D de Android. También puede usar OpenGL ES 1.xy 2.0 para renderizar en una superficie.

Android no usa DirectFB o X11 ni ninguna otra solución Linux existente.

+0

Y el administrador de ventanas es un proceso distinguido compartido por todos los programas, similar a un servidor de pantalla tradicional? Posee acceso exclusivo al dispositivo de visualización, etc. – naasking

+0

El administrador de ventanas vive en system_process, pero SurfaceFlinger posee el dispositivo de visualización, no el administrador de ventanas. –

+0

Tengo curiosidad acerca de su comentario sobre DirectFB. Si observa la presentación en [la presentación de Jim Huang] (http://www.slideshare.net/jserv/design-and-concepts-of-android-graphics) notará una referencia a framebuffers en las diapositivas 30 y 31. ¿Cómo difieren de DirectFB? – CyberFonic

4

Romain tipo estaba bien, sin duda. Pero la cosa cambió desde Android 3.0. Skia ya no es tan importante, la mayoría de los dibujos 2D se aceleran con OpenGL, un componente HWUI.

+0

¿Cuál podría ser un buen punto de partida para aprender la pila de gráficos de Android? – control

+0

@ppu una promoción desvergonzada de mi blog http://pierrchen.blogspot.com/, que hablaba bastante sobre el gráfico interno de Android – pierrotlefou

+1

Quiero depurar HWUI pero no sé cómo hacerlo. Cualquier registro no se puede apagar (PD: usted es chino y yo también, así que por favor, eche una mano). – kangear

Cuestiones relacionadas