mesa: combine GL_TEXTURE_INTENSITY/LUMINANCE_SIZE queries

Use the _mesa_base_format_has_channel() helper as we do for the
other texture format component queries.

Reviewed-by: Eric Anholt <eric@anholt.net>
This commit is contained in:
Brian Paul 2011-11-23 15:33:46 -07:00
parent f0b6e9a729
commit d45c9b239f
1 changed files with 8 additions and 17 deletions

View File

@ -1071,28 +1071,19 @@ _mesa_GetTexLevelParameteriv( GLenum target, GLint level,
*params = 0;
break;
case GL_TEXTURE_INTENSITY_SIZE:
if (img->_BaseFormat != GL_INTENSITY)
*params = 0;
else {
case GL_TEXTURE_LUMINANCE_SIZE:
if (_mesa_base_format_has_channel(img->_BaseFormat, pname)) {
*params = _mesa_get_format_bits(texFormat, pname);
if (*params == 0) {
/* intensity probably stored as rgb texture */
*params = MIN2(_mesa_get_format_bits(texFormat, GL_TEXTURE_RED_SIZE),
_mesa_get_format_bits(texFormat, GL_TEXTURE_GREEN_SIZE));
/* intensity or luminance is probably stored as RGB[A] */
*params = MIN2(_mesa_get_format_bits(texFormat,
GL_TEXTURE_RED_SIZE),
_mesa_get_format_bits(texFormat,
GL_TEXTURE_GREEN_SIZE));
}
}
break;
case GL_TEXTURE_LUMINANCE_SIZE:
if (img->_BaseFormat != GL_LUMINANCE &&
img->_BaseFormat != GL_LUMINANCE_ALPHA)
*params = 0;
else {
*params = _mesa_get_format_bits(texFormat, pname);
if (*params == 0) {
/* luminance probably stored as rgb texture */
*params = MIN2(_mesa_get_format_bits(texFormat, GL_TEXTURE_RED_SIZE),
_mesa_get_format_bits(texFormat, GL_TEXTURE_GREEN_SIZE));
}
*params = 0;
}
break;
case GL_TEXTURE_DEPTH_SIZE_ARB: