[RK3399][Android7.1] 改进显示系统

平台 内核版本 安卓版本
RK3399 Linux4.4 Android7.1

Vsync

要想使得用户有较好的视觉体验,达到60FPS是必不可少的条件,相当于每16ms就要刷一幅图。

没有Vsync机制时

在这里插入图片描述

优化一:Vsync时强制开工

在这里插入图片描述

优化二:triple buffer

如果数据量太大,可能导致GPU未能在规定时间内完成,那么可能会导致后续所有的buffer都混乱掉
在这里插入图片描述

增加一个buffer,在Jank期间CPU在C Buffer中构造数据,当GPU构造完B Buffer后,GPU就可以继续构造C Buffer的数据,此时显示GPU刚刚构造完的B Buffer…
在这里插入图片描述

优化三:Vsync虚拟化

  • app->SF->Display,app生成新画面后,在下一个Vsync到来时,SF才能合并新画面;SF合并完新画面后,在下一个Vsync到来时才能送给Display。这一次操作就花了32ms,导致画面十分卡顿

  • 根源:所有单位在Vsync到来时才开始工作

  • 解决方法:让SF在APP就绪后,及时开工,这就使得最多有16ms的延迟
    在这里插入图片描述

发布了247 篇原创文章 · 获赞 93 · 访问量 12万+

猜你喜欢

转载自blog.csdn.net/qq_33487044/article/details/91345046