diff options
author | Oded Gabbay <[email protected]> | 2015-08-04 21:39:32 +0300 |
---|---|---|
committer | Jason Ekstrand <[email protected]> | 2015-08-09 23:59:23 -0700 |
commit | 2ac171a7db4e4ad2fa902e62bf18bc1f67e91643 (patch) | |
tree | 90661b331dd3983a91673b71b1505be5ba14863c /src/mesa/main | |
parent | 1eaa29cb300e927409281ef0a9413072766eaa3d (diff) |
mesa: clear existing swizzle info before bitwise-OR
This patch fixes a bug in big-endian treatment, where the previous
swizzle info wasn't cleared before a new swizzle info was inserted into
the format field using a bitwise-OR operation.
v2: use MESA_ARRAY_FORMAT_SWIZZLE_*_MASK instead of numeric constants
v3: align according to coding style
Signed-off-by: Oded Gabbay <[email protected]>
CC: "10.5 10.6" <[email protected]>
Reviewed-by: Emil Velikov <[email protected]>
Reviewed-by: Jason Ekstrand <[email protected]>
Diffstat (limited to 'src/mesa/main')
-rw-r--r-- | src/mesa/main/formats.h | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/mesa/main/formats.h b/src/mesa/main/formats.h index 7e451caf0ff..d938e6ad513 100644 --- a/src/mesa/main/formats.h +++ b/src/mesa/main/formats.h @@ -191,6 +191,11 @@ static inline void _mesa_array_format_set_swizzle(mesa_array_format *f, int32_t x, int32_t y, int32_t z, int32_t w) { + *f &= ~(MESA_ARRAY_FORMAT_SWIZZLE_X_MASK | + MESA_ARRAY_FORMAT_SWIZZLE_Y_MASK | + MESA_ARRAY_FORMAT_SWIZZLE_Z_MASK | + MESA_ARRAY_FORMAT_SWIZZLE_W_MASK); + *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) | |