aboutsummaryrefslogtreecommitdiff
path: root/hw/display
diff options
context:
space:
mode:
Diffstat (limited to 'hw/display')
-rw-r--r--hw/display/pl110.c113
-rw-r--r--hw/display/pl110_template.h20
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;