Android 新的流畅体验,90Hz 漫谈

一 概述

PC 上高刷新率屏幕很早就出来了,但是 Android 上高刷新率屏幕出现在 Android 手机上还只是这两年的事情,尽管雷蛇去年就推出了 120Hz 屏幕的手机,但是反响平平;而个人认为今年努比亚的红魔 3 和 OnePlus 的 7 Pro 推出的 90Hz 的屏幕才是 Android 手机目前这个阶段最好的选择,也是目前能显著提升用户体验的一个点。对高刷新率屏幕没啥概念的,可以去苹果体验店体验一下 120Hz 刷新率的 iPad Pro。

二 技术术语说明

2.1 什么是屏幕刷新率 ?

首先我们需要知道什么是屏幕刷新率,简单来说,屏幕刷新率是一个硬件的概念,是说屏幕这个硬件刷新画面的频率。

举例来说,60Hz 刷新率意思是:这个屏幕在 1 秒内,会刷新显示内容 60 次;那么对应的,90Hz 是说在 1 秒内刷新显示内容 90 次。至于显示的内容是什么,屏幕这边是不关心的,他只是从规定的地方取需要显示的内容,然后显示到屏幕上。

2.2 什么是 FPS ?

首先需要说明的是 FPS 是一个软件的概念,与屏幕刷新率这个硬件概念要区分开,FPS 是由软件系统决定的。

FPS 是 Frame per Second 的缩写,意思是每秒产生画面的个数。举例来说,60FPS 指的是每秒产生 60 个画面;90FPS 指的是每秒产生 90 个画面。

2.3 什么是 Vsync ?

VSync 是垂直同步( Vertical Synchronization )的简称。基本的思路是将你的 FPS 和显示器的刷新率同步起来。其目的是避免一种称之为”撕裂”的现象。
对比 60 fps :
60 fps 的系统 , 1s 内需要生成 60 个可供显示的 Frame , 也就是说绘制一帧需要 16.67ms ( 1/60 ) , 才会不掉帧 ( FrameMiss )。
90 fps 的系统 , 1s 内生成 90 个可供显示的 Frame , 也就是说绘制一帧需要 11.11ms ( 1/90 ) , 才不会掉帧 ( FrameMiss )。

2.4 什么是 Input 扫描周期 ?

Input 的扫描周期在 8 ms 左右, 不同的手机会有不同, 由于 Android 系统的 Display 系统是以 Vsync 为基础的, Input 事件也是在 Vsync 到来的时候才会去处理.

所以当一个 Vsync 周期为 16.67ms , Input 周期为 8ms 的时候, 可以保证一个 Vsync 周期内存在 2 个 Input 点。

当一个 Vsync 周期为 11.11ms , Input 周期为 8ms 的时候, 一个 Vsync 周期内可能存在 2 个 Input 点,也可能存在 1个 Input 点。这会带来不均匀的 Input 体验。

三 90Hz 用户体验

当屏幕刷新率和系统 fps 相对应的时候,才会带来最好的效果。从目前的硬件水平来看,90Hz 屏幕 + 90Fps 系统的组合才是目前最好的选择;其他的组合比如 90Hz 屏幕跑 60 fps 的系统,则会有屏幕刷新的时候,系统内容还没有准备好,只能显示上一帧这种情况;比如 60Hz 跑 90 fps 的系统,则会出现丢帧的情况,因为系统内容准备速度要比屏幕刷新速度快,势必有的帧绘制好却没有显示就被丢弃了。

另外 120Hz 的屏幕 + 120 fps 的系统肯定是未来发展的趋势,看看 iPad Pro 就知道了,但是目前的 Android 系统架构和硬件,都不足以支持 120Hz 的屏幕 + 120 fps 的系统,就算强行上,体验也会比较差,而且也会有很多的妥协。

相信到了 2020 年,120Hz 的屏幕 + 120 fps 的 Android 手机大家就可以买到了。

四 从系统角度来看 90fps 的工作原理

