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

来源:互联网 发布:js更改文本框颜色 编辑:程序博客网 时间:2024/06/05 08:23

引用: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内核版本