关闭

UNDERSTANDING ANDROID GRAPHIC- SURFACEFLINGER (IV)

136人阅读 评论(0) 收藏 举报
分类:

Having known that BufferQueue exposes the APIs for consuming surface frame while implementing BnGraphicBufferProducer, we continue our attempt to demystify surface compositions and rendering with an examination of a few more classes with respect to surface composing.

  • SurfaceFlingerConsumer and GLConsumer class

Defined in framework/native/services/surfaceflinger/SurfaceFlingerConsumer.h, and framework/native/include/gui/GLConsumer.h,SurfaceFlingerConsumer and GLConsumer are the core classes to fetch the current buffer from BufferQueue to bind to a surface layer specific GL texture.  GLConsumer uses GLES functions to conduct the operation while SurfaceFlingerConsumer is a wrapper around it to safeguard the operation. The main APIs in SurfaceFlingerConsumerare  updateTexImage() and bindTextureImage().

Note that a surface frame will be drawn to the display frame buffer as a GL texture and GLConsumer inherits from ConsumerBase.

  • Layer Class

It has been known that when a SurfaceComposerClient::createSurface  is invoked, Client in SurfaceFlinger posts a MessageCreateLayer toSurfaceFlinger which in turn calls SurfaceFlinger::createLayer() create aLayer instance to service the remote Surface instance.

Applying a lazy initialization, Layer delays until first reference to instantiate a BufferQueue object and SurfaceFlingerConsumercorresponding to the remote Surface object; meanwhile Layer links the BufferQueue object to SurfaceFlingerConsumer object and register itself as SurfaceFlingerConsumer::FrameAvailableListener listener among other procedures.

When Surface::queueBuffer() is invoked, BufferQueue::queueBuffer() and Layer::onFrameAvailable() call ensue ,as we elaborated in post SurfaceFlinger(III).

Subsequently , the Layer::draw() and Layer::onDraw() will be called to run SurfaceFlingerConsumer::bindTextureImage() andLayer::drawWithOpenGL() to FramebufferSurface current frame buffer.

0
0
查看评论

Android SurfaceFlinger 学习之路(六)----SurfaceFlinger创建Surface

http://windrunnerlihuan.com/2017/06/17/Android-SurfaceFlinger-%E5%AD%A6%E4%B9%A0%E4%B9%8B%E8%B7%AF-%E5%85%AD-SurfaceFlinger%E5%88%9B%E5%BB%BASurface/ ...
  • STN_LCD
  • STN_LCD
  • 2017-06-28 08:59
  • 209

详解android surfaceflinger三部曲

原文一: android surfaceflinger研究----显示系统 链接: http://www.cnblogs.com/armlinux/archive/2012/02/29/2396756.html 这周抽空研究了一下SurfaceFlinger,发现真正...
  • xww810319
  • xww810319
  • 2013-12-27 11:39
  • 4831

【Android】Android SurfaceFlinger之OpenGL ES

1、OpenGL ES在Android系统中,直接面向终端用户的便是GUI,可以说任何一款产品的UI都是至关重要的,是用户可以实实在在感受到的东西,是最直观的、最易被感知的东西。SurfaceFlinger作为Android GUI系统的核心模块,与OpenGL ES息息相关,所以在分析Surfac...
  • iEearth
  • iEearth
  • 2017-01-25 15:24
  • 1736

Android SurfaceFlinger之SurfaceFlinger启动过程

Android SurfaceFlinger之SurfaceFlinger启动过程
  • ztguang
  • ztguang
  • 2017-03-22 09:52
  • 478

Android4.2.2 SurfaceFlinger之Layer和Bufferqueue的创建过程

之前的博文在BootAnimation的基础上来到了SurfaceFlinger端的Surface的创建过程,具体实现由Client的createSurface来完成。其实所谓在客户端的Surface在服务端是以Layer图层的名字存在。 sp Client::createSurface( ...
  • gzzaigcn
  • gzzaigcn
  • 2014-03-25 00:15
  • 4903

Android4.4深入浅出之SurfaceFlinger总体结构

Android4.4 GUI系统框架之SurfaceFlinger 一.             Android GUI框架: SurfaceFlinger:每当用户程...
  • w401229755
  • w401229755
  • 2014-08-07 16:08
  • 24987

通过 dumpsys SurfaceFlinger 分析Android 系统图层

一、通过 dumpsysSurfaceFlinger 分析Android 系统图层: 从下面的dumpsys log看出当前系统有三个图层(红色部分是每个图层的坐标和大小),从最底层到上层分别是ImageWallpaper(壁纸), SurfaceView(视频小窗口), launcher(桌面)...
  • haima1998
  • haima1998
  • 2014-07-23 10:55
  • 6493

Android 5.1 SurfaceFlinger VSYNC详解

原文网址(转载请注明出处): http://blog.csdn.net/newchenxf/article/details/49131167VSYNC是自android 4.1版本以后加入的,目的是为了改善android的流畅程度。 其实网上已经有不少朋友对android SurfaceFlin...
  • newchenxf
  • newchenxf
  • 2015-10-14 21:15
  • 5393

Android SurfaceFlinger服务的消息循环过程源码分析

在Android SurfaceFlinger服务启动过程源码分析中详细分析了SurfaceFlinger的整个启动过程,我们知道,在SurfaceFlinger线程执行过程中,循环调用waitForEvent()函数等待消息事件的到来,而waitForEvent函数则是调用SurfaceFling...
  • yangwen123
  • yangwen123
  • 2013-11-09 14:19
  • 4738

android surfaceflinger研究

这周抽空研究了一下SurfaceFlinger,发现真正复杂的并不是SurfaceFlinger本身,而是android的display显示系统,网上关于这部分的介绍有不少,本不打算写的,但是发现还是记录一下研究代码的过程比较好,一是能够帮助自己理清思路,另一个原因就是以后当这块内容忘记的时候,能快...
  • michaelcao1980
  • michaelcao1980
  • 2015-01-29 13:44
  • 2466
    个人资料
    • 访问:21693次
    • 积分:347
    • 等级:
    • 排名:千里之外
    • 原创:8篇
    • 转载:38篇
    • 译文:0篇
    • 评论:0条
    文章分类