我的板子采用的是18位的LCD,现在的问题是, 界面的颜色显示好像有缺失.有几个问题一直没有搞清楚,这里请教一下.
1.应用层是固定用32bit,还是查询/dev/fb0的属性,然后确定颜色的位数.
2.如果应用层采用固定的32bit,那么将32bit颜色值转成RGB666的过程是在哪里实现的?
3.还有就是存在frame buffer中的颜色值是32bit的呢, 还是18bit的?

解决方案 »

  1.   

    1. struct fb_var_screeninfo 中有个bits_per_pixel,来制定色位,硬件会来参考这个数值。
    2. struct fb_var_screeninfo中有4个struct fb_bitfield 分别是RGB 和transp,用来做转化
    3. 如果你写入32位的那就应该是32位的
      

  2.   

    查看代码,本来驱动是初始化成16位的,但是fbmem.c中的fb_set_var不知道被哪里调用了,把bit_per_pixel设置成了32位。 搜索了全部代码,所有能看到调用的地方都加了log,但是就是找不到实际调用的地方。
      

  3.   

    原来是在另外一个模块中调用了fb_set_var -