首页 > 其他分享 >垂直同步

垂直同步

时间:2023-03-20 14:00:49浏览次数:31  
标签:缓存 显示器 垂直 同步 显卡 屏幕 刷新率

vblank时间:显示器显示一帧的时间。
显卡或芯片输出的图像数据写在后缓存里,屏幕读取前缓存的图像数据并显示,后缓存数据写入完毕后,前后缓存进行交换,如果前缓存的图片写入速度与屏幕读取图像的刷新率不匹配会发生画面撕裂。
解决办法:

  • 垂直同步:当后缓存写入速度大于屏幕刷新率,显示器显示完成后进入vblank阶段,利用vsync信号告诉后缓存还没有写好图片,此时不允许发生前后缓存交换(帧传递),此时显示器发生锁帧;当后缓存写入速度小于屏幕刷新率时,显示器先显示前缓存的图片,然后再显示一次前缓存的图片,如果此时后缓存写完了也要等显示器发出vsync信号,降低了刷新率,此时会出现画面不流畅的现象。垂直同步的弊端就是,延迟。其中一个方法就是再加一个缓存,再一定程度上会缓解延迟,但是当屏幕刷新率远远小于帧数,中后缓存都被画完了,显卡还是要等待屏幕画完。
  • 快速垂直同步:旨在三重缓冲的延迟问题,让显卡可以无限交替中后缓存,显示器显示前缓存。弊端是,当显示器刷新率太低的情况下,虽然显卡可以无限交替后缓存,但是会出现丢帧的情况,会出现明显的卡顿感。
  • G-sync和FreeSync:自适应显示器刷新率,简称VRR。工作原理是,当帧率低于刷新率的时候,强制延长vblank的时间,让显示器持续显示上一帧画面,当显卡等显示器时,采用垂直同步。如果帧率高于显示器的刷新率的时候,采用垂直同步会有延迟,或者采用显卡锁帧;同理帧率低于显示器刷新率的时候,显示器会长时间播放一个画面,刷新率过低会出现卡顿甚至画面错误,引起引入lfc帧率补偿机制,进行两至四次刷新一帧,模拟刷新率等于帧率,lfc需要预判显卡的输出效率,预测失误又会发生撕裂。因此G-sync和FreeSync适合应用与帧率略低于显示器刷新率,且帧率和帧生成稳定。![image]

主要是给自己看的,所以肯定会出现很多错误哈哈哈哈哈



标签:缓存,显示器,垂直,同步,显卡,屏幕,刷新率
From: https://blog.51cto.com/u_14943525/6132736

相关文章

  • java-线程互斥同步
    写在前边,/***线程互斥同步:通过两种锁机制来控制多个线程对共享资源的互斥访问,synchronized、ReentrantLock*/一、JVM实现的synchronized。使用synchronized不用担心没......
  • 【CSAPP】异常控制流 | 异常表 | 异常类别 | 同步异常 | 异步异常
      ......
  • TiCDC+Confluent同步数据到Oracle
    使用TiCDC将TiDBtest数据库多张表以AVRO格式发送到Kafka多个Topic,然后使用Confluent自带开源connect将Kafka多个topic数据实时写入到Oracle数据库,此......
  • 进程的同步与互斥
    进程互斥(间接制约)定义:由于操作系统各进程需要使用共享资源,而这些资源需要排他性使用,各进程之间竞争使用这些资源,这些关系称为进程互斥。临界资源:系统中的资源一次只允许一......
  • 说说对AQS(AbstractQueuedSynchronizer)队列同步器的理解
    AQS是构建锁或者其他同步组件的基础框架(如ReentrantLock、ReentrantReadWriteLock、Semaphore等),包含了实现同步器的细节(获取同步状态、FIFO同步队列)。AQS的主要使用......
  • CAS 是一种什么样的同步机制?多线程下为什么不使用 int 而使用 AtomicInteger?
    CompareAndSwap,比较交换。可以看到synchronized可以保证代码块原子性,很多时候会引起性能问题,volatile也是个不错的选择,但是volatile不能保证原子性,只能在某些场合下使......
  • 怎么使用硬件同步原语替代锁?
    什么是硬件同步原语?硬件同步原语(AtomicHardwarePrimitives)是由计算机硬件提供的一组原子操作。我们常见的原语操作有CAS和FAA两种。CASCompareandSwap(CAS),字面意思......
  • Linux 远程数据同步工具详解(rsync)
    一、简介1认识Rsync(remotesynchronize)是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。Rsync使用所谓的“Rsync算法”来使本地和远程两个主机之间的文......
  • 同步方法和同步代码块
    packageedu.wtbu;//不安全的买票publicclassDemo08{publicstaticvoidmain(String[]args){buyTicketbuyTicket=newbuyTicket();newThre......
  • 关于GTID的同步监控
    关于GTID的同步监控一、需求引入周一临下班的时候,领导给了个任务我,源于周一的时候,生产数据库cpu居高不下,应用系统各种卡,客户投诉,最后搞到他要写故障报告==(想想大家......