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

sp<GraphicBuffer> mBuffers[NUM_BUFFERS];

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

for (size_t i=0 ; i<NUM_BUFFERS ; i++) {
mBuffers[i] = new GraphicBuffer();
}

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

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


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




更多相关文章

  1. 调用C++底层 Thread & Mutex 的注意事项
  2. Android中onInterceptTouchEvent与onTouchEvent
  3. Android调用测试
  4. Android(安卓)ActionBar中的按钮添加旋转动画
  5. 一个不错的启动菜单显示屏动画效果
  6. Android开发便签9:在android资源文件中定义字符串数组
  7. Android(安卓)JsBridge 源码解析
  8. Android(安卓)中 ListView Adapter getView 被多次调用问题 解决
  9. 【Android】ToolBar设置NavigationIcon不显示异常或自定义失败异

随机推荐

  1. Android ApiDemos示例解析(91):OS->SMS M
  2. Android getText(@string/a)和直接使用字符
  3. Android应用开发提高系列(5)――Android动
  4. Android内核剖析
  5. Android UI加速
  6. Android 水波纹点击效果
  7. android:layout_weight属性
  8. Android中的进程生命周期
  9. android 默认签名 debug签名
  10. android的selector(背景选择器)