当前位置:   article > 正文

Android SurfaceFlinger——GraphicBuffer的生成(三十二)_dequeue buffer 和 queue buffer

dequeue buffer 和 queue buffer

        通过前面的学习我们知道,在 SurfaceFlinger 中使用的生产者/消费者模型,Surface 做为生产者一方存在如下两个比较重要的函数:

  • dequeueBuffer:获取一个缓冲区(GraphicBuffer),也就是 GraphicBuffer 生成。
  • queueBuffer :把缓冲区(GraphicBuffer)放入缓冲队列中。

        这里我们就先来看看 dequeueBuffer() 函数,该函数通常由生产者调用,用于从 BufferQueue 中取出一个缓冲区以供渲染。这个函数会等待直到有一个缓冲区变为可用状态,然后将其标记为“出队”,并返回给生产者。生产者随后可以在该缓冲区上绘制图像数据。 

一、GraphicBuffer生成

        这里我们先来看一下 Surface 的核心对象之一 mSlots,这个对象是数组 BufferSlot。

1、BufferSlot

源码位置:/frameworks/native/libs/gui/include/gui/BufferSlot.h

  1. struct BufferSlot {
  2. BufferSlot()
  3. : mGraphicBuffer(nullptr),
  4. mEglDisplay(EGL_NO_DISPLAY),
  5. mBufferState(),
  6. mRequestBufferCalled(false),
  7. mFrameNumber(0),
  8. mEglFence(EG
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/酷酷是懒虫/article/detail/899537
推荐阅读
相关标签
  

闽ICP备14008679号