diff options
author | Brian Paul <[email protected]> | 2011-09-19 18:25:38 -0600 |
---|---|---|
committer | Brian Paul <[email protected]> | 2011-09-20 20:17:42 -0600 |
commit | 4731a598f00c8a229df7b36d9a2a7505b679de1d (patch) | |
tree | 6aa743366e97d6581edf30ec181a981f1a11d106 | |
parent | 4d53fb525db56d0695eaa5b91bd8f0cefbc25866 (diff) |
mesa: fix PACK_COLOR_5551(), PACK_COLOR_1555() macros
The 1-bit alpha channel was incorrectly encoded. Previously, any non-zero
alpha value for the ubyte alpha value would set A=1. Instead, use the
most significant bit of the ubyte alpha to determine the A bit. This is
consistent with the other channels and other OpenGL implementations.
Note: This is a candidate for the 7.11 branch.
Reviewed-by: Michel Dänzer <[email protected]>
-rw-r--r-- | src/mesa/main/colormac.h | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/mesa/main/colormac.h b/src/mesa/main/colormac.h index 0b8864a61eb..4294f323991 100644 --- a/src/mesa/main/colormac.h +++ b/src/mesa/main/colormac.h @@ -74,11 +74,11 @@ _mesa_unclamped_float_rgba_to_ubyte(GLubyte dst[4], const GLfloat src[4]) #define PACK_COLOR_5551( R, G, B, A ) \ ((((R) & 0xf8) << 8) | (((G) & 0xf8) << 3) | (((B) & 0xf8) >> 2) | \ - ((A) ? 1 : 0)) + ((A) >> 7)) #define PACK_COLOR_1555( A, B, G, R ) \ ((((B) & 0xf8) << 7) | (((G) & 0xf8) << 2) | (((R) & 0xf8) >> 3) | \ - ((A) ? 0x8000 : 0)) + (((A) & 0x80) << 8)) #define PACK_COLOR_1555_REV( A, B, G, R ) \ ((((B) & 0xf8) >> 1) | (((G) & 0xc0) >> 6) | (((G) & 0x38) << 10) | (((R) & 0xf8) << 5) | \ |