mesa: handle no-op cases sooner in _mesa_[Client]ActiveTexture()
authorBrian Paul <brianp@vmware.com>
Mon, 3 Aug 2015 21:06:42 +0000 (15:06 -0600)
committerBrian Paul <brianp@vmware.com>
Thu, 6 Aug 2015 13:38:47 +0000 (07:38 -0600)
If the new texture unit is the current texture unit, we can return
before error checking.

Reviewed-by: Eric Anholt <eric@anholt.net>
src/mesa/main/texstate.c

index 1e75e0a..9b5928c 100644 (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;
 }