linux DRM driver 使用示例

1. 关于linux DRM的介绍以及基本的single buff, duble buff的使用,请参考

https://blog.csdn.net/hexiaolong2009/article/category/8331603

这里面的介绍比较详尽。

2. plane操作

这里以atmel SAMA5D27 的LCD控制器为例,LCD有4个planes,

base plane, over1 plane, over2 plane, HEO plane

先介绍下drmModeSetPlane,该函数用来设定plane的位置、长宽参数:

drmModeSetPlane(plane_id, crtc_id, fb_id, 0,
			crtc_x, crtc_y, crtc_w, crtc_h,
			src_x<<16, src_y<<16, src_w << 16, src_h << 16);

比如:

drmModeSetPlane(plane_id, crtc_id, fb_id, 0,
           10,20, 200, 200,
            0<<16, 0<<16, 200<< 16, 200<< 16);

表示在屏幕(10,20)坐标处设定size为200x200的plane

 

3. property

每个plane有很多的属性,如旋转、透明度等,这些属性可以通过drmModeGetProperty和drmModeObjectSetProperty来进行获取和设定

关于多层plane及相关property的操作代码,参考:

https://github.com/zizimumu/DRM_test/tree/master

 

4. modetest使用

modetest是libdrm下的一个很有用的drm测试程序,使用示例如下:

 

 

 

 

 

 

 

 

$modetest -M atmel-hlcdc -s 24@31:800x480

24是connect id, 31 crtc id,这些id可以使用$./modetest  命令来获取

执行命令后

800x480的屏幕上会显示彩条

$modetest -M atmel-hlcdc -s 24@31:800x480 -w 30:alpha:100 -P 30@31:200x200+200+200

在base plane上显示id为30的plane,位置为(200,200),大小为200x200,同时设定该plane的透明度为100(最大255),这里的-w是设定property 参数

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值