VSync的虚拟化
由上面的介绍可以知道,VSync其实起源于显示屏,但是想想如果每个App和SurfaceFlinger都去从硬件驱动中直接监听VSync,那未免有点太复杂了,而且耦合性太高,不行。那怎么办呢?
因此,最好是有一个模块去专门跟驱动沟通,再由它将VSync信号广播给大家,就像一个hub一样。但是VSync频率这么高,每次从kernel到userspace的消耗也不少,而且VSync是周期性的,很容易猜,所以没必要一直从kernel监听,但是系统是一直需要VSync来控制绘制合成的,所以有必要搞一个虚拟的VSync来模拟硬件VSync了。大概架构如下图:
其中SurfaceFlinger中的DisplayVSync(Android S后改名为VsyncController)就是虚拟的VSync源,其需要两个参数来保证与硬件VSync的同步性,第一是参考点,第二就是周期。这些都可以开启硬件VSync同步解决。
VSync的同步
VSync虚拟化的实质就是在软件层面模拟硬件VSync,既然是软件模拟,那么就会存在误差,如果误差比较大,那么就需要开启硬件VSync同步来进行校准。那么就存在两个问题,怎么发现自己误差比较大?以及怎么来同步?
首先是如何发现误差比较大?答案是通过fence机制。SurfaceFlinger在每一帧交给HWC的时候,同时都会从HWC那里得到此帧的PresentFence,它是在此帧开始刷新至屏幕的时候signal的。那驱动什么时候开始刷新一帧至屏幕呢,答案是屏幕VSync来的时候。所以这下就能串起来了。根据PresentFence的signal时间就可以知道真实的VSync时间,那么之后的事情就简单了。
在HWComposer::presentAndGetReleaseFences中获取PresentFence,
获取到fence之后就会对齐进行监测
一旦不准就开硬件VSync来进行校准,通常情况下接收六次硬件VSync就可以完成校准动作。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
相关推荐
究竟什么是虚拟同步发电机?虚拟同步发电机有什么作用?主要应用于哪些领域?
发表于 06-30 08:02
储能虚拟同步发电机主要用于大规模新能源的集中并网,提供虚拟惯量,进行需求侧的调频、提升系统抗扰动能力;亦可作为储能变流器使用,消纳电网中多余的可再生并网能源实现平滑输出或平抑尖峰、低谷负荷,优化
发表于 06-30 07:39
虚拟同步机是基于微网技术提出的一种电力电子技术,传统的电力电子发电设备多采用PQ控制,动态响应快,缺少类似同步电机的阻尼特性,从而引起电网波动等问题。故为了迎合电网特性,使得逆变器具有同步
发表于 06-30 06:43
虚拟机及虚拟化技术给计算机应用注入了新的研究与开发点,同时也存在诸多不利因素。本文综述了虚拟机及虚拟化
发表于 09-07 10:15
•13次下载
说到虚拟化,一般是指将物理的实体,通过软件模式,形成若干虚拟存在的系统,其实真是运作还是在实体上,只是划分了若干区域或者时域划分。而云计算的基础是虚拟
发表于 11-09 16:18
•1769次阅读
本视频主要详细介绍了虚拟化技术有哪些,分别有CPU虚拟化、网络虚拟化、服务器
发表于 01-02 16:25
•3.9w次阅读
日前,记者从华为官网了解到,华为正式宣布开源数据虚拟化引擎openLooKeng,其开源社区官网也同步上线。
发表于 07-03 11:25
•1791次阅读
I/O虚拟化是SmartNIC/DPU/IPU中最核心的部分,AWS NITRO就是从I/O硬件虚拟化开始,逐渐开启了DPU这个新处理器类型的创新。而Virtio接口,已经是事实上的云计算虚拟
发表于 10-13 11:09
•2639次阅读
vsync是有两个信号的,
一个是vsync-app用于生成当前帧的数据;(CPU计算和GPU渲染)
一个用于消费数据(合成图像到Display上,vsync-surface) 。
发表于 02-02 11:18
•851次阅读
参考博士论文《基于虚拟同步机的微网逆变器控制策略研究_刘芳》 虚拟同步机控制综述 1 欧洲VSYNC方案 根据频率偏差和频率变化率生成一次
发表于 03-02 15:32
•5次下载
虚拟化(Virtualization)是一个广义的术语,简单来说,是指计算机相关模块在虚拟的基础上而不是真实的独立的物理硬件基础上运行,这种把有限的固定的资源根据不同需求进行重新规划以达到最大
发表于 07-19 11:26
•1次下载
问题最初是在PC上被重视和解决的,GPU厂商开发出了一种防止屏幕被撕裂的技术方案,全称Vertical Synchronization(中文名垂直同步,简称VSync)。基本思路就是在屏幕刷新之前向外提供一个信号,主机端根据此信号选择合适的策略完成画面的刷新,避免数据
发表于 11-21 16:01
•1283次阅读
Android的显示系统一直使用双缓冲和VSync来防止屏幕画面发生撕裂现象,这也是其他系统的常规操作。Android的不同之处是将VSync运用到绘制系统中,作为黄油计划(Project
发表于 11-21 16:13
•336次阅读
App与SurfaceFlinger是不同的进程,它们之间传递VSync的话涉及到进程间通信,而且VSync频率很高,App很多,所以VSync的分发效率要很高才行。Linux进程间通信方式总共
发表于 11-21 16:32
•874次阅读
VSync-offset/duration 虚拟化后的VSync还有一个好处,就是可以对VSync进行一些定制操作,offset就是其中之一
发表于 11-21 16:57
•1091次阅读
评论