用简单通俗易懂的话来记录自己对Vsync的理解
1.前言
听说oppofindx2pro的屏幕刷新率是120Hz,那么屏幕的刷新率到底是啥?提高刷新率为啥就感觉顺滑了很多呢?
这是做的对比,大家可以看下
总体来说,是顺滑了很多,为啥在视觉上会感觉顺滑很多呢?从60HZ->120HZ,增加的是什么?增加的是刷新率,刷新率是如何实现的呢?Vsync闪亮登场。
2.Vsync
正如我们所知,平时我们使用的手机的的刷新率是60HZ,也就是每秒钟刷新60帧,每帧保持16.6ms。那是如何实现的呢?这里涉及HAL(Hardware Abstraction Layer),SurfaceFlinger,下图是传递流程。
1.Vsync信号图
安卓系统中VSync 信号如图所示。
1、屏幕产生的硬件 VSync: 硬件 VSync 是一个脉冲信号,简称hs Vsync
2、由 SurfaceFlinger 将其转成的软件 Vsync 信号:分为vsync_app和vsync_sf。
Vsync_app用于调用Choreographer.onVsync进行View的绘制工作,在onDraw()时,会调用Skia绘制图元,使用匿名内存传递给SurfaceFlinger进程。
Vsync_sf是将队列中的图元使用CPU/GPU进行展示在显示屏。
引入Vsync机制本质是协调vsync_app生成UI的图元数据和vsync_sf的合成图像,app是数据的生产者,surfaceFlinger是数据的消费者。vsync避免了Tearing现象。vsync信号有两个消费者,一个是app,一个surfaceflinger,这两个消费者并不是同时接收vsync,他们之间有个offeset.
2.vsync-offset引入原因
提高“跟手性”m
3.解惑
1.为啥120hz比60hz更流畅
实际上电影是24hz,120hz相当于1秒钟,你看到了120帧连续图片进行播放,而60HZ则只有60帧,肯定前者更清晰。
4.站在巨人肩膀
1.Vsync
2.Android 重学系列 SurfaceFlinger的概述
3.Android Systrace 基础知识 - Vsync 解读
4.android的渲染机制