diff options
Diffstat (limited to 'hw/display')
-rw-r--r-- | hw/display/pl110.c | 113 | ||||
-rw-r--r-- | hw/display/pl110_template.h | 20 |
2 files changed, 65 insertions, 68 deletions
diff --git a/hw/display/pl110.c b/hw/display/pl110.c index ce300662e8..4bf15c1da5 100644 --- a/hw/display/pl110.c +++ b/hw/display/pl110.c @@ -123,7 +123,6 @@ static const unsigned char *idregs[] = { pl111_id }; -#define BITS 32 #define COPY_PIXEL(to, from) do { *(uint32_t *)to = from; to += 4; } while (0) #undef RGB @@ -145,65 +144,63 @@ static const unsigned char *idregs[] = { #include "pl110_template.h" #undef BORDER -static drawfn pl110_draw_fn_32[48] = { - pl110_draw_line1_lblp_bgr32, - pl110_draw_line2_lblp_bgr32, - pl110_draw_line4_lblp_bgr32, - pl110_draw_line8_lblp_bgr32, - pl110_draw_line16_555_lblp_bgr32, - pl110_draw_line32_lblp_bgr32, - pl110_draw_line16_lblp_bgr32, - pl110_draw_line12_lblp_bgr32, - - pl110_draw_line1_bbbp_bgr32, - pl110_draw_line2_bbbp_bgr32, - pl110_draw_line4_bbbp_bgr32, - pl110_draw_line8_bbbp_bgr32, - pl110_draw_line16_555_bbbp_bgr32, - pl110_draw_line32_bbbp_bgr32, - pl110_draw_line16_bbbp_bgr32, - pl110_draw_line12_bbbp_bgr32, - - pl110_draw_line1_lbbp_bgr32, - pl110_draw_line2_lbbp_bgr32, - pl110_draw_line4_lbbp_bgr32, - pl110_draw_line8_lbbp_bgr32, - pl110_draw_line16_555_lbbp_bgr32, - pl110_draw_line32_lbbp_bgr32, - pl110_draw_line16_lbbp_bgr32, - pl110_draw_line12_lbbp_bgr32, - - pl110_draw_line1_lblp_rgb32, - pl110_draw_line2_lblp_rgb32, - pl110_draw_line4_lblp_rgb32, - pl110_draw_line8_lblp_rgb32, - pl110_draw_line16_555_lblp_rgb32, - pl110_draw_line32_lblp_rgb32, - pl110_draw_line16_lblp_rgb32, - pl110_draw_line12_lblp_rgb32, - - pl110_draw_line1_bbbp_rgb32, - pl110_draw_line2_bbbp_rgb32, - pl110_draw_line4_bbbp_rgb32, - pl110_draw_line8_bbbp_rgb32, - pl110_draw_line16_555_bbbp_rgb32, - pl110_draw_line32_bbbp_rgb32, - pl110_draw_line16_bbbp_rgb32, - pl110_draw_line12_bbbp_rgb32, - - pl110_draw_line1_lbbp_rgb32, - pl110_draw_line2_lbbp_rgb32, - pl110_draw_line4_lbbp_rgb32, - pl110_draw_line8_lbbp_rgb32, - pl110_draw_line16_555_lbbp_rgb32, - pl110_draw_line32_lbbp_rgb32, - pl110_draw_line16_lbbp_rgb32, - pl110_draw_line12_lbbp_rgb32, -}; - -#undef BITS #undef COPY_PIXEL +static drawfn pl110_draw_fn_32[48] = { + pl110_draw_line1_lblp_bgr, + pl110_draw_line2_lblp_bgr, + pl110_draw_line4_lblp_bgr, + pl110_draw_line8_lblp_bgr, + pl110_draw_line16_555_lblp_bgr, + pl110_draw_line32_lblp_bgr, + pl110_draw_line16_lblp_bgr, + pl110_draw_line12_lblp_bgr, + + pl110_draw_line1_bbbp_bgr, + pl110_draw_line2_bbbp_bgr, + pl110_draw_line4_bbbp_bgr, + pl110_draw_line8_bbbp_bgr, + pl110_draw_line16_555_bbbp_bgr, + pl110_draw_line32_bbbp_bgr, + pl110_draw_line16_bbbp_bgr, + pl110_draw_line12_bbbp_bgr, + + pl110_draw_line1_lbbp_bgr, + pl110_draw_line2_lbbp_bgr, + pl110_draw_line4_lbbp_bgr, + pl110_draw_line8_lbbp_bgr, + pl110_draw_line16_555_lbbp_bgr, + pl110_draw_line32_lbbp_bgr, + pl110_draw_line16_lbbp_bgr, + pl110_draw_line12_lbbp_bgr, + + pl110_draw_line1_lblp_rgb, + pl110_draw_line2_lblp_rgb, + pl110_draw_line4_lblp_rgb, + pl110_draw_line8_lblp_rgb, + pl110_draw_line16_555_lblp_rgb, + pl110_draw_line32_lblp_rgb, + pl110_draw_line16_lblp_rgb, + pl110_draw_line12_lblp_rgb, + + pl110_draw_line1_bbbp_rgb, + pl110_draw_line2_bbbp_rgb, + pl110_draw_line4_bbbp_rgb, + pl110_draw_line8_bbbp_rgb, + pl110_draw_line16_555_bbbp_rgb, + pl110_draw_line32_bbbp_rgb, + pl110_draw_line16_bbbp_rgb, + pl110_draw_line12_bbbp_rgb, + + pl110_draw_line1_lbbp_rgb, + pl110_draw_line2_lbbp_rgb, + pl110_draw_line4_lbbp_rgb, + pl110_draw_line8_lbbp_rgb, + pl110_draw_line16_555_lbbp_rgb, + pl110_draw_line32_lbbp_rgb, + pl110_draw_line16_lbbp_rgb, + pl110_draw_line12_lbbp_rgb, +}; static int pl110_enabled(PL110State *s) { diff --git a/hw/display/pl110_template.h b/hw/display/pl110_template.h index 0d8471db63..877419aa81 100644 --- a/hw/display/pl110_template.h +++ b/hw/display/pl110_template.h @@ -14,18 +14,18 @@ #endif #if ORDER == 0 -#define NAME glue(glue(lblp_, BORDER), BITS) +#define NAME glue(lblp_, BORDER) #ifdef HOST_WORDS_BIGENDIAN #define SWAP_WORDS 1 #endif #elif ORDER == 1 -#define NAME glue(glue(bbbp_, BORDER), BITS) +#define NAME glue(bbbp_, BORDER) #ifndef HOST_WORDS_BIGENDIAN #define SWAP_WORDS 1 #endif #else #define SWAP_PIXELS 1 -#define NAME glue(glue(lbbp_, BORDER), BITS) +#define NAME glue(lbbp_, BORDER) #ifdef HOST_WORDS_BIGENDIAN #define SWAP_WORDS 1 #endif @@ -174,14 +174,14 @@ static void glue(pl110_draw_line16_,NAME)(void *opaque, uint8_t *d, const uint8_ MSB = (data & 0x1f) << 3; data >>= 5; #endif - COPY_PIXEL(d, glue(rgb_to_pixel,BITS)(r, g, b)); + COPY_PIXEL(d, rgb_to_pixel32(r, g, b)); LSB = (data & 0x1f) << 3; data >>= 5; g = (data & 0x3f) << 2; data >>= 6; MSB = (data & 0x1f) << 3; data >>= 5; - COPY_PIXEL(d, glue(rgb_to_pixel,BITS)(r, g, b)); + COPY_PIXEL(d, rgb_to_pixel32(r, g, b)); #undef MSB #undef LSB width -= 2; @@ -211,7 +211,7 @@ static void glue(pl110_draw_line32_,NAME)(void *opaque, uint8_t *d, const uint8_ g = (data >> 16) & 0xff; MSB = (data >> 8) & 0xff; #endif - COPY_PIXEL(d, glue(rgb_to_pixel,BITS)(r, g, b)); + COPY_PIXEL(d, rgb_to_pixel32(r, g, b)); #undef MSB #undef LSB width--; @@ -242,14 +242,14 @@ static void glue(pl110_draw_line16_555_,NAME)(void *opaque, uint8_t *d, const ui data >>= 5; MSB = (data & 0x1f) << 3; data >>= 5; - COPY_PIXEL(d, glue(rgb_to_pixel,BITS)(r, g, b)); + COPY_PIXEL(d, rgb_to_pixel32(r, g, b)); LSB = (data & 0x1f) << 3; data >>= 5; g = (data & 0x1f) << 3; data >>= 5; MSB = (data & 0x1f) << 3; data >>= 6; - COPY_PIXEL(d, glue(rgb_to_pixel,BITS)(r, g, b)); + COPY_PIXEL(d, rgb_to_pixel32(r, g, b)); #undef MSB #undef LSB width -= 2; @@ -280,14 +280,14 @@ static void glue(pl110_draw_line12_,NAME)(void *opaque, uint8_t *d, const uint8_ data >>= 4; MSB = (data & 0xf) << 4; data >>= 8; - COPY_PIXEL(d, glue(rgb_to_pixel,BITS)(r, g, b)); + COPY_PIXEL(d, rgb_to_pixel32(r, g, b)); LSB = (data & 0xf) << 4; data >>= 4; g = (data & 0xf) << 4; data >>= 4; MSB = (data & 0xf) << 4; data >>= 8; - COPY_PIXEL(d, glue(rgb_to_pixel,BITS)(r, g, b)); + COPY_PIXEL(d, rgb_to_pixel32(r, g, b)); #undef MSB #undef LSB width -= 2; |