335X gpu 运行后,颜色不对,官方的SDK 下,QT运行的 颜色是OK的,然后换了自己的文件系统,发现颜色变了·。感觉是GPU要配置下颜色位数?现在硬件是16位颜色的· 不知道有没有遇到这个情况?求指点下,谢谢了!
Jian Zhou:
这个需要检查下你文件系统里QT软件的RGB颜色配置。
xiyuan ma:
回复 Jian Zhou:
不好意思,才发现被回复了。我今天测试了下,就是R B 颜色反掉了。。
335X 24位颜色是RGB 16位颜色是BGR ,我硬件接的16位模式,所以我怀疑我的设备树配置成24位了。
uboot 参考论坛的配置成了24位显示图片,但内核应该会根据设备树修改为16位的,不知道哪里出问题了·
以前内核是3.14 是OK的,现在是4.1 。明天在试试下。
xiyuan ma:
回复 Jian Zhou:
用psplash 做了开机界面,颜色是OK的,然后看了下手册
测试了下,用
root@am335x-evm:/opt# devmem2 0x4830e028/dev/mem opened.Memory mapped at address 0xb6f03000.Value at address 0x4830E028 (0xb6f03028): 0xA00081
读出的数据是0xA000081
寄存器 23 tftmap 值是1 ,看了手册 不太明白啥意思,好像应该是0
root@am335x-evm:/opt# devmem2 0x4830e028 w 0x200081/dev/mem opened.Memory mapped at address 0xb6f2d000.Value at address 0x4830E028 (0xb6f2d028): 0xA00081Written 0x200081; readback 0x200081root@am335x-evm:/opt# root@am335x-evm:/opt# devmem2 0x4830e028/dev/mem opened.Memory mapped at address 0xb6f18000.Value at address 0x4830E028 (0xb6f18028): 0x200081
改成0 ,在读出来,寄存器的值确实边了。
然后运行QT
QML debugging is enabled. Only use this in a safe environment.PVR: Hint: Setting WindowSystem to libpvrDRMWSEGL_FRONT.so
mode for connector 20 is 800x480mode for CRTC of connector 20 is 800x480DRM SET CRTC: index: 0 fd: 6, crtc: 12, fb: 18, conn: 14, mode: 800x480Unable to query physical screen size, defaulting to 100 dpi.To override, set QT_QPA_EGLFS_PHYSICAL_WIDTH and QT_QPA_EGLFS_PHYSICAL_HEIGHT (in millimeters).No such plugin for spec "Auto"
发现颜色还是 红蓝相反了,, 关闭后,在读devmem2 0x4830e028。发现值又变成了 0xA00081
好像是一旦调用,DRM或者GPU ,系统就会自动重新初始化,这个配置?
不知道是不是这样的?求指点下。。比较尴尬的问题。。在3.14内核下,颜色是OK的。
xiyuan ma:
回复 Jian Zhou:
搜索了下,看到了人家的回答,好像知道问题了,GPU要BGR格式。不同的内核会有不同的处理,PSD3.0 版本的 可以打补丁+设备树配置改为RGB.硬件接错,没注意到勘误表,结果颜色反了,后来改了硬件,内核又出现DRM驱动BUG,换了内核,驱动又改成了BGR,颜色又反了………
Jian Zhou:
回复 xiyuan ma:
以前有客户问过类似问题,要不就是线序不对,要不就是QT里面RGB模式配的不对。
xiyuan ma:
回复 Jian Zhou:
https://e2e.ti.com/support/arm/sitara_arm/f/791/p/601230/2217992?tisearch=e2e-sitesearch&keymatch=GPU%20%20color%20format%20%20BGR#pi316653=2&pi316653filter=all&pi316653scroll=false