|「专利解密」一加 创新UI绘图优化方法


【嘉德点评】一加的UI绘图优化方法 , 通过去除UI绘图任务中每帧可省略的步骤 , 以此来获得最优绘图操作 , 从而提高了主UI绘图线程的绘图效率以及手机的显示效果 。
集微网消息 , 近日 , EISA(欧洲影音协会)颁布年度大奖 , 其中 , 由于一加8提高了高端智能手机的门槛 , 展示了尖端硬件技术如何与华丽的产品设计相契合 , 因此 , 一加8被评为最佳智能手机 。
而除了一加8所搭载的强劲的晓龙865处理器、120Hz屏幕刷新以及快充技术、后置四摄等 , 一加在软件方面的优化也是其能够获得这项大奖的原因之一 。
我们平时在使用手机时看到显示屏幕上的画面 , 实际上时经历了一个非常复杂的过程才出现在我们的面前 , 其中需要手机处理器进行大量的运算 , 以及需要UI绘图渲染进程进行大量的绘图渲染 , 才能够完成复杂的显示任务 。
非常直观的体验就是 , 在使用手机的过程中 , 有时往往会遇到掉帧、卡顿等情况 , 甚至不同的手机采用一样的处理器 , 有些手机容易发生卡顿 , 而有些手机就不容易 , 这就是软件的优化所带来的影响 。 今天要介绍的就是一加在19年3月29日申请的一项名为“UI绘图方法、装置和移动终端”的发明专利(申请号:201910251998.5) , 申请人为深圳市万普拉斯科技有限公司 。
根据目前该专利公开的资料 , 让我们一起来看看一加的这项UI优化方法吧 。
|「专利解密」一加 创新UI绘图优化方法
本文插图

如上图 , 为该专利发明的UI绘图方法的流程示意图 , 首先 , 系统中专门用于绘图的部件开始接收绘图任务(就是我们需要手机显示画面) , 并启动主绘图线程以及额外的绘图线程 。
而我们在手机上屏幕上看到的画面 , 实际上并不是直接出现在屏幕上的 , 而是需要在运行各种程序时生成一组绘图命令来进行绘图任务 , 通过这个命令来控制绘图线程进行绘图任务 , 其中对于主线程和额外线程的分配方法如下图所示:
|「专利解密」一加 创新UI绘图优化方法
本文插图

这种分配方法分为两个步骤 , 首先将上传绘图材质操作、帧缓冲绘制操作以及字型点阵图准备操作 , 分配给一个预先建立的额外绘图线程 。 其次 , 将减少过度绘制操作分配给主绘图线程 。
【|「专利解密」一加 创新UI绘图优化方法】这样 , 绘图任务中的主绘图线程 , 就可以通过执行这种减少过度绘制操作来减少同一像素上的重复绘制和渲染 , 从而避免多余操作导致绘图超时而导致的掉帧现象 。
我们接着回到UI绘图方法的主流程中 , 结合主线程和额外线程的分配方法 , 可知在系统中会预先设置减少过度绘制的策略 , 这也就是减少同一像素重复绘制的操作 。 而绘图任务的主绘图线程可以利用这种策略来对绘图任务每帧的操作进行检查 , 从中筛选出每帧绘图中可以省略的操作 。
最后 , 当去除掉这些可省略的操作后 , 就可以获得最优绘图操作 , 并最终按照最优绘图操作来进行绘图 。
|「专利解密」一加 创新UI绘图优化方法
本文插图

我们再来看看这种UI绘图方法的可省操作筛选的流程示意图 , 这个过程也包括两个步骤 , 首先要针对每一帧绘图中所有图层 , 通过主绘图线程由近到远筛选出每帧绘图任务中需要被下一图层覆盖的绘图(也就是发生变化的画面) , 并需要判断下一图层是否为不透明图层(也就是判断下一图层是不是会将当前图层覆盖) 。
如果下一图层为不透明时 , 就可以确定下一图层覆盖的绘图范围 , 并根据被覆盖的范围确定每帧绘图中可以省略的操作 。
例如绘图任务中包括有绘制文字、绘制栅格以及绘制帧缓冲图层等任务时 , 就可以通过建立额外线程去执行绘制任务所需的操作 。 然后通过主绘图线程判断这些任务是否可以省略 , 最终由主绘图线程进行绘图 。


推荐阅读