Vous êtes sur la page 1sur 5

ANDROID

SURFACE FLINGER

YEHYAOUI IMED

Table des matires

Introduction : ANDROID Surface Flinger ................................................................................................. 2 Exemple dusage de surface flinger :....................................................................................................... 4 Procdure dusage de Surface Flinger : ................................................................................................... 4

Introduction : ANDROID Surface Flinger


Le Surface Flinger permet de construire le rendu graphique, il manipule toutes les surfaces afficher provenant du frame buffer. Il peut combiner de la 2D et de la 3D provenant de diffrentes applications. Les surfaces afficher sont passes par buffers via le Binder. Le Surface Flinger utilise un double buffer permettant de basculer d'une surfaces une autre rapidement. Ce double buffer permet galement de ne jamais afficher des surfaces incompltes, car le deuxime buffer n'est affich que lorsque celui est complet. Les deux buffers sont utiliss tour tour. Il peut utiliser OpenGL ES et l'acclration matrielle pour le rendu 2D en utilisant l'API khronos.

Figure 1 : principe d'usage de Surface Flinger

Figure 2 : combinaison 2D et 3D

Le Surface Flinger a un SurfaceHeapManager et chaque client a un MemoryDealer retourn par le SurfaceHeapManager. Ce dealer consiste en : un heap qui est un grand morceau de mmoire et un allocator qui est un algorithme dallocation.

Figure 3 : architecture de l'environnement graphique

Le surface Flinger est utilis souvent dans le Media Framework :

Exemple dusage de surface flinger :

Figure 4 : combinaison de rendue graphique de deux applications

Procdure dusage de Surface Flinger :

Le client demande une nouvelle surface par CreateSurface(). CreateSurface() fait un appel de createNormalSurfaceLocked(). Une couche est cr et setBuffers() est appel pour allouer des tampons. Deux dealeurs dealers sont crs par le client : le premier est le front buffer et lautre est le back buffer . Deux layerBitmaps sont cr, initialis avec les deux dealeurs. Les heaps et les informations concernant la couche sont retourns.

Vous aimerez peut-être aussi