转载请注明出处:http://www.cnblogs.com/lihaiping/p/5567141.html
在做openGL测试的过程中,根据论坛上的帖子,在使用/bin/fbset -a -nonstd 1 -depth 32 -rgba "8/0,8/8,8/16,8/24"命令以后,会出现显示花屏的问题,当然我这边暂时使用的是hdmi输出进行测试的,vga的设置方法,另外一个网友已经发帖贴出了解决方法:http://developer.t-firefly.com/thread-6462-1-1.html,同时我这里也是根据他的方法来实现的。
因为hdmi的输出是从framebuffer这个源来的,所以我们修改色深只需要修改framebuffer就OK了,具体操作方法很简单:
1)打开drivers\video\rockchip\rk_fb_box.c文件,
static struct fb_var_screeninfo def_var = {
/*
#if defined(CONFIG_LOGO_LINUX_BMP)
.red = {16, 8, 0},
.green = {8, 8, 0},
.blue = {0, 8, 0},
.transp = {0, 0, 0},
.nonstd = HAL_PIXEL_FORMAT_BGRA_8888,
#else
*/
//modefy by lhp---20160607
#if 1 //defined(CONFIG_LOGO_LINUX_BMP)
.red = {16, 8, 0},
.green = {8, 8, 0},
.blue = {0, 8, 0},
.transp = {0, 0, 0},
.nonstd = HAL_PIXEL_FORMAT_BGRA_8888,
.bits_per_pixel = 32,
#else
.red = {11, 5, 0},
.green = {5, 6, 0},
.blue = {0, 5, 0},
.transp = {0, 0, 0},
.nonstd = HAL_PIXEL_FORMAT_RGB_565, /* (ypos<<20+xpos<<8+format) format */
#endif
.grayscale = 0, /* (ysize<<20+xsize<<8) */
.activate = FB_ACTIVATE_NOW,
.accel_flags = 0,
.vmode = FB_VMODE_NONINTERLACED,
};
2)修改rk_fb_register函数:
//modefy by lhp----20160607,use def_var.bits_per_pixel
/*
#if defined(CONFIG_LOGO_LINUX_BMP)
fbi->var.bits_per_pixel = 32;
#else
fbi->var.bits_per_pixel = 16;
#endif
*/
将上面的这段进行注释,使用我们前面1)中已经修改的那个定义
===========================
编译内核,启动就OK了。