mirror of
https://github.com/Fishwaldo/u-boot.git
synced 2025-03-31 11:31:32 +00:00
video: cfb_console: add support for 4bpp bitmaps with GDF_32BIT_X888RGB
Add support for 4bpp bitmaps, currently only for GDF_32BIT_X888RGB frame buffer format. Signed-off-by: Timur Tabi <timur@freescale.com> Signed-off-by: Anatolij Gustschin <agust@denx.de>
This commit is contained in:
parent
ef351fe1f7
commit
68f6618bcd
1 changed files with 37 additions and 1 deletions
|
@ -1114,8 +1114,44 @@ int video_display_bitmap (ulong bmp_image, int x, int y)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* We handle only 8bpp or 24 bpp bitmap */
|
/* We handle only 4, 8, or 24 bpp bitmaps */
|
||||||
switch (le16_to_cpu (bmp->header.bit_count)) {
|
switch (le16_to_cpu (bmp->header.bit_count)) {
|
||||||
|
case 4:
|
||||||
|
padded_line -= width / 2;
|
||||||
|
ycount = height;
|
||||||
|
|
||||||
|
switch (VIDEO_DATA_FORMAT) {
|
||||||
|
case GDF_32BIT_X888RGB:
|
||||||
|
while (ycount--) {
|
||||||
|
WATCHDOG_RESET ();
|
||||||
|
/*
|
||||||
|
* Don't assume that 'width' is an
|
||||||
|
* even number
|
||||||
|
*/
|
||||||
|
for (xcount = 0; xcount < width; xcount++) {
|
||||||
|
uchar idx;
|
||||||
|
|
||||||
|
if (xcount & 1) {
|
||||||
|
idx = *bmap & 0xF;
|
||||||
|
bmap++;
|
||||||
|
} else
|
||||||
|
idx = *bmap >> 4;
|
||||||
|
cte = bmp->color_table[idx];
|
||||||
|
FILL_32BIT_X888RGB(cte.red, cte.green,
|
||||||
|
cte.blue);
|
||||||
|
}
|
||||||
|
bmap += padded_line;
|
||||||
|
fb -= (VIDEO_VISIBLE_COLS + width) *
|
||||||
|
VIDEO_PIXEL_SIZE;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
puts("4bpp bitmap unsupported with current "
|
||||||
|
"video mode\n");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
case 8:
|
case 8:
|
||||||
padded_line -= width;
|
padded_line -= width;
|
||||||
if (VIDEO_DATA_FORMAT == GDF__8BIT_INDEX) {
|
if (VIDEO_DATA_FORMAT == GDF__8BIT_INDEX) {
|
||||||
|
|
Loading…
Add table
Reference in a new issue