Hi
spice_surface_format_to_pixman(canvas->format) will always return LE order colors (ARGB, XRGB).
If it is BE we will always convert to LE (surface_format != wanted_format will always fail),
but we can also convert from alpha to non-alpha or vice versa.
If it is LE we will only convert, if the alpha needs to be converted
(surface_format != wanted_format will fail only when alpha is different)
--
On Fri, Dec 11, 2015 at 2:13 PM, Christophe Fergeau <cfergeau@xxxxxxxxxx> wrote:
canvas_get_target_format() then has this code:
if (source_has_alpha) {
if (format == PIXMAN_x8r8g8b8) {
format = PIXMAN_a8r8g8b8;
}
}
spice_surface_format_to_pixman(canvas::format) is not going to return
PIXMAN_b8g8r8x8 on big-endian, is the canvas in a8r8g8b8 format on BE too?
If yes, then this patch should be correct, if not, more work will be needed I'm afraid..
spice_surface_format_to_pixman(canvas->format) will always return LE order colors (ARGB, XRGB).
With that, this function will also always return LE order colors, and that is correct behavior.
What the patch does is that it ensures, that source_has_alpha is set correctly,
because surface_format can be both BE, or LE.
because surface_format can be both BE, or LE.
If it is BE we will always convert to LE (surface_format != wanted_format will always fail),
but we can also convert from alpha to non-alpha or vice versa.
If it is LE we will only convert, if the alpha needs to be converted
(surface_format != wanted_format will fail only when alpha is different)
Hope that answers your question.
--
Lukas Venhoda
_______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/spice-devel