美文网首页
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