Android性能优化系列--VSYNC

Android性能优化系列--VSYNC

转载:Android性能优化系列——VSYNC

概念

  1. VSYNC, vertical synchronization
  2. Refresh Rate 屏幕一秒钟刷新的次数,由硬件决定,单位Hz,一般是60Hz
  3. Frame Rate GPU在一秒内绘制的帧数,单位fps(Frames per second)

具体解释

GPU获取图形数据进行绘制,硬件将绘制好的数据呈现在屏幕上,为了使画面在屏幕上流畅的显示,需要保持Frame Rate在60以上,也就是一次draw操作的时间不超过16.67ms。

Frame Rate与Refrash Rate不会总保持一致,如果GPU绘制速度大于屏幕刷新速度,就会出现截断现象,这是因为GPU使用一块内存绘制帧数据,新的图像帧会从上到下一行一行覆盖旧图像帧,当屏幕刷新时并不知道缓冲区现在的数据状态,这样就抓取了GPU中还没有绘制完的一帧数据。


img1
img1

解决方法是双缓冲技术(double buffering),GPU首先将帧数据写到back buffer中,然后把它拷贝到另一块区域frame buffer。当绘制下一帧时,数据先写到back buffer,屏幕刷新时,只从frame buffer中获取。如果GPU正在写back buffer,这时候来了刷新屏幕,VSYNC就会阻止这个拷贝过程。

VSYNC or vertical synchronization,will basically keep this copy operation from back buffer to frame buffer from happening if the screen is in the middle of refreshing from it.

img2
img2

当GPU的绘制速度小于屏幕刷新速度,也就是FrameRate < RefreshRate,就会在屏幕上看到卡顿现象。所以要尽量保证一帧的绘制时间小于16ms。

Reference

Android Performance Patterns: Understanding VSYNC

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 总结Android渲染部分的工作原理,其中参考了如下网址:http://www.androidpolice.com...
    xuluqxulu阅读 5,090评论 0 55
  • 本篇文章是基于谷歌有关Graphic的一篇概览文章的翻译:http://source.android.com/de...
    lee_3do阅读 7,500评论 2 21
  • 多数情況下,卡顿发生的根本原因,是渲染问题,即系统无法及时的完成复杂界面的渲染操作。系统会尝试每个16ms对UI进...
    i冰点阅读 3,151评论 0 5
  • 为了理解App是如何进行渲染的,我们必须了解手机硬件是如何工作,那么就必须理解什么是VSYNC。 在讲解VSYNC...
    Viking_Den阅读 5,146评论 1 8
  • 我陷在你的城里, 着一身秦汉的衣衫, 夏至春晚, 冬来秋寒, 江畔的驳船, 寻不见桃花寄来的信笺。 我陷在你的城里...
    向日葵爱呀爱太阳阅读 397评论 3 1

友情链接更多精彩内容