[Mesa-stable] [PATCH 1/2] mesa: clear existing swizzle info before bitwise-OR

Oded Gabbay oded.gabbay at gmail.com
Sun Aug 2 03:37:55 PDT 2015


This patch fixes a bug in big-endian handling, where the previous
swizzle info wasn't cleared before a new swizzle info was inserted into
the format field using a bitwise-OR operation.

Signed-off-by: Oded Gabbay <oded.gabbay at gmail.com>
CC: "10.5 10.6" <mesa-stable at lists.freedesktop.org>
---
 src/mesa/main/formats.h | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/src/mesa/main/formats.h b/src/mesa/main/formats.h
index 7e451ca..eacd8b7 100644
--- a/src/mesa/main/formats.h
+++ b/src/mesa/main/formats.h
@@ -191,6 +191,9 @@ static inline void
 _mesa_array_format_set_swizzle(mesa_array_format *f,
                                int32_t x, int32_t y, int32_t z, int32_t w)
 {
+   /* clear old swizzle info */
+   *f &= ~((0x7 << 8) | (0x7 << 11) | (0x7 << 14) | (0x7 << 17));
+
    *f |= ((x << 8 ) & MESA_ARRAY_FORMAT_SWIZZLE_X_MASK) |
          ((y << 11) & MESA_ARRAY_FORMAT_SWIZZLE_Y_MASK) |
          ((z << 14) & MESA_ARRAY_FORMAT_SWIZZLE_Z_MASK) |
-- 
2.4.3



More information about the mesa-stable mailing list