X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fmesa%2Fmain%2Fformat_unpack.c;h=276ba556a15cff6b7584d1aee6be96f4cd462424;hb=079bff5a99fa19029fc0caba92fe57046ee29b23;hp=d40fb55802e02116489a62d167e0c326f7544f23;hpb=eeed49f5f290793870c60b5b635b977a732a1eb4;p=mesa.git diff --git a/src/mesa/main/format_unpack.c b/src/mesa/main/format_unpack.c index d40fb55802e..276ba556a15 100644 --- a/src/mesa/main/format_unpack.c +++ b/src/mesa/main/format_unpack.c @@ -234,6 +234,9 @@ unpack_RGB565(const void *src, GLfloat dst[][4], GLuint n) static void unpack_RGB565_REV(const void *src, GLfloat dst[][4], GLuint n) { + /* Warning: this function does not match the current Mesa definition + * of MESA_FORMAT_R5G6B5_UNORM. + */ const GLushort *s = ((const GLushort *) src); GLuint i; for (i = 0; i < n; i++) { @@ -300,6 +303,9 @@ unpack_ARGB1555(const void *src, GLfloat dst[][4], GLuint n) static void unpack_ARGB1555_REV(const void *src, GLfloat dst[][4], GLuint n) { + /* Warning: this function does not match the current Mesa definition + * of MESA_FORMAT_A1R5G5B5_UNORM. + */ const GLushort *s = ((const GLushort *) src); GLuint i; for (i = 0; i < n; i++) { @@ -2360,9 +2366,9 @@ get_unpack_rgba_function(mesa_format format) table[MESA_FORMAT_B10G10R10A2_UINT] = unpack_ARGB2101010_UINT; table[MESA_FORMAT_R10G10B10A2_UINT] = unpack_ABGR2101010_UINT; table[MESA_FORMAT_S8_UINT_Z24_UNORM] = unpack_Z24_S8; - table[MESA_FORMAT_Z24_UNORM_X8_UINT] = unpack_S8_Z24; + table[MESA_FORMAT_Z24_UNORM_S8_UINT] = unpack_S8_Z24; table[MESA_FORMAT_Z_UNORM16] = unpack_Z16; - table[MESA_FORMAT_Z24_UNORM_S8_UINT] = unpack_X8_Z24; + table[MESA_FORMAT_Z24_UNORM_X8_UINT] = unpack_X8_Z24; table[MESA_FORMAT_X8Z24_UNORM] = unpack_Z24_X8; table[MESA_FORMAT_Z_UNORM32] = unpack_Z32; table[MESA_FORMAT_S_UINT8] = unpack_S8; @@ -2387,59 +2393,59 @@ get_unpack_rgba_function(mesa_format format) table[MESA_FORMAT_RGBA_FLOAT16] = unpack_RGBA_FLOAT16; table[MESA_FORMAT_RGB_FLOAT32] = unpack_RGB_FLOAT32; table[MESA_FORMAT_RGB_FLOAT16] = unpack_RGB_FLOAT16; - table[MESA_FORMAT_ALPHA_FLOAT32] = unpack_ALPHA_FLOAT32; - table[MESA_FORMAT_ALPHA_FLOAT16] = unpack_ALPHA_FLOAT16; - table[MESA_FORMAT_LUMINANCE_FLOAT32] = unpack_LUMINANCE_FLOAT32; - table[MESA_FORMAT_LUMINANCE_FLOAT16] = unpack_LUMINANCE_FLOAT16; - table[MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32] = unpack_LUMINANCE_ALPHA_FLOAT32; - table[MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16] = unpack_LUMINANCE_ALPHA_FLOAT16; - table[MESA_FORMAT_INTENSITY_FLOAT32] = unpack_INTENSITY_FLOAT32; - table[MESA_FORMAT_INTENSITY_FLOAT16] = unpack_INTENSITY_FLOAT16; + table[MESA_FORMAT_A_FLOAT32] = unpack_ALPHA_FLOAT32; + table[MESA_FORMAT_A_FLOAT16] = unpack_ALPHA_FLOAT16; + table[MESA_FORMAT_L_FLOAT32] = unpack_LUMINANCE_FLOAT32; + table[MESA_FORMAT_L_FLOAT16] = unpack_LUMINANCE_FLOAT16; + table[MESA_FORMAT_LA_FLOAT32] = unpack_LUMINANCE_ALPHA_FLOAT32; + table[MESA_FORMAT_LA_FLOAT16] = unpack_LUMINANCE_ALPHA_FLOAT16; + table[MESA_FORMAT_I_FLOAT32] = unpack_INTENSITY_FLOAT32; + table[MESA_FORMAT_I_FLOAT16] = unpack_INTENSITY_FLOAT16; table[MESA_FORMAT_R_FLOAT32] = unpack_R_FLOAT32; table[MESA_FORMAT_R_FLOAT16] = unpack_R_FLOAT16; table[MESA_FORMAT_RG_FLOAT32] = unpack_RG_FLOAT32; table[MESA_FORMAT_RG_FLOAT16] = unpack_RG_FLOAT16; - table[MESA_FORMAT_ALPHA_UINT8] = unpack_ALPHA_UINT8; - table[MESA_FORMAT_ALPHA_UINT16] = unpack_ALPHA_UINT16; - table[MESA_FORMAT_ALPHA_UINT32] = unpack_ALPHA_UINT32; - table[MESA_FORMAT_ALPHA_INT8] = unpack_ALPHA_INT8; - table[MESA_FORMAT_ALPHA_INT16] = unpack_ALPHA_INT16; - table[MESA_FORMAT_ALPHA_INT32] = unpack_ALPHA_INT32; - - table[MESA_FORMAT_INTENSITY_UINT8] = unpack_INTENSITY_UINT8; - table[MESA_FORMAT_INTENSITY_UINT16] = unpack_INTENSITY_UINT16; - table[MESA_FORMAT_INTENSITY_UINT32] = unpack_INTENSITY_UINT32; - table[MESA_FORMAT_INTENSITY_INT8] = unpack_INTENSITY_INT8; - table[MESA_FORMAT_INTENSITY_INT16] = unpack_INTENSITY_INT16; - table[MESA_FORMAT_INTENSITY_INT32] = unpack_INTENSITY_INT32; - - table[MESA_FORMAT_LUMINANCE_UINT8] = unpack_LUMINANCE_UINT8; - table[MESA_FORMAT_LUMINANCE_UINT16] = unpack_LUMINANCE_UINT16; - table[MESA_FORMAT_LUMINANCE_UINT32] = unpack_LUMINANCE_UINT32; - table[MESA_FORMAT_LUMINANCE_INT8] = unpack_LUMINANCE_INT8; - table[MESA_FORMAT_LUMINANCE_INT16] = unpack_LUMINANCE_INT16; - table[MESA_FORMAT_LUMINANCE_INT32] = unpack_LUMINANCE_INT32; - - table[MESA_FORMAT_LUMINANCE_ALPHA_UINT8] = unpack_LUMINANCE_ALPHA_UINT8; - table[MESA_FORMAT_LUMINANCE_ALPHA_UINT16] = unpack_LUMINANCE_ALPHA_UINT16; - table[MESA_FORMAT_LUMINANCE_ALPHA_UINT32] = unpack_LUMINANCE_ALPHA_UINT32; - table[MESA_FORMAT_LUMINANCE_ALPHA_INT8] = unpack_LUMINANCE_ALPHA_INT8; - table[MESA_FORMAT_LUMINANCE_ALPHA_INT16] = unpack_LUMINANCE_ALPHA_INT16; - table[MESA_FORMAT_LUMINANCE_ALPHA_INT32] = unpack_LUMINANCE_ALPHA_INT32; - - table[MESA_FORMAT_R_INT8] = unpack_R_INT8; - table[MESA_FORMAT_RG_INT8] = unpack_RG_INT8; - table[MESA_FORMAT_RGB_INT8] = unpack_RGB_INT8; - table[MESA_FORMAT_RGBA_INT8] = unpack_RGBA_INT8; - table[MESA_FORMAT_R_INT16] = unpack_R_INT16; - table[MESA_FORMAT_RG_INT16] = unpack_RG_INT16; - table[MESA_FORMAT_RGB_INT16] = unpack_RGB_INT16; - table[MESA_FORMAT_RGBA_INT16] = unpack_RGBA_INT16; - table[MESA_FORMAT_R_INT32] = unpack_R_INT32; - table[MESA_FORMAT_RG_INT32] = unpack_RG_INT32; - table[MESA_FORMAT_RGB_INT32] = unpack_RGB_INT32; - table[MESA_FORMAT_RGBA_INT32] = unpack_RGBA_INT32; + table[MESA_FORMAT_A_UINT8] = unpack_ALPHA_UINT8; + table[MESA_FORMAT_A_UINT16] = unpack_ALPHA_UINT16; + table[MESA_FORMAT_A_UINT32] = unpack_ALPHA_UINT32; + table[MESA_FORMAT_A_SINT8] = unpack_ALPHA_INT8; + table[MESA_FORMAT_A_SINT16] = unpack_ALPHA_INT16; + table[MESA_FORMAT_A_SINT32] = unpack_ALPHA_INT32; + + table[MESA_FORMAT_I_UINT8] = unpack_INTENSITY_UINT8; + table[MESA_FORMAT_I_UINT16] = unpack_INTENSITY_UINT16; + table[MESA_FORMAT_I_UINT32] = unpack_INTENSITY_UINT32; + table[MESA_FORMAT_I_SINT8] = unpack_INTENSITY_INT8; + table[MESA_FORMAT_I_SINT16] = unpack_INTENSITY_INT16; + table[MESA_FORMAT_I_SINT32] = unpack_INTENSITY_INT32; + + table[MESA_FORMAT_L_UINT8] = unpack_LUMINANCE_UINT8; + table[MESA_FORMAT_L_UINT16] = unpack_LUMINANCE_UINT16; + table[MESA_FORMAT_L_UINT32] = unpack_LUMINANCE_UINT32; + table[MESA_FORMAT_L_SINT8] = unpack_LUMINANCE_INT8; + table[MESA_FORMAT_L_SINT16] = unpack_LUMINANCE_INT16; + table[MESA_FORMAT_L_SINT32] = unpack_LUMINANCE_INT32; + + table[MESA_FORMAT_LA_UINT8] = unpack_LUMINANCE_ALPHA_UINT8; + table[MESA_FORMAT_LA_UINT16] = unpack_LUMINANCE_ALPHA_UINT16; + table[MESA_FORMAT_LA_UINT32] = unpack_LUMINANCE_ALPHA_UINT32; + table[MESA_FORMAT_LA_SINT8] = unpack_LUMINANCE_ALPHA_INT8; + table[MESA_FORMAT_LA_SINT16] = unpack_LUMINANCE_ALPHA_INT16; + table[MESA_FORMAT_LA_SINT32] = unpack_LUMINANCE_ALPHA_INT32; + + table[MESA_FORMAT_R_SINT8] = unpack_R_INT8; + table[MESA_FORMAT_RG_SINT8] = unpack_RG_INT8; + table[MESA_FORMAT_RGB_SINT8] = unpack_RGB_INT8; + table[MESA_FORMAT_RGBA_SINT8] = unpack_RGBA_INT8; + table[MESA_FORMAT_R_SINT16] = unpack_R_INT16; + table[MESA_FORMAT_RG_SINT16] = unpack_RG_INT16; + table[MESA_FORMAT_RGB_SINT16] = unpack_RGB_INT16; + table[MESA_FORMAT_RGBA_SINT16] = unpack_RGBA_INT16; + table[MESA_FORMAT_R_SINT32] = unpack_R_INT32; + table[MESA_FORMAT_RG_SINT32] = unpack_RG_INT32; + table[MESA_FORMAT_RGB_SINT32] = unpack_RGB_INT32; + table[MESA_FORMAT_RGBA_SINT32] = unpack_RGBA_INT32; table[MESA_FORMAT_R_UINT8] = unpack_R_UINT8; table[MESA_FORMAT_RG_UINT8] = unpack_RG_UINT8; table[MESA_FORMAT_RGB_UINT8] = unpack_RGB_UINT8; @@ -2454,26 +2460,26 @@ get_unpack_rgba_function(mesa_format format) table[MESA_FORMAT_RGBA_UINT32] = unpack_RGBA_UINT32; table[MESA_FORMAT_DUDV8] = unpack_DUDV8; - table[MESA_FORMAT_SIGNED_R8] = unpack_SIGNED_R8; - table[MESA_FORMAT_SIGNED_RG88_REV] = unpack_SIGNED_RG88_REV; - table[MESA_FORMAT_SIGNED_RGBX8888] = unpack_SIGNED_RGBX8888; - table[MESA_FORMAT_SIGNED_RGBA8888] = unpack_SIGNED_RGBA8888; - table[MESA_FORMAT_SIGNED_RGBA8888_REV] = unpack_SIGNED_RGBA8888_REV; - table[MESA_FORMAT_SIGNED_R16] = unpack_SIGNED_R16; - table[MESA_FORMAT_SIGNED_GR1616] = unpack_SIGNED_GR1616; - table[MESA_FORMAT_SIGNED_RGB_16] = unpack_SIGNED_RGB_16; - table[MESA_FORMAT_SIGNED_RGBA_16] = unpack_SIGNED_RGBA_16; + table[MESA_FORMAT_R_SNORM8] = unpack_SIGNED_R8; + table[MESA_FORMAT_R8G8_SNORM] = unpack_SIGNED_RG88_REV; + table[MESA_FORMAT_X8B8G8R8_SNORM] = unpack_SIGNED_RGBX8888; + table[MESA_FORMAT_A8B8G8R8_SNORM] = unpack_SIGNED_RGBA8888; + table[MESA_FORMAT_R8G8B8A8_SNORM] = unpack_SIGNED_RGBA8888_REV; + table[MESA_FORMAT_R_SNORM16] = unpack_SIGNED_R16; + table[MESA_FORMAT_R16G16_SNORM] = unpack_SIGNED_GR1616; + table[MESA_FORMAT_RGB_SNORM16] = unpack_SIGNED_RGB_16; + table[MESA_FORMAT_RGBA_SNORM16] = unpack_SIGNED_RGBA_16; table[MESA_FORMAT_RGBA_UNORM16] = unpack_RGBA_16; - table[MESA_FORMAT_RED_RGTC1] = unpack_RED_RGTC1; - table[MESA_FORMAT_SIGNED_RED_RGTC1] = unpack_SIGNED_RED_RGTC1; - table[MESA_FORMAT_RG_RGTC2] = unpack_RG_RGTC2; - table[MESA_FORMAT_SIGNED_RG_RGTC2] = unpack_SIGNED_RG_RGTC2; + table[MESA_FORMAT_R_RGTC1_UNORM] = unpack_RED_RGTC1; + table[MESA_FORMAT_R_RGTC1_SNORM] = unpack_SIGNED_RED_RGTC1; + table[MESA_FORMAT_RG_RGTC2_UNORM] = unpack_RG_RGTC2; + table[MESA_FORMAT_RG_RGTC2_SNORM] = unpack_SIGNED_RG_RGTC2; - table[MESA_FORMAT_L_LATC1] = unpack_L_LATC1; - table[MESA_FORMAT_SIGNED_L_LATC1] = unpack_SIGNED_L_LATC1; - table[MESA_FORMAT_LA_LATC2] = unpack_LA_LATC2; - table[MESA_FORMAT_SIGNED_LA_LATC2] = unpack_SIGNED_LA_LATC2; + table[MESA_FORMAT_L_LATC1_UNORM] = unpack_L_LATC1; + table[MESA_FORMAT_L_LATC1_SNORM] = unpack_SIGNED_L_LATC1; + table[MESA_FORMAT_LA_LATC2_UNORM] = unpack_LA_LATC2; + table[MESA_FORMAT_LA_LATC2_SNORM] = unpack_SIGNED_LA_LATC2; table[MESA_FORMAT_ETC1_RGB8] = unpack_ETC1_RGB8; table[MESA_FORMAT_ETC2_RGB8] = unpack_ETC2_RGB8; @@ -2488,14 +2494,14 @@ get_unpack_rgba_function(mesa_format format) unpack_ETC2_RGB8_PUNCHTHROUGH_ALPHA1; table[MESA_FORMAT_ETC2_SRGB8_PUNCHTHROUGH_ALPHA1] = unpack_ETC2_SRGB8_PUNCHTHROUGH_ALPHA1; - table[MESA_FORMAT_SIGNED_A8] = unpack_SIGNED_A8; - table[MESA_FORMAT_SIGNED_L8] = unpack_SIGNED_L8; - table[MESA_FORMAT_SIGNED_AL88] = unpack_SIGNED_AL88; - table[MESA_FORMAT_SIGNED_I8] = unpack_SIGNED_I8; - table[MESA_FORMAT_SIGNED_A16] = unpack_SIGNED_A16; - table[MESA_FORMAT_SIGNED_L16] = unpack_SIGNED_L16; - table[MESA_FORMAT_SIGNED_AL1616] = unpack_SIGNED_AL1616; - table[MESA_FORMAT_SIGNED_I16] = unpack_SIGNED_I16; + table[MESA_FORMAT_A_SNORM8] = unpack_SIGNED_A8; + table[MESA_FORMAT_L_SNORM8] = unpack_SIGNED_L8; + table[MESA_FORMAT_L8A8_SNORM] = unpack_SIGNED_AL88; + table[MESA_FORMAT_I_SNORM8] = unpack_SIGNED_I8; + table[MESA_FORMAT_A_SNORM16] = unpack_SIGNED_A16; + table[MESA_FORMAT_L_SNORM16] = unpack_SIGNED_L16; + table[MESA_FORMAT_LA_SNORM16] = unpack_SIGNED_AL1616; + table[MESA_FORMAT_I_SNORM16] = unpack_SIGNED_I16; table[MESA_FORMAT_R9G9B9E5_FLOAT] = unpack_RGB9_E5_FLOAT; table[MESA_FORMAT_R11G11B10_FLOAT] = unpack_R11_G11_B10_FLOAT; @@ -2521,8 +2527,8 @@ get_unpack_rgba_function(mesa_format format) table[MESA_FORMAT_R10G10B10A2_UNORM] = unpack_ABGR2101010; - table[MESA_FORMAT_SIGNED_RG88] = unpack_SIGNED_RG88; - table[MESA_FORMAT_SIGNED_RG1616] = unpack_SIGNED_RG1616; + table[MESA_FORMAT_G8R8_SNORM] = unpack_SIGNED_RG88; + table[MESA_FORMAT_G16R16_SNORM] = unpack_SIGNED_RG1616; initialized = GL_TRUE; } @@ -2699,6 +2705,9 @@ unpack_ubyte_RGB565(const void *src, GLubyte dst[][4], GLuint n) static void unpack_ubyte_RGB565_REV(const void *src, GLubyte dst[][4], GLuint n) { + /* Warning: this function does not match the current Mesa definition + * of MESA_FORMAT_R5G6B5_UNORM. + */ const GLushort *s = ((const GLushort *) src); GLuint i; for (i = 0; i < n; i++) { @@ -2765,6 +2774,9 @@ unpack_ubyte_ARGB1555(const void *src, GLubyte dst[][4], GLuint n) static void unpack_ubyte_ARGB1555_REV(const void *src, GLubyte dst[][4], GLuint n) { + /* Warning: this function does not match the current Mesa definition + * of MESA_FORMAT_A1R5G5B5_UNORM. + */ const GLushort *s = ((const GLushort *) src); GLuint i; for (i = 0; i < n; i++) { @@ -3648,21 +3660,21 @@ _mesa_unpack_uint_rgba_row(mesa_format format, GLuint n, * make separate paths for 32-bit-to-32-bit integer unpack. */ case MESA_FORMAT_RGBA_UINT32: - case MESA_FORMAT_RGBA_INT32: + case MESA_FORMAT_RGBA_SINT32: unpack_int_rgba_RGBA_UINT32(src, dst, n); break; case MESA_FORMAT_RGBA_UINT16: unpack_int_rgba_RGBA_UINT16(src, dst, n); break; - case MESA_FORMAT_RGBA_INT16: + case MESA_FORMAT_RGBA_SINT16: unpack_int_rgba_RGBA_INT16(src, dst, n); break; case MESA_FORMAT_RGBA_UINT8: unpack_int_rgba_RGBA_UINT8(src, dst, n); break; - case MESA_FORMAT_RGBA_INT8: + case MESA_FORMAT_RGBA_SINT8: unpack_int_rgba_RGBA_INT8(src, dst, n); break; @@ -3675,134 +3687,134 @@ _mesa_unpack_uint_rgba_row(mesa_format format, GLuint n, break; case MESA_FORMAT_RGB_UINT32: - case MESA_FORMAT_RGB_INT32: + case MESA_FORMAT_RGB_SINT32: unpack_int_rgba_RGB_UINT32(src, dst, n); break; case MESA_FORMAT_RGB_UINT16: unpack_int_rgba_RGB_UINT16(src, dst, n); break; - case MESA_FORMAT_RGB_INT16: + case MESA_FORMAT_RGB_SINT16: unpack_int_rgba_RGB_INT16(src, dst, n); break; case MESA_FORMAT_RGB_UINT8: unpack_int_rgba_RGB_UINT8(src, dst, n); break; - case MESA_FORMAT_RGB_INT8: + case MESA_FORMAT_RGB_SINT8: unpack_int_rgba_RGB_INT8(src, dst, n); break; case MESA_FORMAT_RG_UINT32: - case MESA_FORMAT_RG_INT32: + case MESA_FORMAT_RG_SINT32: unpack_int_rgba_RG_UINT32(src, dst, n); break; case MESA_FORMAT_RG_UINT16: unpack_int_rgba_RG_UINT16(src, dst, n); break; - case MESA_FORMAT_RG_INT16: + case MESA_FORMAT_RG_SINT16: unpack_int_rgba_RG_INT16(src, dst, n); break; case MESA_FORMAT_RG_UINT8: unpack_int_rgba_RG_UINT8(src, dst, n); break; - case MESA_FORMAT_RG_INT8: + case MESA_FORMAT_RG_SINT8: unpack_int_rgba_RG_INT8(src, dst, n); break; case MESA_FORMAT_R_UINT32: - case MESA_FORMAT_R_INT32: + case MESA_FORMAT_R_SINT32: unpack_int_rgba_R_UINT32(src, dst, n); break; case MESA_FORMAT_R_UINT16: unpack_int_rgba_R_UINT16(src, dst, n); break; - case MESA_FORMAT_R_INT16: + case MESA_FORMAT_R_SINT16: unpack_int_rgba_R_INT16(src, dst, n); break; case MESA_FORMAT_R_UINT8: unpack_int_rgba_R_UINT8(src, dst, n); break; - case MESA_FORMAT_R_INT8: + case MESA_FORMAT_R_SINT8: unpack_int_rgba_R_INT8(src, dst, n); break; - case MESA_FORMAT_ALPHA_UINT32: - case MESA_FORMAT_ALPHA_INT32: + case MESA_FORMAT_A_UINT32: + case MESA_FORMAT_A_SINT32: unpack_int_rgba_ALPHA_UINT32(src, dst, n); break; - case MESA_FORMAT_ALPHA_UINT16: + case MESA_FORMAT_A_UINT16: unpack_int_rgba_ALPHA_UINT16(src, dst, n); break; - case MESA_FORMAT_ALPHA_INT16: + case MESA_FORMAT_A_SINT16: unpack_int_rgba_ALPHA_INT16(src, dst, n); break; - case MESA_FORMAT_ALPHA_UINT8: + case MESA_FORMAT_A_UINT8: unpack_int_rgba_ALPHA_UINT8(src, dst, n); break; - case MESA_FORMAT_ALPHA_INT8: + case MESA_FORMAT_A_SINT8: unpack_int_rgba_ALPHA_INT8(src, dst, n); break; - case MESA_FORMAT_LUMINANCE_UINT32: - case MESA_FORMAT_LUMINANCE_INT32: + case MESA_FORMAT_L_UINT32: + case MESA_FORMAT_L_SINT32: unpack_int_rgba_LUMINANCE_UINT32(src, dst, n); break; - case MESA_FORMAT_LUMINANCE_UINT16: + case MESA_FORMAT_L_UINT16: unpack_int_rgba_LUMINANCE_UINT16(src, dst, n); break; - case MESA_FORMAT_LUMINANCE_INT16: + case MESA_FORMAT_L_SINT16: unpack_int_rgba_LUMINANCE_INT16(src, dst, n); break; - case MESA_FORMAT_LUMINANCE_UINT8: + case MESA_FORMAT_L_UINT8: unpack_int_rgba_LUMINANCE_UINT8(src, dst, n); break; - case MESA_FORMAT_LUMINANCE_INT8: + case MESA_FORMAT_L_SINT8: unpack_int_rgba_LUMINANCE_INT8(src, dst, n); break; - case MESA_FORMAT_LUMINANCE_ALPHA_UINT32: - case MESA_FORMAT_LUMINANCE_ALPHA_INT32: + case MESA_FORMAT_LA_UINT32: + case MESA_FORMAT_LA_SINT32: unpack_int_rgba_LUMINANCE_ALPHA_UINT32(src, dst, n); break; - case MESA_FORMAT_LUMINANCE_ALPHA_UINT16: + case MESA_FORMAT_LA_UINT16: unpack_int_rgba_LUMINANCE_ALPHA_UINT16(src, dst, n); break; - case MESA_FORMAT_LUMINANCE_ALPHA_INT16: + case MESA_FORMAT_LA_SINT16: unpack_int_rgba_LUMINANCE_ALPHA_INT16(src, dst, n); break; - case MESA_FORMAT_LUMINANCE_ALPHA_UINT8: + case MESA_FORMAT_LA_UINT8: unpack_int_rgba_LUMINANCE_ALPHA_UINT8(src, dst, n); break; - case MESA_FORMAT_LUMINANCE_ALPHA_INT8: + case MESA_FORMAT_LA_SINT8: unpack_int_rgba_LUMINANCE_ALPHA_INT8(src, dst, n); break; - case MESA_FORMAT_INTENSITY_UINT32: - case MESA_FORMAT_INTENSITY_INT32: + case MESA_FORMAT_I_UINT32: + case MESA_FORMAT_I_SINT32: unpack_int_rgba_INTENSITY_UINT32(src, dst, n); break; - case MESA_FORMAT_INTENSITY_UINT16: + case MESA_FORMAT_I_UINT16: unpack_int_rgba_INTENSITY_UINT16(src, dst, n); break; - case MESA_FORMAT_INTENSITY_INT16: + case MESA_FORMAT_I_SINT16: unpack_int_rgba_INTENSITY_INT16(src, dst, n); break; - case MESA_FORMAT_INTENSITY_UINT8: + case MESA_FORMAT_I_UINT8: unpack_int_rgba_INTENSITY_UINT8(src, dst, n); break; - case MESA_FORMAT_INTENSITY_INT8: + case MESA_FORMAT_I_SINT8: unpack_int_rgba_INTENSITY_INT8(src, dst, n); break; @@ -3974,8 +3986,8 @@ _mesa_unpack_float_z_row(mesa_format format, GLuint n, case MESA_FORMAT_X8Z24_UNORM: unpack = unpack_float_z_Z24_X8; break; - case MESA_FORMAT_Z24_UNORM_X8_UINT: case MESA_FORMAT_Z24_UNORM_S8_UINT: + case MESA_FORMAT_Z24_UNORM_X8_UINT: unpack = unpack_float_z_X8_Z24; break; case MESA_FORMAT_Z_UNORM16: @@ -4079,8 +4091,8 @@ _mesa_unpack_uint_z_row(mesa_format format, GLuint n, case MESA_FORMAT_X8Z24_UNORM: unpack = unpack_uint_z_Z24_X8; break; - case MESA_FORMAT_Z24_UNORM_X8_UINT: case MESA_FORMAT_Z24_UNORM_S8_UINT: + case MESA_FORMAT_Z24_UNORM_X8_UINT: unpack = unpack_uint_z_X8_Z24; break; case MESA_FORMAT_Z_UNORM16: @@ -4152,7 +4164,7 @@ _mesa_unpack_ubyte_stencil_row(mesa_format format, GLuint n, case MESA_FORMAT_S8_UINT_Z24_UNORM: unpack_ubyte_s_Z24_S8(src, dst, n); break; - case MESA_FORMAT_Z24_UNORM_X8_UINT: + case MESA_FORMAT_Z24_UNORM_S8_UINT: unpack_ubyte_s_S8_Z24(src, dst, n); break; case MESA_FORMAT_Z32_FLOAT_S8X24_UINT: @@ -4176,12 +4188,31 @@ unpack_uint_24_8_depth_stencil_S8_Z24(const GLuint *src, GLuint *dst, GLuint n) } } +static void +unpack_uint_24_8_depth_stencil_Z32_S8X24(const GLuint *src, + GLuint *dst, GLuint n) +{ + GLuint i; + + for (i = 0; i < n; i++) { + /* 8 bytes per pixel (float + uint32) */ + GLfloat zf = ((GLfloat *) src)[i * 2 + 0]; + GLuint z24 = (GLuint) (zf * (GLfloat) 0xffffff); + GLuint s = src[i * 2 + 1] & 0xff; + dst[i] = (z24 << 8) | s; + } +} + static void unpack_uint_24_8_depth_stencil_Z24_S8(const GLuint *src, GLuint *dst, GLuint n) { memcpy(dst, src, n * 4); } +/** + * Unpack depth/stencil returning as GL_UNSIGNED_INT_24_8. + * \param format the source data format + */ void _mesa_unpack_uint_24_8_depth_stencil_row(mesa_format format, GLuint n, const void *src, GLuint *dst) @@ -4190,9 +4221,12 @@ _mesa_unpack_uint_24_8_depth_stencil_row(mesa_format format, GLuint n, case MESA_FORMAT_S8_UINT_Z24_UNORM: unpack_uint_24_8_depth_stencil_Z24_S8(src, dst, n); break; - case MESA_FORMAT_Z24_UNORM_X8_UINT: + case MESA_FORMAT_Z24_UNORM_S8_UINT: unpack_uint_24_8_depth_stencil_S8_Z24(src, dst, n); break; + case MESA_FORMAT_Z32_FLOAT_S8X24_UINT: + unpack_uint_24_8_depth_stencil_Z32_S8X24(src, dst, n); + break; default: _mesa_problem(NULL, "bad format %s in _mesa_unpack_uint_24_8_depth_stencil_row",