VSync的起源
显示屏上一帧画面的显示过程,是像素自上而下逐行扫描的过程,如果在上一帧的扫描还没有结束的情况下,屏幕又开始扫描下一帧的像素,那么就会出现如下图中撕裂(tearing)的情况。
这个问题最初是在PC上被重视和解决的,GPU厂商开发出了一种防止屏幕被撕裂的技术方案,全称Vertical Synchronization(中文名垂直同步,简称VSync)。基本思路就是在屏幕刷新之前向外提供一个信号,主机端根据此信号选择合适的策略完成画面的刷新,避免数据刷新和屏幕扫描不匹配(撕裂)的情况发生。所以VSync信号也叫做TE信号或VBlank信号。
下图展示了开启与关闭Vsync的状态下,屏幕画面的不同显示情况。这里需要先说明一下传统的显示架构,主要有三部分组成,第一部分负责渲染,包含CPU,GPU及一些系统模块;第二部分叫做帧缓冲,实质上是一块内存块,渲染完的数据会被保存在这块内存中;第三部分是屏幕,用来绘制帧缓冲上的数据。一般来说帧缓冲会有两块,一块叫做backbuffer,用来写入渲染数据,一块叫做frontbuffer,用来把渲染数据送给屏幕。这两块buffer的状态是不断变化的,也就是说当backbuffer被写入完数据等待显示时,它就变成了frontbuffer,而当frontbuffer的数据被显示完毕之后,它就变成了backbuffer。
VSync off:
VSync on:
具体来说,硬件视角中的VSync其实就是一个电平信号,Panel上有一个单独的引脚,主机端需要有一个单独的GPIO与之相连,获取其信号变化;软件视角中的VSync其实就是一个GPIO的中断,一般是上升沿的中断,软件根据此中断完成相应的显示逻辑。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
相关推荐
突然有个想法 RISC-V的起源是什么?
发表于 05-24 08:03
无铅焊接的起源:由于环境保护的要求,特别是ISO14000的导入,世界大多数国家开始禁止在焊接材料中使用含铅的成分。 日本在2004年禁止生产或销售使用有铅材料焊接的电子生产设备。欧美在2006年
发表于 08-11 14:21
一点关于混沌与控制起源的资料与大家分享。
发表于 03-01 22:06
与 LCDIFv2。 这是唯一的变化吗-VIDEO_MUX->VID_MUX_CTRL.SET = VIDEO_MUX_VID_MUX_CTRL_PARA_LCD_SEL_MASK;VSYNC、HSYNC、DOTCLOCK 是如何计算的?
发表于 03-14 09:42
CDMA技术的起源
扩频技术的起源要追溯到二战时期,这种思想的初衷是防止敌方对己方通讯的干扰。我们知道,由于窄带通讯采用的带宽只有几十kHz,只
发表于 06-01 20:25
•1806次阅读
CDMA技术的起源
扩频技术的起源要追溯到二战时期,这种思想的初衷是防止敌方对己方通讯的干扰。我们知道,由于窄带通讯采用的带宽只
发表于 06-15 09:40
•987次阅读
DIY的历史起源
DIY起源与用法DIY是英文Do It Yourself的缩写,可以正式译为自己动手做,但通常不需详译人们也大都能理解其意义。DIY原
发表于 01-21 10:47
•3488次阅读
为解决现有的起源图查询效率低和资源占用率高的问题,考虑起源信息和数据本身之间的关联关系以及起源信息内部结构特点,提出了一种基于双层索引结构的起源图查询方法。首先,面向
发表于 12-07 10:04
•0次下载
针对服务起源数据存储在关系型数据库和文档型数据库中无法提供高效的服务追踪以及采用图形数据库存储无法进行快速聚合运算等问题,提出了一种基于图的服务起源追踪机制。该机制以图形数据库存储服务起源数据为
发表于 12-17 10:58
•0次下载
PCB经验分享之噪声的起源
发表于 02-11 15:15
•0次下载
vsync是有两个信号的,
一个是vsync-app用于生成当前帧的数据;(CPU计算和GPU渲染)
一个用于消费数据(合成图像到Display上,vsync-surface) 。
发表于 02-02 11:18
•899次阅读
Android的显示系统一直使用双缓冲和VSync来防止屏幕画面发生撕裂现象,这也是其他系统的常规操作。Android的不同之处是将VSync运用到绘制系统中,作为黄油计划(Project
发表于 11-21 16:13
•378次阅读
VSync的虚拟化 由上面的介绍可以知道,VSync其实起源于显示屏,但是想想如果每个App和SurfaceFlinger都去从硬件驱动中直接监听VSync,那未免有点太复杂了,而且耦
发表于 11-21 16:23
•773次阅读
App与SurfaceFlinger是不同的进程,它们之间传递VSync的话涉及到进程间通信,而且VSync频率很高,App很多,所以VSync的分发效率要很高才行。Linux进程间通信方式总共
发表于 11-21 16:32
•960次阅读
VSync-offset/duration 虚拟化后的VSync还有一个好处,就是可以对VSync进行一些定制操作,offset就是其中之一。 接下来就是offset的定义,offset 分为两大类
发表于 11-21 16:57
•1200次阅读
评论