关于buffer的传递
来源:6-4 surface的绘制原理
全是甘货
2019-05-04
其实按我之前的理解以及老师的讲述,
我感觉,这个buffer,也就是用于承载绘制内容的一块空间,其实就是个内存空间。
而这个buffer从申请,写入,读取到清空,是怎么在本地app,surfaceFlinger,甚至硬件中(我猜的,也许surfaceFlinger这边就完成了画面的编码了,那硬件就只需要解码了)之间的传递呢。
其实buffer根本没有传递,传递的就是这个内存的地址,或者指向他的具柄,或者序号,总而言之,就是传递了标记而已,压根没传递过这块内存,也不需要传递。
写回答
1回答
-
风语
2019-05-04
谢谢您的提问,常规的buffer传递方式肯定是不行的,一方面性能不好,另一方面binder的缓冲区也装不下。这里非常巧妙的办法就是只传递了buffer的句柄,到了另一个进程再重新映射一下内存就好了,这样它和原来进程的buffer都能指向相同的物理内存地址。
00
相似问题