diff options
-rw-r--r-- | src/mesa/main/texstate.c | 10 | ||||
-rw-r--r-- | src/mesa/swrast/s_texture.c | 5 |
2 files changed, 9 insertions, 6 deletions
diff --git a/src/mesa/main/texstate.c b/src/mesa/main/texstate.c index 2c1d155f52e..a62106aa491 100644 --- a/src/mesa/main/texstate.c +++ b/src/mesa/main/texstate.c @@ -525,8 +525,7 @@ _mesa_TexEnvfv( GLenum target, GLenum pname, const GLfloat *param ) if (texUnit->LodBias == param[0]) return; FLUSH_VERTICES(ctx, _NEW_TEXTURE); - texUnit->LodBias = CLAMP(param[0], -ctx->Const.MaxTextureLodBias, - ctx->Const.MaxTextureLodBias); + texUnit->LodBias = param[0]; } else { TE_ERROR(GL_INVALID_ENUM, "glTexEnv(pname=%s)", pname); @@ -1402,9 +1401,10 @@ _mesa_TexParameterfv( GLenum target, GLenum pname, const GLfloat *params ) case GL_TEXTURE_LOD_BIAS: /* NOTE: this is really part of OpenGL 1.4, not EXT_texture_lod_bias*/ if (ctx->Extensions.EXT_texture_lod_bias) { - texObj->LodBias = CLAMP(params[0], - -ctx->Const.MaxTextureLodBias, - ctx->Const.MaxTextureLodBias); + if (texObj->LodBias != params[0]) { + FLUSH_VERTICES(ctx, _NEW_TEXTURE); + texObj->LodBias = params[0]; + } } break; diff --git a/src/mesa/swrast/s_texture.c b/src/mesa/swrast/s_texture.c index b9e08148ecf..36f2975312d 100644 --- a/src/mesa/swrast/s_texture.c +++ b/src/mesa/swrast/s_texture.c @@ -4200,9 +4200,12 @@ _swrast_texture_span( GLcontext *ctx, struct sw_span *span ) if (span->arrayMask & SPAN_LAMBDA) { if (texUnit->LodBias + curObj->LodBias != 0.0F) { /* apply LOD bias, but don't clamp yet */ + const GLfloat bias = CLAMP(texUnit->LodBias + curObj->LodBias, + -ctx->Const.MaxTextureLodBias, + ctx->Const.MaxTextureLodBias); GLuint i; for (i = 0; i < span->end; i++) { - lambda[i] += (texUnit->LodBias + curObj->LodBias); + lambda[i] += bias; } } |