sm501: Adjust endianness of pixel value in rectangle fill
authorMarcus Comstedt <marcus@mc.pp.se>
Wed, 19 Sep 2018 12:31:14 +0000 (14:31 +0200)
committerDavid Gibson <david@gibson.dropbear.id.au>
Tue, 25 Sep 2018 01:12:25 +0000 (11:12 +1000)
The value from twoD_foreground (which is in host endian format) must
be converted to the endianness of the framebuffer (currently always
little endian) before it can be used to perform the fill operation.

Signed-off-by: Marcus Comstedt <marcus@mc.pp.se>
Reviewed-by: BALATON Zoltan <balaton@eik.bme.hu>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
hw/display/sm501.c

index 874260a143a6c0385d3960744ac7b0a6673af12b..4a8686f0f5bea668b0c1b096e7982662853ee6dc 100644 (file)
@@ -39,6 +39,7 @@
 #include "hw/i2c/i2c-ddc.h"
 #include "qemu/range.h"
 #include "ui/pixel_ops.h"
+#include "qemu/bswap.h"
 
 /*
  * Status: 2010/05/07
@@ -812,9 +813,11 @@ static void sm501_2d_operation(SM501State *s)
             FILL_RECT(1, uint8_t);
             break;
         case 1:
+            color = cpu_to_le16(color);
             FILL_RECT(2, uint16_t);
             break;
         case 2:
+            color = cpu_to_le32(color);
             FILL_RECT(4, uint32_t);
             break;
         }