美文网首页
Buffer管理

Buffer管理

作者: jxcyly1985 | 来源:发表于2024-07-17 23:52 被阅读0次

    /frameworks/native/libs/gui/

    platform\frameworks\native\libs\gui\BufferQueue.cpp
    platform\frameworks\native\libs\gui\BufferQueueCore.cpp
    platform\frameworks\native\libs\gui\BufferQueueProducer.cpp
    platform\frameworks\native\libs\gui\BufferQueueConsumer.cpp

    BufferQueue的dequeueBuffer

    上面的函数主要就是利用GraphicBufferAlloc去分配图形缓冲区的过程,中间会用到gralloc模块,以及GraphicBuffer的序列化和反序列化,反序列化unflatten()时还会调用gralloc在BufferQueue所在的进程将在surfaceflinger中申请的内存map注册过来(匿名共享内存)。
    到此,BufferQueue中已经申请到了内存,返回给Surface一个int的数组下标,看来这时候Surface还没有获取到任何图形缓冲区相关的东西。
    由于申请的内存是在BufferQueue所在的进程,接下来需要调用requestBuffer将buffer映射到Surface所在的进程

    图形缓冲区既可以使用内核的匿名共享内存来分配,这样可以让应用程序和SurfaceFinger进程共享操作,应用程序负责往图形缓冲区填充ui数据,SurfaceFinger进程负责一些处理(例如多个图层的合成)再送往帧缓冲区,进而显示在屏幕上。

    相关文章

      网友评论

          本文标题:Buffer管理

          本文链接:https://www.haomeiwen.com/subject/bgwcbrtx.html