0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

VSync的起源是什么

麦辣鸡腿堡 来源:OPPO内核工匠 作者:Phil 2023-11-21 16:01 次阅读

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的中断,一般是上升沿的中断,软件根据此中断完成相应的显示逻辑。

图片

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Android
    +关注

    关注

    12

    文章

    3851

    浏览量

    125641
  • PC
    PC
    +关注

    关注

    9

    文章

    1950

    浏览量

    152797
  • 信号
    +关注

    关注

    11

    文章

    2639

    浏览量

    75388
收藏 人收藏

    评论

    相关推荐

    无铅焊接的起源

    无铅焊接的起源:由于环境保护的要求,特别是ISO14000的导入,世界大多数国家开始禁止在焊接材料中使用含铅的成分。 日本在2004年禁止生产或销售使用有铅材料焊接的电子生产设备。欧美在2006年
    发表于 08-11 14:21

    混沌与控制的起源

    一点关于混沌与控制起源的资料与大家分享。
    发表于 03-01 22:06

    如何驾驶所有五个R,G,B,HSYNC和VSYNC

    你好我打算在sp605中实现sobel边缘检测(我有这个开发板)我想去寻找简单的vga驱动程序我可以将R,G,B和HSYNC连接到J55中可用的四个I / O,但不能连接VGA所需的VSYNC,因为J55只有四个I / O.请建议我如何驾驶所有五个R,G,B,HSYNC和VSYN
    发表于 10-29 08:13

    VSYNC、HSYNC、DOTCLOCK是如何计算的?

    与 LCDIFv2。 这是唯一的变化吗-VIDEO_MUX->VID_MUX_CTRL.SET = VIDEO_MUX_VID_MUX_CTRL_PARA_LCD_SEL_MASK;VSYNC、HSYNC、DOTCLOCK 是如何计算的?
    发表于 03-14 09:42

    CDMA技术的起源

    CDMA技术的起源 扩频技术的起源要追溯到二战时期,这种思想的初衷是防止敌方对己方通讯的干扰。我们知道,由于窄带通讯采用的带宽只
    发表于 06-15 09:40 876次阅读

    DIY的历史起源

    DIY的历史起源 DIY起源与用法DIY是英文Do It Yourself的缩写,可以正式译为自己动手做,但通常不需详译人们也大都能理解其意义。DIY原
    发表于 01-21 10:47 3273次阅读

    电子狗的起源

    电子狗的起源,感兴趣的小伙伴们都可以看看。
    发表于 07-28 10:49 16次下载

    双层索引的起源图查询方法

    为解决现有的起源图查询效率低和资源占用率高的问题,考虑起源信息和数据本身之间的关联关系以及起源信息内部结构特点,提出了一种基于双层索引结构的起源图查询方法。首先,面向
    发表于 12-07 10:04 0次下载
    双层索引的<b class='flag-5'>起源</b>图查询方法

    基于图的服务起源追踪机制

    针对服务起源数据存储在关系型数据库和文档型数据库中无法提供高效的服务追踪以及采用图形数据库存储无法进行快速聚合运算等问题,提出了一种基于图的服务起源追踪机制。该机制以图形数据库存储服务起源数据
    发表于 12-17 10:58 0次下载
    基于图的服务<b class='flag-5'>起源</b>追踪机制

    PCB经验分享之噪声的起源

    PCB经验分享之噪声的起源
    发表于 02-11 15:15 0次下载

    简述Vsync信号和View绘制流程之间的关系

    vsync是有两个信号的, 一个是vsync-app用于生成当前帧的数据;(CPU计算和GPU渲染) 一个用于消费数据(合成图像到Display上,vsync-surface) 。
    的头像 发表于 02-02 11:18 641次阅读

    Andriod中Vsync的背景

    Android的显示系统一直使用双缓冲和VSync来防止屏幕画面发生撕裂现象,这也是其他系统的常规操作。Android的不同之处是将VSync运用到绘制系统中,作为黄油计划(Project
    的头像 发表于 11-21 16:13 156次阅读
    Andriod中<b class='flag-5'>Vsync</b>的背景

    VSync的虚拟化与同步

    VSync的虚拟化 由上面的介绍可以知道,VSync其实起源于显示屏,但是想想如果每个App和SurfaceFlinger都去从硬件驱动中直接监听VSync,那未免有点太复杂了,而且耦
    的头像 发表于 11-21 16:23 270次阅读
    <b class='flag-5'>VSync</b>的虚拟化与同步

    Andriod中VSync的分发

    App与SurfaceFlinger是不同的进程,它们之间传递VSync的话涉及到进程间通信,而且VSync频率很高,App很多,所以VSync的分发效率要很高才行。Linux进程间通信方式总共
    的头像 发表于 11-21 16:32 250次阅读
    Andriod中<b class='flag-5'>VSync</b>的分发

    VSync offset定义的方法

    VSync-offset/duration 虚拟化后的VSync还有一个好处,就是可以对VSync进行一些定制操作,offset就是其中之一。 接下来就是offset的定义,offset 分为两大类
    的头像 发表于 11-21 16:57 394次阅读
    <b class='flag-5'>VSync</b> offset定义的方法