diff mbox series

[09/12] macfb: fix up 1-bit pixel encoding

Message ID 20211002110007.30825-10-mark.cave-ayland@ilande.co.uk
State New
Headers show
Series macfb: fixes for booting MacOS | expand

Commit Message

Mark Cave-Ayland Oct. 2, 2021, 11 a.m. UTC
The MacOS driver expects the RGB values for the pixel to be in entries 0 and 1
of the colour palette.

Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
---
 hw/display/macfb.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

Comments

Laurent Vivier Oct. 4, 2021, 2:40 p.m. UTC | #1
On 02/10/2021 13:00, Mark Cave-Ayland wrote:
> The MacOS driver expects the RGB values for the pixel to be in entries 0 and 1
> of the colour palette.
> 
> Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
> ---
>   hw/display/macfb.c | 4 +++-
>   1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/hw/display/macfb.c b/hw/display/macfb.c
> index 6a69334565..0c9e181b9b 100644
> --- a/hw/display/macfb.c
> +++ b/hw/display/macfb.c
> @@ -128,7 +128,9 @@ static void macfb_draw_line1(MacfbState *s, uint8_t *d, uint32_t addr,
>       for (x = 0; x < width; x++) {
>           int bit = x & 7;
>           int idx = (macfb_read_byte(s, addr) >> (7 - bit)) & 1;
> -        r = g = b  = ((1 - idx) << 7);
> +        r = s->color_palette[idx * 3];
> +        g = s->color_palette[idx * 3 + 1];
> +        b = s->color_palette[idx * 3 + 2];
>           addr += (bit == 7);
>   
>           *(uint32_t *)d = rgb_to_pixel32(r, g, b);
> 

Reviewed-by: Laurent Vivier <laurent@vivier.eu>
diff mbox series

Patch

diff --git a/hw/display/macfb.c b/hw/display/macfb.c
index 6a69334565..0c9e181b9b 100644
--- a/hw/display/macfb.c
+++ b/hw/display/macfb.c
@@ -128,7 +128,9 @@  static void macfb_draw_line1(MacfbState *s, uint8_t *d, uint32_t addr,
     for (x = 0; x < width; x++) {
         int bit = x & 7;
         int idx = (macfb_read_byte(s, addr) >> (7 - bit)) & 1;
-        r = g = b  = ((1 - idx) << 7);
+        r = s->color_palette[idx * 3];
+        g = s->color_palette[idx * 3 + 1];
+        b = s->color_palette[idx * 3 + 2];
         addr += (bit == 7);
 
         *(uint32_t *)d = rgb_to_pixel32(r, g, b);