打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
surfaceflinger中的显示内存管理类
分类: 移动开发之Android 2010-09-17 21:02 5084人阅读 评论(1) 收藏 举报

1.  Android中的应用层每申请一个Surface,最终会通过jni和binder调用到surfaceflinger中,最终会创建一个Layerxxx(Layer,LayerBuffer,LayerBlur,LayerDim)类,最通常的是Layer类,在Layer类中有一个成员变量:

 

            sp<GraphicBuffer> mBuffers[NUM_BUFFERS];

 

Layer的成员函数SetBuffers()初始化了该数组:

[c-sharp] view plaincopy
  1. for (size_t i=0 ; i<NUM_BUFFERS ; i++) {  
  2.     mBuffers[i] = new GraphicBuffer();  
  3. }  

 

其中,NUM_BUFFERS的定义是2,也就是说,android为每个Layer分配了两个显示缓冲,以便于做出PageFlip的动作。

 

2.  GraphicBuffer作为显示内存的管理类,负责显示内存的申请和释放。

 

 

分配和释放显存有辅助类GraphicBufferAllocator完成,lock和unlock则是由辅助类GraphicBufferMapper来完成。这两个辅助类都会调用HAL层的模块gralloc来完成和底层驱动程序的交互。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Android SurfaceFlinger中的Layer,LayerDim,LayerBlur,LayerBuffer
Android中的GraphicBuffer同步机制
Android核心分析(25)------Android GDI之共享缓冲区机制
深入理解Android图形系统
Android应用程序与SurfaceFlinger服务的关系概述和学习计划
Android libcutils库中整数溢出导致的堆破坏漏洞的发现与利用 – 360移动安全
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服