mesa: handle no-op cases sooner in _mesa_[Client]ActiveTexture()

If the new texture unit is the current texture unit, we can return
before error checking.

Reviewed-by: Eric Anholt <eric@anholt.net>
This commit is contained in:
Brian Paul 2015-08-03 15:06:42 -06:00
parent ee977183dc
commit 115964052b
1 changed files with 10 additions and 10 deletions

View File

@ -289,23 +289,23 @@ _mesa_ActiveTexture(GLenum texture)
GLuint k;
GET_CURRENT_CONTEXT(ctx);
k = _mesa_max_tex_unit(ctx);
assert(k <= ARRAY_SIZE(ctx->Texture.Unit));
if (MESA_VERBOSE & (VERBOSE_API|VERBOSE_TEXTURE))
_mesa_debug(ctx, "glActiveTexture %s\n",
_mesa_enum_to_string(texture));
if (ctx->Texture.CurrentUnit == texUnit)
return;
k = _mesa_max_tex_unit(ctx);
assert(k <= ARRAY_SIZE(ctx->Texture.Unit));
if (texUnit >= k) {
_mesa_error(ctx, GL_INVALID_ENUM, "glActiveTexture(texture=%s)",
_mesa_enum_to_string(texture));
return;
}
if (ctx->Texture.CurrentUnit == texUnit)
return;
FLUSH_VERTICES(ctx, _NEW_TEXTURE);
ctx->Texture.CurrentUnit = texUnit;
@ -327,14 +327,14 @@ _mesa_ClientActiveTexture(GLenum texture)
_mesa_debug(ctx, "glClientActiveTexture %s\n",
_mesa_enum_to_string(texture));
if (ctx->Array.ActiveTexture == texUnit)
return;
if (texUnit >= ctx->Const.MaxTextureCoordUnits) {
_mesa_error(ctx, GL_INVALID_ENUM, "glClientActiveTexture(texture)");
return;
}
if (ctx->Array.ActiveTexture == texUnit)
return;
FLUSH_VERTICES(ctx, _NEW_ARRAY);
ctx->Array.ActiveTexture = texUnit;
}