先上结论,是屏幕倒装的问题,但不少手机屏幕模组都是倒装的,是个软件问题,不是硬件问题:

看到一篇文章来自:知乎 - 发现魅族PRO6屏幕上下部分不同步

一是色彩似乎有点问题,不知道是不是因为亮度不够,色彩饱和度不高,尤其是红色似乎比较暗。比如网易云音乐的图标,本来应该是高饱和的红色,看起来就成了深红色。

二是屏幕有点上下部分不同步。我以前用过 LG G Pro,这个手机就有比较严重的不同步问题。表现在左右滑动时屏幕下部总是比上部先响应。于是本来矩形的画面就倾斜变成了平行四边形。

这并不是故意做出来的特效,确实是不同步,任何画面左右滑动都能看到。同时 PRO5 和 MX5 也有这样的问题,PRO5 最明显 PRO6 其次,MX5 最不明显。

需要说明一点:任何一个屏幕在高速摄像机下都能看到这种不同步现象,并不是特例,只不过这里肉眼就可以察觉。视频是 60 帧的,逐帧分析了一下,基本屏幕上部比下部延迟 1 帧,也就是大约 16.6ms。要说这个问题严不严重?不严重。我的 G Pro 问题要更明显,但是用个两三天就习惯了,习惯以后很难察觉到有问题。但是如果用惯了其他手机突然换过来就会明显感觉到异样。

我们的屏幕基本结构都是这样的。这个点阵不能同时控制里面的每一个像素,因为地址线不够。只可以同时控制每一行的每个像素(子像素)。所以屏幕工作的时候显示的内容是一行一行扫描上去的。于是从扫第一行开始到扫完最后一行就有一个时间差。所以我们就能看到上下部分不同步的现象,总要有一端比另一端先响应。哪边先响应取决于从哪边开始扫。PRO 5 就是反过来的,上部先响应。

但是其实我还不太明白为什么其他屏幕这种不同步问题不明显。同样是 60Hz 的刷新率,60Hz 的扫描频率,扫描一帧的时间是不一样的吗?

根据我了解的 LCD 控制器参数,扫描一帧的时间是 (xres + left_margin + right_margin) * yres * pixclock,然后每一帧开扫之前需要等待 upper_margin * pixclock,每一帧扫完后需要等待 lower_margin * pixclock。帧扫描频率相同的情况下如果扫描每一帧用的时间不同,那么就是每一帧前后等待的时间不同。扫描一帧用的时间越短,等待时间就越长,同时也就意味着 pixclock 越小,也就是控制器时钟频率越高。那是不是也说明这样的屏幕面板造价更高?

根据此文章得出,一加的屏幕可能在倒装的时候没有同步找三星重写屏幕 IC 的驱动固件,本来应该从上到下扫描,结果倒装以后没更新过来,扫描顺序变成从下到上,而人眼都是从上到下查看,看到了明显的拖影,就是所谓的果冻效应。

当然还有一种可能是屏幕的驱动 IC 本身质量有问题,导致显示延迟很大,要证明只需要让用户反过来使用有没有相同的故障就知道了。

还有一个知识,Android 的图形输出非 Windows/mac/Linux 下的 Server/Client+窗口管理器模式,原理类似于 Linux 下的 Framebuffer 帧缓冲输出,在 Linux 纯控制台模式下看过图片/电影的应该能理解是怎么一回事,就是说屏幕上直接像素输出。