Linux图形子系统之vblank事件

引言

显示器显示图像数据的过程,一般从左上角,按从左至右、从上至下的方式扫描像素数据。一般每扫描一行,会切换到下一行的左侧,行与行之间的返回过程称为水平消隐;一帧图像扫描完成,要从图像的右下角返回到图像的左上角,开始新一帧图像的扫描,这一时间间隔,叫做垂直消隐,也称场消隐(vblank)。从右下角返回左上角的时间间隔内,可以通知驱动进行下一帧图像的送显,一般硬件进入vblank后(也就是扫描完一帧图像)会通过中断机制触发硬件的vblank事件,然后再由驱动提交软件的vblank事件。

1 使能vblank

1.1 初始化

在struct drm_device的模式设置初始化后需要调用drm_vblank_init初始化crtc的drm_vblank_crtc结构

1.2 使能vblank

  • 软件使能

在drm_crtc_helper_funcs的atomic_enable/atomic_disable回调内调用drm_crtc_vblank_on/drm_crtc_vblank_off方法

  • 硬件使能

在drm_crtc_funcs的enable_vblank/disable_vblank回调内实现开启/关闭硬件vblank中断相关操作

2 传递vblank

2.1缓存vblank

在drm_crtc_helper_funcs的atomic_flush回调内调用drm_crtc_arm_vblank_event方法,将state的even添加到struct drm_device的vblank_event_list中

2.2 发送vblank

在vblank的硬件中断函数中,通过drm_crtc_handle_vblank或drm_handle_vblank发送struct drm_device的vblank_event_list中事件

  • 2
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值