Rev 3675 | Rev 4377 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 3675 | Rev 3684 | ||
|---|---|---|---|
| Line 189... | Line 189... | ||
| 189 | { |
189 | { |
| 190 | *((uint8_t *) dst) = RED(rgb, 3) << 5 | GREEN(rgb, 2) << 3 | |
190 | *((uint8_t *) dst) = RED(rgb, 3) << 5 | GREEN(rgb, 2) << 3 | |
| 191 | BLUE(rgb, 3); |
191 | BLUE(rgb, 3); |
| 192 | } |
192 | } |
| 193 | 193 | ||
| 194 | static void sb1500rgb_byte8(void *dst, int rgb) |
- | |
| 195 | { |
- | |
| 196 | if (RED(rgb, 1) && GREEN(rgb, 1) && BLUE(rgb, 1)) |
- | |
| 197 | *((uint8_t *) dst) = 255; |
- | |
| 198 | else if (RED(rgb, 1) && GREEN(rgb, 1)) |
- | |
| 199 | *((uint8_t *) dst) = 150; |
- | |
| 200 | else if (GREEN(rgb, 1) && BLUE(rgb, 1)) |
- | |
| 201 | *((uint8_t *) dst) = 47; |
- | |
| 202 | else if (RED(rgb, 1) && BLUE(rgb, 1)) |
- | |
| 203 | *((uint8_t *) dst) = 48; |
- | |
| 204 | else if (RED(rgb, 1)) |
- | |
| 205 | *((uint8_t *) dst) = 32; |
- | |
| 206 | else if (GREEN(rgb, 1)) |
- | |
| 207 | *((uint8_t *) dst) = 47; |
- | |
| 208 | else if (BLUE(rgb, 1)) |
- | |
| 209 | *((uint8_t *) dst) = 2; |
- | |
| 210 | else |
- | |
| 211 | *((uint8_t *) dst) = 1; |
- | |
| 212 | } |
- | |
| 213 | - | ||
| 214 | /** Return pixel color - 8-bit depth (color palette/3:2:3) |
194 | /** Return pixel color - 8-bit depth (color palette/3:2:3) |
| 215 | * |
195 | * |
| 216 | * See the comment for rgb_byte(). |
196 | * See the comment for rgb_byte(). |
| 217 | */ |
197 | */ |
| 218 | static int byte8_rgb(void *src) |
198 | static int byte8_rgb(void *src) |
| Line 464... | Line 444... | ||
| 464 | case VISUAL_INDIRECT_8: |
444 | case VISUAL_INDIRECT_8: |
| 465 | rgb2scr = rgb_byte8; |
445 | rgb2scr = rgb_byte8; |
| 466 | scr2rgb = byte8_rgb; |
446 | scr2rgb = byte8_rgb; |
| 467 | pixelbytes = 1; |
447 | pixelbytes = 1; |
| 468 | break; |
448 | break; |
| 469 | case VISUAL_SB1500_PALETTE: |
- | |
| 470 | rgb2scr = sb1500rgb_byte8; |
- | |
| 471 | scr2rgb = byte8_rgb; |
- | |
| 472 | pixelbytes = 1; |
- | |
| 473 | break; |
- | |
| 474 | case VISUAL_RGB_5_5_5: |
449 | case VISUAL_RGB_5_5_5: |
| 475 | rgb2scr = rgb_byte555; |
450 | rgb2scr = rgb_byte555; |
| 476 | scr2rgb = byte555_rgb; |
451 | scr2rgb = byte555_rgb; |
| 477 | pixelbytes = 2; |
452 | pixelbytes = 2; |
| 478 | break; |
453 | break; |
| Line 503... | Line 478... | ||
| 503 | break; |
478 | break; |
| 504 | default: |
479 | default: |
| 505 | panic("Unsupported visual.\n"); |
480 | panic("Unsupported visual.\n"); |
| 506 | } |
481 | } |
| 507 | 482 | ||
| 508 | unsigned int fbsize = props->scan * props->y + props->offset; |
483 | unsigned int fbsize = props->scan * props->y; |
| 509 | 484 | ||
| 510 | /* Map the framebuffer */ |
485 | /* Map the framebuffer */ |
| 511 | fbaddress = (uint8_t *) hw_map((uintptr_t) props->addr, fbsize); |
486 | fbaddress = (uint8_t *) hw_map((uintptr_t) props->addr + props->offset, |
| - | 487 | fbsize); |
|
| 512 | fbaddress += props->offset; |
488 | fbaddress += props->offset; |
| 513 | 489 | ||
| 514 | xres = props->x; |
490 | xres = props->x; |
| 515 | yres = props->y; |
491 | yres = props->y; |
| 516 | scanline = props->scan; |
492 | scanline = props->scan; |
| Line 529... | Line 505... | ||
| 529 | sysinfo_set_item_val("fb.width", NULL, xres); |
505 | sysinfo_set_item_val("fb.width", NULL, xres); |
| 530 | sysinfo_set_item_val("fb.height", NULL, yres); |
506 | sysinfo_set_item_val("fb.height", NULL, yres); |
| 531 | sysinfo_set_item_val("fb.scanline", NULL, props->scan); |
507 | sysinfo_set_item_val("fb.scanline", NULL, props->scan); |
| 532 | sysinfo_set_item_val("fb.visual", NULL, props->visual); |
508 | sysinfo_set_item_val("fb.visual", NULL, props->visual); |
| 533 | sysinfo_set_item_val("fb.address.physical", NULL, props->addr); |
509 | sysinfo_set_item_val("fb.address.physical", NULL, props->addr); |
| - | 510 | sysinfo_set_item_val("fb.offset", NULL, props->offset); |
|
| 534 | sysinfo_set_item_val("fb.invert-colors", NULL, invert_colors); |
511 | sysinfo_set_item_val("fb.invert-colors", NULL, invert_colors); |
| 535 | 512 | ||
| 536 | /* Allocate double buffer */ |
513 | /* Allocate double buffer */ |
| 537 | unsigned int order = fnzb(SIZE2FRAMES(fbsize) - 1) + 1; |
514 | unsigned int order = fnzb(SIZE2FRAMES(fbsize) - 1) + 1; |
| 538 | dbbuffer = (uint8_t *) frame_alloc(order, FRAME_ATOMIC | FRAME_KA); |
515 | dbbuffer = (uint8_t *) frame_alloc(order, FRAME_ATOMIC | FRAME_KA); |