专栏名称: 鸿洋
你好,欢迎关注鸿洋的公众号,每天为您推送高质量文章,让你每天都能涨知识。点击历史消息,查看所有已推送的文章,喜欢可以置顶本公众号。此外,本公众号支持投稿,如果你有原创的文章,希望通过本公众号发布,欢迎投稿。
目录
相关文章推荐
郭霖  ·  一文了解 Gradle 插件 ·  5 天前  
今天看啥  ›  专栏  ›  鸿洋

Android14 VSync 机制深入解读

鸿洋  · 公众号  · android  · 2024-09-04 08:35
    

主要观点总结

文章详细解析了Android系统中VSync机制的工作原理,从VSync的基本概念、垂直同步技术、在PC游戏中的应用,到Android系统中VSync机制的实现细节,包括其硬件和软件的同步过程。同时,文章还介绍了VSync在SurfaceFlinger中的初始化、分发过程,以及App如何请求和接收VSync信号。最后,通过一系列图表和流程图,直观展示了VSync在Android系统中的工作流程和关键节点。

关键观点总结

关键观点1: VSync基本概念与垂直同步技术

VSync即垂直同步,是一种同步显示刷新率和图形渲染的技术,用于防止画面撕裂。在PC游戏中,开启VSync可以避免游戏画面撕裂,但可能增加输入延迟。

关键观点2: Android VSync机制实现细节

Android系统中,SurfaceFlinger负责VSync信号的生成和分发。VSync信号通过硬件和软件的同步过程,确保图形渲染和显示刷新的同步。SurfaceFlinger通过初始化、分发VSync信号,与App进行通信,确保图形渲染的同步。

关键观点3: App请求和接收VSync信号

App通过Choreographer向SurfaceFlinger请求VSync信号,SurfaceFlinger生成VSync信号后,通过EventThread分发到App。App接收VSync信号后,根据信号的时间点进行图形渲染。

关键观点4: SurfaceFlinger的VSync初始化与分发

SurfaceFlinger通过初始化VSync机制,设置硬件VSync回调,生成软件VSync信号。通过VSync信号的分发,SurfaceFlinger与App进行通信,确保图形渲染和显示刷新的同步。


文章预览

如果你玩过 PC 上的大型游戏,应该知道游戏中通常有一个叫做 垂直同步 的选项,如果不开这个选项,游戏过程中可能有画面撕裂的情况。 画面撕裂 VS 画面不撕裂 图片来自 https://sspai.com/post/63440 左侧是画面撕裂的情况,右侧是正常情况。 这种情况出现的主要原因是屏幕的刷新和主机的渲染不同步,假如,你是富哥,买了一张 4090 显卡,主机渲染图形非常快,但是你的显示器还是创业初期闲鱼捡的垃圾,刷新很慢(60hz),你游戏的时候,没有开垂直同步,当一帧还没全部刷新到屏幕上,下一帧数据又来了,显示器通常会中断当前帧的刷新,去刷新下一帧,这个时候,显示器上显示的就是当前帧和上一帧组合的图像,如果显示内容变化较大,你就能察觉到画面的撕裂。 这个问题最初是在 PC 上被重视和解决的,GPU 厂商开发出了一种防止屏幕被撕裂 ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览