[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH] sm501: Fix hardware cursor color conversion
From: |
David Gibson |
Subject: |
Re: [Qemu-devel] [PATCH] sm501: Fix hardware cursor color conversion |
Date: |
Tue, 19 Jun 2018 15:26:58 +1000 |
User-agent: |
Mutt/1.10.0 (2018-05-17) |
On Mon, Jun 18, 2018 at 11:38:16PM +0200, Sebastian Bauer wrote:
> According to the sm501 specs the hardware cursor colors are to be given in
> the rgb565 format, but the code currently interprets them as bgr565.
>
> Therefore, the colors of the hardware cursors are wrong in the QEMU
> display, e.g., the standard mouse pointer of AmigaOS appears blue instead
> of red. This change fixes this issue by replacing the existing naive
> bgr565 => rgb888 conversion with a standard rgb565 => rgb888 one that also
> scales the color component values properly.
>
> Signed-off-by: Sebastian Bauer <address@hidden>
Applied to ppc-for-3.0, thanks.
> ---
> hw/display/sm501.c | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/hw/display/sm501.c b/hw/display/sm501.c
> index 0488ab69d3..6c7f8483f3 100644
> --- a/hw/display/sm501.c
> +++ b/hw/display/sm501.c
> @@ -668,9 +668,9 @@ static inline void get_hwc_palette(SM501State *state, int
> crt, uint8_t *palette)
> } else {
> rgb565 = color_reg & 0xFFFF;
> }
> - palette[i * 3 + 0] = (rgb565 << 3) & 0xf8; /* red */
> - palette[i * 3 + 1] = (rgb565 >> 3) & 0xfc; /* green */
> - palette[i * 3 + 2] = (rgb565 >> 8) & 0xf8; /* blue */
> + palette[i * 3 + 0] = ((rgb565 >> 11) * 527 + 23) >> 6; /* r */
> + palette[i * 3 + 1] = (((rgb565 >> 5) & 0x3f) * 259 + 33) >> 6; /* g
> */
> + palette[i * 3 + 2] = ((rgb565 & 0x1f) * 527 + 23) >> 6; /* b */
> }
> }
>
--
David Gibson | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson
signature.asc
Description: PGP signature