imx6q芯片linux内核版本操作系统,将显示颜色顺序从bgr修改为rgb

引用:http://blog.chinaunix.net/uid-25765968-id-3558617.html

fb_var_screeninfo 表示屏幕可变信息,也就是说,这些东西是可设置的,在本次打开的fb中设置不会改变,关闭后设置复原

因此,当我们需要修改屏幕的一些信息时可以通过该结构体来修改

开发过程中发现,虽然内核设置的颜色顺序为rgb,实际使用中按小端存储方式测试,结果发现按地址由低到高排布为bgr,很郁闷

后来使用fbset命令查看屏幕相关信息,发现打印信息如下

mode "1366x768-111"
        # D: 148.500 MHz, H: 90.219 kHz, V: 110.970 Hz
        geometry 1366 768 1920 1080 24
        timings 6734 148 88 36 4 44 5
        accel false
        rgba 8/0,8/8,8/16,0/0
endmode

rgb设置信息确实是0,8,16但显示就是bgr,不合逻辑

后打开fb,输出fbd->vinfo.red.offset,fbd->vinfo.green.offset,fbd->vinfo.blue.offset的值,发现偏移为16,8,0,与测试一致。看来问题就在这里了,修改了这里的offset应该就能实现修改rgb顺序了。

于是进行测试

fbd->vinfo.red.offset=0;
fbd->vinfo.green.offset=8;
fbd->vinfo.blue.offset=16;

测试成功



为了测试正常打开fb,设置vinfo后正常关闭fb,看设置能否恢复原状

1、先不设置vinfo,获取offset值为16,8,0,将设置显存255,0,0,255,0,0,显示为蓝色,不关闭fb,退出程序

2、获取offset值为16,8,0,再设置vinfo的offset为0,8,16,接着关闭fb,正常退出程序

3、接着先不设置vinfo,获取offset值为0,8,16,将设置显存255,0,0,255,0,0,显示为红色,不关闭fb,退出程序

4、先不设置vinfo,获取offset值为0,8,16,将设置显存255,0,0,255,0,0,显示为红色

结论:无论是否正常关闭fb,设置都会保留,不会回复原状,测试条件为自己做的简单linux内核版本


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值