|
请教PowerPC平台下,vxWorks显卡驱动的大小端问题。
[复制链接]
我在我们的PowerPC主板上,使用CT69030显卡。设置为1024x768,RGB565,刷新60hz.
图像能够显示,但颜色对不上,Red,green,blue都对不上,
按helenhf 和frank_zhou 的方法试验了一下,发现是字节大小端的问题。
正常情况:
应该显示的颜色 字节1 ? 字节2
RED: 11111 000 000 00000 = 0xf800
GREEN: 00000 111 111 00000 = 0x7e0
BLUE: 00000 000 000 11111 = 0x1f
现在的情况
应该显示的颜色 字节1 ? 字节2
RED: 00000 000 111 11000 = 0xf8
GREEN: 11100 000 000 00111 = 0xe007
BLUE: 00011 111 000 00000 = 0x1f00
所以需要把显存里的数据进行字节大小端转换。
写了一个手动字节交换的函数,即在运行ugldemo.c时候,定时把显存进行字节大小端转换,发现很影响显示性能,刷屏现象严重。
最好能在编译WindML库的时候,就把大小端的问题搞定,应用程序操作图形设备时,直接把字节交换后的数据写入显存,
这样就省去了先显示,再转换的过程了。
不过这要修改驱动或者windML的什么地方呢?
请熟悉vxWorks和windML的高手给些建议。
|
|