首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[054]一加8 Pro如何优化120Hz屏幕

[054]一加8 Pro如何优化120Hz屏幕

作者头像
王小二
发布2020-06-08 12:11:56
1K0
发布2020-06-08 12:11:56
举报

前言

今天同事买了一台一加8Pro,当然话不多说,先拿来给我们研究一下,看看一加是如何优化120Hz屏幕的。

一、1加7 Pro上90hz的优化方案

首先我们先来看看90hz上如何优化的,采用的主要方法就是动态调整整体屏幕帧率,进到不同应用,调整屏幕帧率,以下是我之前总结的整体帧率切换的场景。

我将它命名为:屏幕动态调整帧率

1.1 小结

设置当中有60hz和90hz模式选项 设置为90hz选项之后,正常界面可以一直保持90hz模式,进入特定的应用或界面自动切换到60hz,退出特定的应用或界面自动切换回90hz 特定的应用主要和游戏,视频,时间相关

二、1加8 Pro上120hz的优化方案

正当我也认为一加8 Pro上会采用和1加7 Pro类似的方案的时候。我抓了一个trace,让我看到了1加8 Pro的另外一种方案。

我将它命名为:应用动态调整帧率 (我相信一加已经申请了专利,如果没有申请,我觉得我得赶紧写一个)

2.1 先来看看trace

新浪微博

状态栏

可以很明显的看到在同一时间中,vsync信号按照120hz上报

新浪微博按照120hz绘制 状态栏按照60hz绘制

我猜这样子设计的原因是:用户在刷微博的时候,让其他窗口按照60hz绘制,可以让出更多cpu和gpu资源给微博用,保证用户刷微博保持120hz。

2.2 小结

我推测1加是可能在Choreographer中动了一些手脚,而且我自己大概也可以写出demo代码了,可以在不整体调整屏幕帧率的情况下,让不同应用以任何可以整除120的帧率运行,例如60,30,40hz,由于整体帧率又是120hz,也不会出现长短帧的方案。

三、总结

通过研究可以发现,一加在90hz和120hz采用了两种不同的方案,而且这两个方案是可以同时工作的。只不过同时运行的时候逻辑会比较复杂,暂时我还不确定1加8 Pro是否会采用两种方案同时使用?因为手机已经还给同事了。

不管是什么方案,最终目的一致的:就是让应用的每一帧绘制渲染时间小于一个时间周期。

四、技术更新

1.我初步了看了一下代码,发现R上新增的setFrameRate的作用主要是标记不同的layer的帧率,可以提升效率sf合成的时候,通过遍历可见的layer 例如发现在120hz的屏幕上所有的layer的帧数都是30,sf就只需要按照30hz去刷新。

2.如果控制每一个应用的vsync信号,达到一加8的效果,关键是要调用EventThread.setVsyncRate接口 这个接口之前就存在了,只是目前源码中没有在应用级别主动调用这个接口,这个接口的主要作用是让vsync信号按照你要的帧率上报给app 例如屏幕是120hz的,但是app希望是60hz,所以只需要setVsyncRate(60),就可以控制单个应用的vsync周期,可以是<屏幕的帧率的任何值,为了不产生长短帧,建议是屏幕帧率的约数。

3.但是上述两个调整都不会影响屏幕的config,但是1加手机进入到不同应用,会去整体的设置新的config到屏幕,例如120hz和60hz,或者90hz和60hz,如果有错误的欢迎纠正!!!

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 一、1加7 Pro上90hz的优化方案
    • 1.1 小结
    • 二、1加8 Pro上120hz的优化方案
      • 2.1 先来看看trace
        • 2.2 小结
        • 三、总结
        • 四、技术更新
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档