3ecommunications.net

Home > Timed Out > Timed Out Waiting For Hw Vsync Faking It

Timed Out Waiting For Hw Vsync Faking It

lewif的博客 目录视图 摘要视图 订阅 CSDN 2016博客之星评选结果公布   【系列直播】零基础学习微信小程序! 程序员12月书讯 博客的神秘功能 android graphic(4)—surfaceflinger和Vsync 2016-01-24 17:40 759人阅读 评论(0) 收藏 举报 本文章已收录于: 分类: Android 图形(21) The model is constructed by feeding consecutive hardware event timestamps to the DispSync object via the addResyncSample method. 在4.4中,新加了个DispSync,从上面的解释,DispSync根据特定屏幕硬件的vsync信号创建一个模型,利用这个模型去做定期的回调工作,回调的时间比vsync信号的到来稍晚一点,有个偏移量。为何要有个偏移量呢?因为这个模型会驱动多个事件,例如SF去合成图形,如果多个事件一起工作就会出现抢占cpu。所以对每个事件的偏移量设置为不同的,就能减缓这种问题的存在。 目前只是看代码的实现流程,还没对参数在真实机器上调试过,效果待观察。 整体流程 上面图形是Vsync信号从产生到驱动SF去工作的一个过程,其中绿色部分是HWC中的Vsync信号软件模拟进程,其他都是SF中的: 其中包含4个线程,EventControlThread,就像是Vsync信号产生的闸刀,当然闸刀肯定需要人去打开和关闭,这个人就是SF; VsyncThread,下面的代码只介绍软件模拟的Vsync信号,这个线程主要工作就是循环定期产生信号,然后调用SF中的函数,这就相当于触发了; DispSyncThread,是Vsync信号的模型,VsyncThread首先触发DispSyncThread,然后DispSyncThread再去驱动其他事件,它就是Vsync在SF中的代表; EventThread,具体的事件线程,由DispSyncThread去驱动。 主要步骤可以分为8步,下面的展开也基本是基于这个步骤。 HWComposer对象的建立 在SF的init()中, mHwc =