揭秘 | 小米最新款12PRO"智能动态刷新率"技术原理
1. 背景
最新发布的小米手机12pro
提到了一个安卓系统上的新技术:智能动态刷新率
。这到底是个啥技术?让雷军同学可以大吹特吹。
要解释上面的技术,不得不提刷新率
和帧率
这两个概念。在平时的生活当中,你可能也会经常听到这两个术语,但千万不要把它们搞混淆,这是两个不同的概念,涉及到不同的技术领域。我相信,对于游戏玩家而言,这两个词更是高频的出现过,如果理解了这两个概念,那么对于游戏玩家购买电脑主机和显示器会有很大的帮助。
2. 刷新率
刷新率是计算机显示器、电视和其他显示设备中的技术术语,如下图所示:
其含义是指显示器每秒能够绘制新图像的次数,通常以赫兹(Hz)来测量,如果显示器的刷新率为60Hz,那么它每秒刷新图像60次。刷新率越高,显示器就越能显示屏幕上快速移动的物体,比如动作电影或运动节目。而传统显示设备的刷新率是60Hz,这是一个经过科学验证过的数值,当刷新率为60Hz时人类基本不会感知到屏幕上的图像闪烁。
不同的刷新率具体有什么不同呢,我们可以看下图所示的说明,不同的刷新率代表了每幅图像之间时间间隔不同,例如120Hz刷新率时,理论上每幅图片之间的时间间隔是8.33ms,这显然比30Hz刷新率时每幅图片之间的33.33ms的体验更加。
3. 帧率
首先,什么是帧
,什么决定了帧率
?帧
是一个单一的静止图像,然后将其与其他静止图像(每一个图像略有不同)组合成一个快速幻灯片,以实现自然运动的错觉。帧率
是一秒内显示的图像数量,我们用FPS
(Frame per second
)来表示帧率。
如上图所示,FPS是CPU/GPU与显示设备之间的一个概念,其核心为CPU/GPU。为了生成或渲染一个新的帧,你的CPU和GPU需要一起协同工作,CPU发送指令指定位置和场景中物体的纹理来生成图像,然后你的GPU按照你设定的分辨率将图像分割成像素,并将这些信息发送到显示器上。你的CPU和GPU越强大,它们每秒生成的帧数就越多,而我们看到的显示效果也就越顺爽丝滑。
4. 显示撕裂
现在我们知道了刷新率Hz表示显示器每秒钟刷新图像的次数,帧率FPS是指CPU/GPU每秒钟产生或绘制的帧数。
它们在物理空间上是两个独立的概念,显示器的刷新率(Hz)不会影响CPU/GPU输出的帧率(FPS)。
二者需要协同工作,才可以获取到一个较好的显示效果。
当帧率小于了刷新率,我们又不能获得顺爽丝滑
的显示效果。当然,在帧率小于刷新率时,我们可以让CPU或者GPU在空出来的时间做额外的事情,比如,提高图片显示的分辨率。
当帧率大于屏幕刷新率时,会造成屏幕显示撕裂的效果,俗称为tearing
。我们当然不希望让这样的显示效果呈现在我们的眼前,它已经不仅仅是降低我们感官体验了,而是出现了显示故障。
像下图这样,两帧图像同时出现在了显示器上,造成了显示的错位。
为了解决tearing
问题,基于CPU绘图的显示设备,应用层代码可以获取到DRM panel
的刷新率,然后强制帧刷新率等于屏幕刷新率。而通过GPU进行图像渲染输出的设备,常见的做法是引入vsync
机制。目前做的比较好的是NVIDIA G-SYNC
和AMD FreeSync
。
前者在显卡上放置了一颗用于vsync
通讯的芯片,可以调整显示设备的刷新率以支持显卡的帧率。后者是基于液晶显示器的自适应同步技术,不需要额外的芯片。
现在回头看小米的动态刷新率,他是根据不同的应用场景动态的改变帧率
,然后(注意这里:目前仅小米原生APP支持),基于帧率
动态的调整刷新率
,最终达到不同的显示效果,让用户获得到最佳显示体验的同时又可以降低手机的功耗。