6410 QT2 24bpp 解决只有3/4屏幕的 BUG

因为项目界面用到渐变色,大多数6410开发板默认都是RGB565,所以图片显示出现色斑,极其难看,

硬件如果不支持RGB888的话,只能改程序或图片,取消渐变色,尽可能用纯色代替,一般有经验的美工都能实现。

色斑效果:


16BPP                                                                                                                                        

           

24BPP

    


所以将内核改成24bpp后,QT界面不正常了,只有3/4输出,最右边 1/4白屏,

原因以下这个贴解释的很清楚(QT 24bpp是按3个字节算RGB,linux LCD控制器按4个字节):

http://www.arm9home.net/simple/index.php?t14028.html


还有注意有些开发板的屏是没有接RGB888的,只支持RGB565,有些脚被NC或直接拉低了,这样你怎么都调不出RGB888来的:

http://ucos.usr.cc/thread-1603-1-1.html


现在思路很清楚了,有几个解决办法:

第1种.在内核配置为24bpp RGB888(注意6410不支持ARGB8888 32bpp,设置了会黑屏):

Qt 是通过ioctl /dev/fb0来获取framebuffer信息(qt2/kernel/qgfxlinuxfb_qws.cpp):



修改linux内核 drivers/video/fbmem.c do_fb_ioctl函数:

加入

#if 1/*modify by lxj 2011.09.02 for qt support 24bpp*/
        if(info->var.bits_per_pixel==24){
            info->var.bits_per_pixel = 32;
        }
#endif


以上我试过是可行的,简单实用;


第2种.非得让QT支持24bpp也可以,需要重新编译QT库,我用的是QT2的版本,首先,在编译QT的脚本里加入24bpp支持  -depths 16,24,32

echo yes | ./configure -qte '-embedded -no-xft -qconfig qpe -depths 16,24,32 -system-jpeg -qt-zlib -qt-libpng -gif -no-g++-exceptions -no-qvfb -xplatform linux-arm-g++ -tslib -thread' -qpe 'edition pda -displaysize 480x272 -fontfamilies "helvetica fixed micro smallsmooth smoothtimes unifont" -xplatform linux-arm-g++ -luuid' -qt2 '-no-opengl -no-xft' -dqt '-no-xft -thread' &&

修改qt2/kernel/qgfxlinuxfb_qws.cpp QLinuxFbScreen::connect 函数(大概139行)中:

加入

#if 1
    if(d==24){/*modify by lxj 2011.09.02, support 24bpp*/
        d = 32;
    }
#endif


重新编译一次QT,将编译好的库更新到文件系统中,就可以了。我只更新了libqte.so.2库

保险起见,两种方法都可一起用上。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值