Changeset 19490ce in mainline for uspace/srv


Ignore:
Timestamp:
2009-08-03T21:06:35Z (16 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
9035c5a
Parents:
dd2cfa7
Message:

Fix 16bpp modes.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/fb/fb.c

    rdd2cfa7 r19490ce  
    290290}
    291291
    292 static void bgr_555(void *dst, uint32_t rgb)
    293 {
    294         uint8_t hi = (BLUE(rgb, 5) | (GREEN(rgb, 5) << 5)) & 0xff;
    295         uint8_t lo = (GREEN(rgb, 5) >> 3) | (RED(rgb, 5) << 2);
    296         *((uint16_t *) dst) = host2uint16_t_be((hi << 8) | lo);
     292static void rgb_555_be(void *dst, uint32_t rgb)
     293{
     294        *((uint16_t *) dst) = host2uint16_t_be(RED(rgb, 5) << 10 |
     295            GREEN(rgb, 5) << 5 | BLUE(rgb, 5));
     296}
     297
     298static void rgb_555_le(void *dst, uint32_t rgb)
     299{
     300        *((uint16_t *) dst) = host2uint16_t_le(RED(rgb, 5) << 10 |
     301            GREEN(rgb, 5) << 5 | BLUE(rgb, 5));
     302}
     303
     304static void rgb_565_be(void *dst, uint32_t rgb)
     305{
     306        *((uint16_t *) dst) = host2uint16_t_be(RED(rgb, 5) << 11 |
     307            GREEN(rgb, 6) << 5 | BLUE(rgb, 5));
     308}
     309
     310static void rgb_565_le(void *dst, uint32_t rgb)
     311{
     312        *((uint16_t *) dst) = host2uint16_t_le(RED(rgb, 5) << 11 |
     313            GREEN(rgb, 6) << 5 | BLUE(rgb, 5));
    297314}
    298315
    299316static void mask_555(void *dst, bool mask)
    300317{
    301         bgr_555(dst, mask ? 0xffffff : 0);
    302 }
    303 
    304 static void bgr_565(void *dst, uint32_t rgb)
    305 {
    306         uint8_t hi = (BLUE(rgb, 5) | (GREEN(rgb, 6) << 5)) & 0xff;
    307         uint8_t lo = (GREEN(rgb, 6) >> 3) | (RED(rgb, 5) << 3);
    308         *((uint16_t *) dst) = host2uint16_t_be((hi << 8) | lo);
     318        rgb_555_be(dst, mask ? 0xffffff : 0);
    309319}
    310320
    311321static void mask_565(void *dst, bool mask)
    312322{
    313         bgr_565(dst, mask ? 0xffffff : 0);
     323        rgb_565_be(dst, mask ? 0xffffff : 0);
    314324}
    315325
     
    622632                screen.pixelbytes = 1;
    623633                break;
    624         case VISUAL_BGR_5_5_5:
    625                 screen.rgb_conv = bgr_555;
     634        case VISUAL_RGB_5_5_5_LE:
     635                screen.rgb_conv = rgb_555_le;
    626636                screen.mask_conv = mask_555;
    627637                screen.pixelbytes = 2;
    628638                break;
    629         case VISUAL_BGR_5_6_5:
    630                 screen.rgb_conv = bgr_565;
     639        case VISUAL_RGB_5_5_5_BE:
     640                screen.rgb_conv = rgb_555_be;
     641                screen.mask_conv = mask_555;
     642                screen.pixelbytes = 2;
     643                break;
     644        case VISUAL_RGB_5_6_5_LE:
     645                screen.rgb_conv = rgb_565_le;
     646                screen.mask_conv = mask_565;
     647                screen.pixelbytes = 2;
     648                break;
     649        case VISUAL_RGB_5_6_5_BE:
     650                screen.rgb_conv = rgb_565_be;
    631651                screen.mask_conv = mask_565;
    632652                screen.pixelbytes = 2;
Note: See TracChangeset for help on using the changeset viewer.