diff options
Diffstat (limited to 'src/mesa/main/texstate.c')
-rw-r--r-- | src/mesa/main/texstate.c | 50 |
1 files changed, 24 insertions, 26 deletions
diff --git a/src/mesa/main/texstate.c b/src/mesa/main/texstate.c index 8cb247e413b..b3204376d5f 100644 --- a/src/mesa/main/texstate.c +++ b/src/mesa/main/texstate.c @@ -1,6 +1,6 @@ /* * Mesa 3-D graphics library - * Version: 5.1 + * Version: 6.1 * * Copyright (C) 1999-2003 Brian Paul All Rights Reserved. * @@ -176,19 +176,19 @@ _mesa_print_texunit_state( GLcontext *ctx, GLuint unit ) * \param state texture_env_combine state vector to be filled-in. * \param mode Classic texture environment mode (i.e., \c GL_REPLACE, * \c GL_BLEND, \c GL_DECAL, etc.). - * \param tex_base_format Base format of the texture associated with the + * \param texBaseFormat Base format of the texture associated with the * texture unit. */ static void -calculate_derived_texenv( struct gl_tex_env_combine_state * state, - GLenum mode, GLenum tex_base_format ) +calculate_derived_texenv( struct gl_tex_env_combine_state *state, + GLenum mode, GLenum texBaseFormat ) { GLenum mode_rgb; GLenum mode_a; *state = default_combine_state; - switch( tex_base_format ) { + switch (texBaseFormat) { case GL_ALPHA: state->SourceRGB[0] = GL_PREVIOUS; break; @@ -205,18 +205,14 @@ calculate_derived_texenv( struct gl_tex_env_combine_state * state, break; default: - state->SourceRGB[0] = GL_PREVIOUS; - state->SourceA[0] = GL_PREVIOUS; - state->ModeRGB = GL_REPLACE; - state->ModeA = GL_REPLACE; - ASSERT(0); + _mesa_problem(NULL, "Invalid texBaseFormat in calculate_derived_texenv"); return; } - switch( mode ) { + switch (mode) { case GL_REPLACE: case GL_MODULATE: - mode_rgb = (tex_base_format == GL_ALPHA) ? GL_REPLACE : mode; + mode_rgb = (texBaseFormat == GL_ALPHA) ? GL_REPLACE : mode; mode_a = mode; break; @@ -230,7 +226,7 @@ calculate_derived_texenv( struct gl_tex_env_combine_state * state, * incoming fragment color matches the definition in NV_texture_shader. * The 1.5 spec simply marks these as "undefined". */ - switch( tex_base_format ) { + switch (texBaseFormat) { case GL_ALPHA: case GL_LUMINANCE: case GL_LUMINANCE_ALPHA: @@ -251,7 +247,7 @@ calculate_derived_texenv( struct gl_tex_env_combine_state * state, mode_rgb = GL_INTERPOLATE; mode_a = GL_MODULATE; - switch( tex_base_format ) { + switch (texBaseFormat) { case GL_ALPHA: mode_rgb = GL_REPLACE; break; @@ -272,15 +268,14 @@ calculate_derived_texenv( struct gl_tex_env_combine_state * state, break; case GL_ADD: - mode_rgb = (tex_base_format == GL_ALPHA) ? GL_REPLACE : GL_ADD; - mode_a = (tex_base_format == GL_INTENSITY) ? GL_ADD : GL_MODULATE; + mode_rgb = (texBaseFormat == GL_ALPHA) ? GL_REPLACE : GL_ADD; + mode_a = (texBaseFormat == GL_INTENSITY) ? GL_ADD : GL_MODULATE; break; default: - mode_rgb = GL_REPLACE; - mode_a = GL_REPLACE; - ASSERT(0); - break; + _mesa_problem(NULL, + "Invalid texture env mode in calculate_derived_texenv"); + return; } state->ModeRGB = (state->SourceRGB[0] != GL_PREVIOUS) @@ -289,6 +284,7 @@ calculate_derived_texenv( struct gl_tex_env_combine_state * state, ? mode_a : GL_REPLACE; } + void GLAPIENTRY _mesa_TexEnvfv( GLenum target, GLenum pname, const GLfloat *param ) { @@ -2954,9 +2950,11 @@ update_texture_state( GLcontext *ctx ) texUnit->_CurrentCombine = & texUnit->Combine; } else { - calculate_derived_texenv( & texUnit->_EnvMode, - texUnit->EnvMode, - texUnit->_Current->Image[0][0]->Format ); + GLenum format = texUnit->_Current->Image[0][0]->Format; + if (format == GL_COLOR_INDEX) { + format = GL_RGBA; /* a bit of a hack */ + } + calculate_derived_texenv(&texUnit->_EnvMode, texUnit->EnvMode, format); texUnit->_CurrentCombine = & texUnit->_EnvMode; } @@ -2982,8 +2980,8 @@ update_texture_state( GLcontext *ctx ) break; default: texUnit->_CurrentCombine->_NumArgsRGB = 0; - ASSERT(0); - break; + _mesa_problem(ctx, "invalid RGB combine mode in update_texture_state"); + return; } switch (texUnit->_CurrentCombine->ModeA) { @@ -3004,7 +3002,7 @@ update_texture_state( GLcontext *ctx ) break; default: texUnit->_CurrentCombine->_NumArgsA = 0; - ASSERT(0); + _mesa_problem(ctx, "invalid Alpha combine mode in update_texture_state"); break; } |