垂直同步,VBlank,双缓存笔记

文章讲述了显示器的工作原理,包括逐行扫描、帧率和刷新率的概念,以及帧缓存如何影响画面显示。当帧率与刷新率不匹配时,可能导致画面撕裂问题。垂直同步是一种解决撕裂的方法,确保BufferSwap在显示器扫描点重置时进行,以保持画面流畅。
摘要由CSDN通过智能技术生成
现代显示器一般用逐行扫描,扫描点从右下角挪回到左上角的过程称为VBlank,帧数指的是显卡一秒钟渲染好了多少张画面发给显示器,刷新率指的是显示器逐行扫描画面的速度(60hz指的是显示器一秒钟逐行扫描了多少张画面),为了使一个波动的输出帧数匹配固定的屏幕刷新率,我们就需要使用帧缓存。
默认情况有两个帧缓存,FrontBuffer和BackBuffer,显卡先把后缓存填满,然后后缓存与前缓存交换(Buffer Swap),显示器显示前缓存内容。显示器正在显示过往画面A,并且正在逐行扫描前缓存中的画面B,显卡正在渲染画面C,假设显卡在显示器扫描完B之前渲染完了C,此时前后缓存交换,显示器扫描完B的一部分就开始扫描C画面,这就是画面撕裂(帧率高于刷新率)。
若刷新率高于帧率,则上述情况就变成了显示器早早扫描完了B画面,显卡还没渲染好,前缓存还是B,那显示器只能继续扫描B,还没扫完第二次B的时候显卡渲染好了,发生Buffer Swap,然后前缓存变成C,显示器开始接着画C,所以看到的就是第一帧是完好的B,第二帧一部分B一部分C,还是撕裂。

所以帧率与刷新率不匹配就会发生撕裂现象。

垂直同步:是解决撕裂的一种方法。它强制Buffer Swap发生在显示器的VBlank(扫描点重置阶段)。相当于变成了显卡要等显示器准备好了(扫描点在左上角)才做Buffer Swap。当显卡渲染帧率低于显示器刷新率的时候,就会发生显示器重复扫描前缓存画面的情况,画面就不流畅。
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
DRM(Direct Rendering Manager)是一个用于管理图形硬件的设备驱动程序,它负责处理与图形硬件交互的各种任务。vblank(垂直同步信号)是显示器和图形硬件之间的一个信号,用于在显示图像过程中的垂直复位时同步图形渲染。 在DRM驱动中,vblank信号起着很重要的作用。首先,它用于同步显示器和图形硬件的工作。在每一个显示周期的垂直复位时,vblank信号触发图形硬件停止渲染,将图像传输至显示器并进行显示。这样可以避免因显示器和图形硬件之间的不同步而导致的图像撕裂或者其他视觉问题。 另外,vblank信号还用于同步图形渲染和图像缓冲区的切换。在传统的缓冲渲染中,图像渲染过程和显示过程是完全分离的。图像渲染完成后,将其切换到后备缓冲区,并在vblank信号期间将后备缓冲区与前缓冲区进行交换。这样可以确保在显示器下一次vblank信号期间,新渲染的图像将完整地显示出来,从而避免产生图像撕裂现象。 DRM驱动中的vblank信号的管理和处理包括定时中断的生成、vblank事件的处理和回调函数的调用等。通过这些机制,DRM驱动能够更好地进行图形硬件的控制和管理,提供更稳定、流畅的图形渲染效果。 总之,DRM驱动中的vblank信号起到了同步图像显示和渲染的重要作用,能够避免图像撕裂等视觉问题的出现。它是DRM驱动中一个必要的功能模块,有助于提高图形渲染的质量和性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值