summaryrefslogtreecommitdiffstats
path: root/src/mesa/main/texstate.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/mesa/main/texstate.c')
-rw-r--r--src/mesa/main/texstate.c36
1 files changed, 25 insertions, 11 deletions
diff --git a/src/mesa/main/texstate.c b/src/mesa/main/texstate.c
index 1aac3cdbd8b..1949ec2a849 100644
--- a/src/mesa/main/texstate.c
+++ b/src/mesa/main/texstate.c
@@ -279,14 +279,12 @@ calculate_derived_texenv( struct gl_tex_env_combine_state *state,
}
-
-
/* GL_ARB_multitexture */
-void GLAPIENTRY
-_mesa_ActiveTexture(GLenum texture)
+static ALWAYS_INLINE void
+active_texture(GLenum texture, bool no_error)
{
const GLuint texUnit = texture - GL_TEXTURE0;
- GLuint k;
+
GET_CURRENT_CONTEXT(ctx);
if (MESA_VERBOSE & (VERBOSE_API|VERBOSE_TEXTURE))
@@ -296,14 +294,16 @@ _mesa_ActiveTexture(GLenum texture)
if (ctx->Texture.CurrentUnit == texUnit)
return;
- k = _mesa_max_tex_unit(ctx);
+ if (!no_error) {
+ GLuint k = _mesa_max_tex_unit(ctx);
- assert(k <= ARRAY_SIZE(ctx->Texture.Unit));
+ 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 (texUnit >= k) {
+ _mesa_error(ctx, GL_INVALID_ENUM, "glActiveTexture(texture=%s)",
+ _mesa_enum_to_string(texture));
+ return;
+ }
}
FLUSH_VERTICES(ctx, _NEW_TEXTURE_STATE);
@@ -316,6 +316,20 @@ _mesa_ActiveTexture(GLenum texture)
}
+void GLAPIENTRY
+_mesa_ActiveTexture_no_error(GLenum texture)
+{
+ active_texture(texture, true);
+}
+
+
+void GLAPIENTRY
+_mesa_ActiveTexture(GLenum texture)
+{
+ active_texture(texture, false);
+}
+
+
/* GL_ARB_multitexture */
void GLAPIENTRY
_mesa_ClientActiveTexture(GLenum texture)