diff options
-rw-r--r-- | src/mesa/main/format_unpack.c | 35 |
1 files changed, 10 insertions, 25 deletions
diff --git a/src/mesa/main/format_unpack.c b/src/mesa/main/format_unpack.c index 2051f68fb54..fbda03135e9 100644 --- a/src/mesa/main/format_unpack.c +++ b/src/mesa/main/format_unpack.c @@ -1415,37 +1415,26 @@ _mesa_unpack_float_z_row(gl_format format, GLuint n, typedef void (*unpack_uint_z_func)(const void *src, GLuint *dst); static void -unpack_uint_z_Z24_S8(const void *src, GLuint *dst) +unpack_uint_z_Z24_X8(const void *src, GLuint *dst) { /* only return Z, not stencil data */ const GLuint s = *((const GLuint *) src); - *dst = (s >> 8); + *dst = (s & 0xffffff00) | (s >> 24); } static void -unpack_uint_z_S8_Z24(const void *src, GLuint *dst) +unpack_uint_z_X8_Z24(const void *src, GLuint *dst) { /* only return Z, not stencil data */ const GLuint s = *((const GLuint *) src); - *dst = s & 0x00ffffff; + *dst = (s << 8) | ((s >> 16) & 0xff); } static void unpack_uint_z_Z16(const void *src, GLuint *dst) { - *dst = *((const GLushort *) src); -} - -static void -unpack_uint_z_X8_Z24(const void *src, GLuint *dst) -{ - unpack_uint_z_S8_Z24(src, dst); -} - -static void -unpack_uint_z_Z24_X8(const void *src, GLuint *dst) -{ - unpack_uint_z_Z24_S8(src, dst); + const GLushort s = *((const GLushort *)src); + *dst = (s << 16) | s; } static void @@ -1466,19 +1455,15 @@ _mesa_unpack_uint_z_row(gl_format format, GLuint n, switch (format) { case MESA_FORMAT_Z24_S8: - unpack = unpack_uint_z_Z24_S8; + case MESA_FORMAT_Z24_X8: + unpack = unpack_uint_z_Z24_X8; break; case MESA_FORMAT_S8_Z24: - unpack = unpack_uint_z_S8_Z24; - break; - case MESA_FORMAT_Z16: - unpack = unpack_uint_z_Z16; - break; case MESA_FORMAT_X8_Z24: unpack = unpack_uint_z_X8_Z24; break; - case MESA_FORMAT_Z24_X8: - unpack = unpack_uint_z_Z24_X8; + case MESA_FORMAT_Z16: + unpack = unpack_uint_z_Z16; break; case MESA_FORMAT_Z32: unpack = unpack_uint_z_Z32; |