关于buffer的传递

来源:6-4 surface的绘制原理

全是甘货

2019-05-04

其实按我之前的理解以及老师的讲述,
我感觉,这个buffer,也就是用于承载绘制内容的一块空间,其实就是个内存空间。

而这个buffer从申请,写入,读取到清空,是怎么在本地app,surfaceFlinger,甚至硬件中(我猜的,也许surfaceFlinger这边就完成了画面的编码了,那硬件就只需要解码了)之间的传递呢。

其实buffer根本没有传递,传递的就是这个内存的地址,或者指向他的具柄,或者序号,总而言之,就是传递了标记而已,压根没传递过这块内存,也不需要传递。

写回答

1回答

风语

2019-05-04

谢谢您的提问,常规的buffer传递方式肯定是不行的,一方面性能不好,另一方面binder的缓冲区也装不下。这里非常巧妙的办法就是只传递了buffer的句柄,到了另一个进程再重新映射一下内存就好了,这样它和原来进程的buffer都能指向相同的物理内存地址。

0
0

剖析Framework面试 冲击Android高级职位

一手助力冲刺Android高级职位,一手把握系统底层原理,理清面试思路,提升技术段位

1406 学习 · 187 问题

查看课程