简单来说,Android 系统在工作的时候,有下面几个步骤:

  • 事件触发,比如说用户点击图标,或者滑动 List
  • 系统把事件分发给对应的 App,比如在桌面点击图标启动应用–对应点击事件,或者微信朋友圈滑动 – 对应滑动事件
  • App 拿到事件之后,对事件进行处理,不过有的是应用本身来处理,有的是系统帮忙处理,比如滑动事件的话,则会触发列表上下滑动,加载新的 Item 之类的
  • 一旦 App 内容有更新,则会触发 App 的 measure、layout、draw 操作,开了硬件加速的话则会使用 RenderThread 进行这一帧的绘制,绘制好之后的 Buffer 会给到 SurfaceFlinger 进行合成
  • SurfaceFlinger 把各个图层合成后通过服务交到屏幕这边进行显示。

需要说明的是,90fps 和 60fps 在流程上基本没有差别。

4.1 90fps 下 App 的渲染流程

在这里插入图片描述
注: Systrace 是按照时间线从左到右展示

4.2 90fps 下 SurfaceFlinger 的渲染流程

在这里插入图片描述
注: Systrace 是按照时间线从左到右展示

五 90fps 的优势和挑战

5.1 优势

一)90fps 会带来更加顺滑的用户体验, 60fps 的时候, 1s 才更新 60 张图,这 60 张图在 1s 内顺序播放从而让人的视觉认为是连续的画面在播放 , 但是人眼会比较挑剔 , 所以当看多了 90 fps 的画面, 即每秒播放 90 张画面的时候, 再回去看 60 fps 就会觉得卡顿, 不连贯。

二)高刷新率屏幕使用习惯了,会没法适应低刷新率的屏幕,这是一个不可逆的过程,在挑选手机的时候需要注意这一点。

三)另外随着用户更换手机的频率变低,买一台一步到位的手机还是比较重要的,顶级屏幕 + 大电池 + 顶级 SOC + UFS + 大内存。今年下半年会有不少这样的机器出现,目前还在观望的同志可以再等等。

5.2 挑战

一)性能

  • 90fps 的挑战主要在于性能,App 在 60fps 的时候,只需要 App 和 SurfaceFlinger 把每一帧处理的时间控制在 16.6 ms之内, 就可以保证不会掉帧 (当然由于 Triple Buffer 的存在, 偶尔超过也不会掉)
  • 到了 90fps , App 和 SF 都需要将一帧的时间压榨在 11.11ms 之内, 才可以保证不掉帧. 这里的两个挑战, 一个是 App 端, 一个是 SurfaceFlinger 及其相关的进程端 (加上 crtc 和 hw service)
  • 由于对性能要求比较高,主要是对 cpu 的性能要求比较高 (其次是 io 和 gpu ) , 所以 90fps 需要更加强劲的硬件做支撑 (高通 855 , UFS 3.0 ), 这也是为什么到现在 90hz 的屏幕 + 90 fps 的系统才得以出现并提供良好的用户体验 ( OnePlus 7 Pro). (所以 120 fps 的雷蛇,需要把一帧的时间压在 8.3 ms , 其硬件性能是不足以支撑的)

二)功耗

  • 90Hz 的屏幕会比 60Hz 的屏幕更加耗电,尤其在高分辨率的情况下,所以优化好使用时功耗,是后续厂商需要考虑的问题
  • 有些场景和 App 是不支持 90fps 的,这时候可以把系统的 fps 降低到 60
  • 有些场景用户为了省电,可以把屏幕分辨率从 2K 调整到 1080P

三)App 适配

  • 大部分 App 不用做什么事情,就可以在 90 fps 的系统上跑,但是是否流畅就只能各自发挥了,有些写的好或者本身就不是很复杂的 app,跑起来就很顺畅,有些 App 则在 60 fps 下表现很好,但是到了 90 fps 下就比较差
  • 大部分游戏都是自主控制刷新率的,要在 90 fps 的系统下跑,需要游戏厂商进行针对性的优化,使其可以跑 90fps,也可以流畅跑 90 fps
  • 其他场景,比如 WebView,SurfaceView 这些,则需要根据内容来做调整

(完)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值