赞
踩
在高通7x27平台上,surfaceflinger可以使用gpu/mdp/sw来做composition。因为mdp没有mmu,所以需要使用pmem才能正常工作。GPU可以通过mmu来使用非连续的内存,因此可以节省pmem的空间。
下面来简单的讲讲surfaceflinger的composition过程,每个surface都会分配一个内存空间,当surface需要更新时,给surfaceflinger发送消息,surfaceflinger的主线程收到消息后,从阻塞状态恢复,首先按照每个surface的深度值,从最上层的surface开始,计算所有surface的可视区、遮挡区等,计算完成后,再按照深度值,从最底层的surface开始依次composition到主surface上。这里,可以用前面提到的gpu/mdp/sw三种方法来做composition。最后,主surface绘制完成后,底层调用flip,通过mdp dma刷新到lcd panel上去。
默认情况下,系统会根据egl.cfg配置文件的内容决定是走GPU来做composition还是用mdp/sw来做composition。当决定走mdp/sw来做composition时,如果当前无法加载copybit库,则会用sw来做composition。否则,会使用mdp来做composition。
基本的过程就是这样,最后顺便提一下,在msm7x30上,架构有了很大的变化。首先,多了一个c2d的硬件;其次,mdp的硬件架构发生了很大的变化,不支持原先的ppp操作,hal层的copybit库其实底下改为调用了c2d硬件来操作。
后一篇我会仔细讲讲qualcomm的mdp模块。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。