社区
Android
帖子详情
求教怎么在应用中获取上次VSync信号时间?
llg84
2015-09-10 02:05:26
现在做一个应用需要利用VSync时间进行优化,但是找不到获取VSync时间的方法,求大牛指点
...全文
112
回复
打赏
收藏
求教怎么在应用中获取上次VSync信号时间?
现在做一个应用需要利用VSync时间进行优化,但是找不到获取VSync时间的方法,求大牛指点
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
vs
ync
信号
处理
Android 系统每隔 16ms 发出
VS
YNC
信号
,触发对 UI 进行渲染,
VS
ync
是 Vertical S
ync
hronization(垂直同步)的缩写,是一种在PC上很早就广泛使用的技术,可以简单的把它认为是一种定时
中
断。而在 Android 4.1(JB)
中
已经开始引入
VS
ync
机制,用来同步渲染,让AppUI 和 SurfaceFlinger 可以按硬件产生的
VS
ync
节奏进行工作。在整个 Android 视图绘制渲染流程
中
,
VS
ync
信号
都扮演着非常重要的作用,下面简单梳理
Linux常见问题-
获取
Vs
ync
信号
使用Linux系统 libdrm库
获取
Vs
ync
的核心原理:使用drmWaitVBlank()可以获得场消隐VBlank,可以简单理解为要想获得2个
Vs
ync
之间的
时间
间隔,可以通过获得 场消隐VBlank之间的
时间
间隔,因为每一次场消隐伴随着场同步
信号
VS
YNC
的触发。这里主要是介绍使用libdrm库
获取
vs
ync
信号
的方法(该方法适用于ubuntu和debian系统)接下来 编译一下代码,测试下。看效果还是可以用的。
什么是
VS
YNC
信号
什么是
VS
YNC
信号
Android 显示surfaceFlinger
vs
ync
获取
构造好之后会唤醒EventThread线程,这个线程从mPendingEvents
中
的事件调用dispatchEvent将事件分发给监听者,监听者即是向EventThread请求了
Vs
ync
的EventThreadConnection并addfd的配置回调函数的。
vs
ync
简单理解就是一帧图像在显示设备这边显示完成之后(图像从做上角扫描到了右下角了) 发送的第一个硬件
vs
ync
信号
, 显示设备重新回到左上角开始显示的时候会在发第二个
vs
ync
信号
。简要流程:硬件的
vs
ync
抽象在上层是一个fd。
Vs
ync
信号
和View绘制流程的关系
VS
ync
信号
vs
ync
是有两个
信号
的, 一个是
vs
ync
-app用于生成当前帧的数据;(CPU计算和GPU渲染) 一个用于消费数据(合成图像到Display上,
vs
ync
-surface) 。 三缓冲机制: CPU缓存为了防止GPU计算超时,提前生成数据 GPU:将数据放到缓冲池防止屏幕渲染超时 一,
vs
ync
信号
来源
vs
ync
可以由底层HardWare提供经由Display发送,当底层Hardware不能提供时也会发送
vs
ync
信号
到Display。
vs
ync
屏蔽了底层Hal,使得没有
Vs
ync
Android
80,493
社区成员
91,376
社区内容
发帖
与我相关
我的任务
Android
移动平台 Android
复制链接
扫一扫
分享
社区描述
移动平台 Android
android
android-studio
androidx
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章