[Spice-devel] [common PATCH 0/9 v4] Fix colors on BE clients, when using image compression

Lukas Venhoda lvenhoda at redhat.com
Wed Nov 25 08:14:26 PST 2015


When using image compression on BE client, the color order was wrong.
(BGRA instead of ARGB)

Theese patches try to fix this issue in most of the image compressions.

For most of the fixes, new macros for color order were implemented.
Theese macros changed according to the endianness of the machine it runs on.
Original implementation is in QEMU in file qemu-pixman.h

Not all PIXMAN_[a-z] were changed. Most are needed for native ordering,
and should be left as is. Only those creating new surfaces are changed.

The way this fix works is like this:
We created a BGRx order surface and copy LE order data into it.
This creates a surface ith "wrong" data order.
We then create a second surface with xRGB color order and copy the data
into it, which in turn converts (byteswap) the colors into correct order.

Lukas Venhoda (9):
  ppc: Always convert surface on BE machine
  pixman_utils: Add macros for color byte ordering
  pixman_utils: Use PIXMAN_LE_ constants in spice_bitmap_try_as_pixman()
  ppc: Add support for bigendian color byte order
  ppc: Fix colors on ppc when using QUIC
  ppc: Fix colors on ppc when using LZ
  ppc: Fix colors on ppc when using LZ4
  ppc: Fix colors on ppc when using jpeg
  ppc: Fix alpha state checking on BE machines

 common/canvas_base.c  | 34 +++++++++++++++++++++++-----------
 common/canvas_utils.c | 14 ++++++++++++++
 common/pixman_utils.c | 18 +++---------------
 common/pixman_utils.h | 10 ++++++++++
 4 files changed, 50 insertions(+), 26 deletions(-)

--
2.5.0



More information about the Spice-devel mailing list