Patchwork [PULL,06/11] milkymist-vgafb: swap pixel data in source buffer

login
register
mail settings
Submitter Michael Walle
Date Sept. 25, 2013, 6:59 p.m.
Message ID <1380135572-25095-7-git-send-email-michael@walle.cc>
Download mbox | patch
Permalink /patch/277975/
State New
Headers show

Comments

Michael Walle - Sept. 25, 2013, 6:59 p.m.
In commit fc97bb5ba3e7239c0b6d24095df6784868dfebbf the lduw_raw() call was
eliminated. But we are reading from the target buffer a 16-bit value, which
is in big-endian format. Therefore, swap the bytes if we are building for a
little-endian host.

Cc: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Michael Walle <michael@walle.cc>
---
 hw/display/milkymist-vgafb_template.h |    3 +++
 1 file changed, 3 insertions(+)

Patch

diff --git a/hw/display/milkymist-vgafb_template.h b/hw/display/milkymist-vgafb_template.h
index e0036e1..5a906af 100644
--- a/hw/display/milkymist-vgafb_template.h
+++ b/hw/display/milkymist-vgafb_template.h
@@ -62,6 +62,9 @@  static void glue(draw_line_, BITS)(void *opaque, uint8_t *d, const uint8_t *s,
 
     while (width--) {
         memcpy(&rgb565, s, sizeof(rgb565));
+#ifndef HOST_WORDS_BIGENDIAN
+        rgb565 = bswap16(rgb565);
+#endif
         r = ((rgb565 >> 11) & 0x1f) << 3;
         g = ((rgb565 >>  5) & 0x3f) << 2;
         b = ((rgb565 >>  0) & 0x1f) << 3;