不只是LPTO,iPhone13ProProMotion全面
前言
先回顾下iOS平台在刷新率和触摸采样率的历史:
很多人的印象里,iPadPro2017是移动平台上最早使用高刷新率的设备,直接定义了ProMotion这个高刷新率的体验。
但是实际情况是:iPadPro初代其实就有了动态屏幕刷新率:为了降低12。9寸大屏对电池续航的冲击,在画面静止的时候会减半到30Hz刷新率(驱动版)。并且为了实现更低的笔触延迟,支持了120Hz的输入刷新率。
2017年iPadPro引入120HzProMotion,其实是为了缓解大屏幕响应速度较慢的问题,从而有效降低输入延迟,特别是提升ApplePencil的使用体验。但是此时的ProMotion仍然只是在几个刷新率之间切换。
到了iPhoneX升级为了OLED面板,120Hz的触摸采样率搭配更高的响应速度,实际上相比原先的LCDiPhone在触摸体验上有了显著提升。
AppleWatchSeries5为了实现低功耗常亮屏幕,引入了LTPO显示面板,允许刷新率降低到1Hz,从而减少常亮显示的功耗。
如今,iPhone13Pro将120Hz的ProMotion体验带到了手机,而且带来了AdaptiveSync。
但是更高的刷新率可能会耗费更多的电力,因此整体的优化策略可以用Apple这句话简单概括:在你需要时提供高帧率,在不需要时为你省电,这才是我们为你贴心提供的方案。
概念解释
解释这句话之前,还是得明确两个概念:屏幕刷新率和绘制速率。
绘制速率代表你的CPU、GPU产生画面的速率,比如说传统的UI都是60fps;视频内容里,电影是24fps,流媒体常见是29。9730fps;游戏的帧率通常取决于GPU性能,一般最高帧率以屏幕帧率(常见为60)或者其一半(30)为限(所谓目标帧率)。很显然产生越多的画面,就需要CPUGPU耗费更多的电力;同理,降低绘图速率就能有效省电。
屏幕刷新率代表屏幕像素改变的速率。比如常见60Hz就代表一秒钟要改变60下,每下间隔约16。67ms,通过降低这个速率就可以降低屏幕的耗电量。LTPO:刷新率下探的功臣
但是传统LTPS像素存在漏电的问题,这会导致像素的内容无法长时间维持,需要外部信号以相对较高的频率对像素的电容进行充电以维持内容,这就导致LTPS面板刷新率无法进一步下降。而LTPO解决了这个问题,在外部信号刷新率极低的时候也能维持住画面,从而降低功耗。AdaptiveSync:自适应同步
有的朋友说,Android有可变刷新率。
没错,Android确实有根据交互和内容去动态调整刷新率的机制。比方说你在看视频,屏幕刷新率会匹配视频帧率,这是自适应内容匹配;当你戳屏幕交互的时候,刷新率会立刻恢复,这是自适应交互。
但问题是,Android是固定帧率的可变刷新率。
这句话听上去比较绕,我用一张图表示:
这张图表示两种屏幕刷新率的状态,可以看到屏幕的刷新周期是固定的。当绘制速率不够的时候,可能120Hz屏幕的两帧都显示的是相同的内容。
而自适应同步屏幕的刷新周期则可以自由变化,比如这块屏幕的刷新周期从825ms不等,说明刷新率可以在40120Hz变化。
我们知道PC和游戏机上有所谓FreeSyncGSyncVRR之类的技术,他们的作用其实就是让屏幕刷新去匹配绘制速率,从而避免因为两者不一致出现画面撕裂,或者是为了避免撕裂引入垂直同步,导致输入延迟增大。
当绘制出现延迟的时候,传统固定刷新率就必须让两帧显示一样的内容,这会产生画面卡顿;而自适应刷新率可以接受这额外的延迟
另外一个很有用的场景就是当游戏中的场景出现变化:比如从场景复杂度较低的野外转向城市,那么游戏的帧率可能会出现变化,自适应同步就能实现两种场景的顺滑切换。
自适应同步技术已经能支持最新的iPhoneProiPadPro,以及连接了支持FreeSync显示器的Mac,从而带来更爽更流畅的游戏体验。
图为WWDC21制作,此时iPhonePro暂时没有AdaptiveSyncA15:强劲性能和出色效能
刚才主要都是围绕屏幕显示方面,想要搞清楚实际体验,我们还是得搬出PC上衡量输入延迟的timelinechart:
这是PC上一种最差情况的输入延迟的示意图。mouselag对应移动平台的触摸延迟,这和触摸IC的性能(包括但不限于采样率)相关CPUTime对应CPU处理输入并做出反应的延迟,自然CPU越强,这个延迟就越低GPUTime代表GPU绘制的延迟,这在游戏中更为突出,更高的GPU性能就能降低延迟FrameTransmission代表传输的延迟,和显示器本身的刷新率规格相关(16。67ms相当于60Hz)buffervsync:代表垂直同步缓冲的延迟,即通过这个延迟达到显示器刷新率匹配内容渲染速率,从而避免画面撕裂的情况,目前的FreeSyncGSyncVRR等技术能通过动态显示器刷新率实现两者的同步,从而避免掉这个延迟LCDResponsetime:屏幕响应延迟,这和屏幕本身的材质还有驱动形式有关,就比如目前的折叠屏的响应总是慢的吓人。
很显然,120Hz能大幅度降低每一帧的传输延迟,更高的采样率也能让画面更跟手。但是CPUGPU在这个timeline中也占据了很大一部分,所以不能光说120Hz就一定更跟手,也许因此你会感觉到画面很流畅,但是如果说CPU不能完全带的动,轻则流畅但是不跟手,重则出现掉帧卡顿。
所以光靠高刷屏幕不见得体验就一定好,还需要处理器够劲,系统软件优化足够到位,中间任何一环掉链子,都会出现很多厂商120Hz但是实际体验还是拖泥带水的问题。
有的朋友可能会说:既然要流畅,那我们就让SoC频率更高,加强散热,做大电池,这样总爽了吧?
然而移动平台上的能耗控制又是一个很复杂的问题。理论上确实可以这么做,但是机器的重量、发热都会不理想。
所以这代A15引入了LPDDR5内存,GPU规格提升到了5核心,CPU仍然维持2性能4效能的设计,不管是性能还是效能核心都是业界的顶级水平。
更重要的是在于团队合作:
iOS15:从动画到手势,深度优化
前面说了游戏等应用支持了自适应同步,但是传统App仍然遵循的是固定刷新率变化,这就涉及到一个问题:当动画进行到一半的时候,刷新率突变了,如何避免动画出现进度跳跃。CADisplayLink:动画流畅、稳定的核心
Apple在前两年推出了针对可变刷新率屏幕的定时器:CADisplayLink,为可变刷新率场景带来了一系列变化。
第一个改进是更好的稳定性,从而避免传统定时器受到系统jitter的影响。
第二个改进是,完全根据屏幕刷新进行触发,保证在不同刷新率下的动画速率一致。
第三是帮助实现在刷新率突变的时候维持正确的动画进度,防止突然跳变。
另外iOS15中,每个触控手势的速度会根据你手指移动的速度动态调整,从而让操作更爽快。
CellPrefetching:内容加载,抢先一步
我们在使用App的时候经常会见到各种横向和竖向滚动的元素交互:随着手指的移动,新的内容也会加载出来,旧的内容占据的资源会被释放。
这就涉及到两个问题:如果手指运动的太快,那么可能会碰到很多未加载的区域,用户不得不等待在设备性能受限的情况下,交互和加载同时进行,可能会引发卡顿
所以在新的iOS15SDK中(包括macOSCatalyst),list和collection的元素部件有了改进的预加载行为。
有了预加载之后,可以避免出现滚动过快导致到尽头出现大量未加载和到底的尴尬情况。
更重要的是,这样的改变改善了性能和功耗表现,让你在120Hz高刷下滚的更爽,但不必让CPU维持高频率去保持流畅。总结
从上面一系列技术里,我们得以窥见Apple如何处理好体验和续航的关系。我们看到的是iPhone13Pro从屏幕到SoC,从iOS到App,都已经为迎接低功耗高刷做好准备。
目前唯一需要补上的短板,就是iPhone的常亮屏幕功能,希望WWDC22能一览真容。