Re: [common PATCH 8/8 v3] ppc: Fix alpha state checking and clearing on BE machines

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Self NACK

Wrong order of LE/BE macros
Should be the other way around:

#ifdef WORDS_BIGENDIAN
    #define x8r8g8b8_ALPHA 0x000000ffu
#else
    #define x8r8g8b8_ALPHA 0xff000000u
#endif

Will fix in next version, still some changes left.


On Thu, Oct 22, 2015 at 5:02 PM, Lukas Venhoda <lvenhoda@xxxxxxxxxx> wrote:
When checking, whether we use alpha channel, we need to compare color
format with constant with the same byte order.

When clearing alpha channel, we must clear in proper byte order.
---
Changes since v2:
 - Added macro for proper alpha clearing
 - Improved commit msg

Changes since v1:
 - New commit
---
 common/canvas_base.c | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/common/canvas_base.c b/common/canvas_base.c
index 65b1c3f..1e401ed 100644
--- a/common/canvas_base.c
+++ b/common/canvas_base.c
@@ -45,6 +45,12 @@
 #include "mem.h"
 #include "macros.h"

+#ifdef WORDS_BIGENDIAN
+    #define x8r8g8b8_ALPHA 0xff000000u
+#else
+    #define x8r8g8b8_ALPHA 0x000000ffu
+#endif
+
 #define ROUND(_x) ((int)floor((_x) + 0.5))

 #define IS_IMAGE_LOSSY(descriptor)                         \
@@ -1208,12 +1214,12 @@ static pixman_image_t *canvas_get_image_internal(CanvasBase *canvas, SpiceImage
 #ifdef SW_CANVAS_CACHE
         descriptor->type != SPICE_IMAGE_TYPE_FROM_CACHE_LOSSLESS &&
 #endif
-        surface_format == PIXMAN_x8r8g8b8) {
+        surface_format == PIXMAN_LE_x8r8g8b8) {
         spice_pixman_fill_rect_rop(surface,
                                    0, 0,
                                    pixman_image_get_width(surface),
                                    pixman_image_get_height(surface),
-                                   0xff000000U, SPICE_ROP_OR);
+                                   x8r8g8b8_ALPHA, SPICE_ROP_OR);
     }

     if (descriptor->flags & SPICE_IMAGE_FLAGS_CACHE_ME &&
@@ -1267,7 +1273,7 @@ static pixman_image_t *canvas_get_image_internal(CanvasBase *canvas, SpiceImage
            If so we convert here. */

         wanted_format = canvas_get_target_format(canvas,
-                                                 surface_format == PIXMAN_a8r8g8b8);
+                                                 surface_format == PIXMAN_LE_a8r8g8b8);

         if (surface_format != wanted_format) {
             converted = surface_create(
--
2.4.3


Lukas Venhoda

_______________________________________________
Spice-devel mailing list
Spice-devel@xxxxxxxxxxxxxxxxxxxxx
http://lists.freedesktop.org/mailman/listinfo/spice-devel

[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]     [Monitors]