mesa: remove _mesa_get_tex_unit_err() and fix error handling
authorBrian Paul <brianp@vmware.com>
Wed, 30 Sep 2015 17:37:16 +0000 (11:37 -0600)
committerBrian Paul <brianp@vmware.com>
Thu, 1 Oct 2015 13:45:43 +0000 (07:45 -0600)
This helper was only called from _mesa_BindTextureUnit().  It's simpler
to just inline it.

The error check / code / message in the helper was incorrect.  It was
written for glBindTextures(), not glBindTextureUnit().  The correct
error for a bad texture unit number is GL_INVALID_VALUE.  The error
message now reports the unit number rather than a GL_TEXTUREi enum.

Fixes a failure in piglit's arb_direct_state_access-bind-texture-unit test.

Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
src/mesa/main/texobj.c
src/mesa/main/texstate.h

index d7654eba51ab3753990922c89173c456ea2cf7b2..105ec1eab9317900d31593d6e9ac4876b0e8226a 100644 (file)
@@ -1780,8 +1780,13 @@ _mesa_BindTextureUnit(GLuint unit, GLuint texture)
    struct gl_texture_object *texObj;
    struct gl_texture_unit *texUnit;
 
-   /* Get the texture unit (this is an array look-up) */
-   texUnit = _mesa_get_tex_unit_err(ctx, unit, "glBindTextureUnit");
+   if (unit >= _mesa_max_tex_unit(ctx)) {
+      _mesa_error(ctx, GL_INVALID_VALUE, "glBindTextureUnit(unit=%u)", unit);
+      return;
+   }
+
+   texUnit = _mesa_get_tex_unit(ctx, unit);
+   assert(texUnit);
    if (!texUnit) {
       return;
    }
index bee8c9c3316998581238d9a08aee39eb1e6246ee..52fe60275c23095d273c9aeb2d9a4659062fe1d9 100644 (file)
@@ -63,24 +63,6 @@ _mesa_max_tex_unit(struct gl_context *ctx)
                ctx->Const.MaxTextureCoordUnits);
 }
 
-static inline struct gl_texture_unit *
-_mesa_get_tex_unit_err(struct gl_context *ctx, GLuint unit, const char *func)
-{
-   if (unit < _mesa_max_tex_unit(ctx))
-      return _mesa_get_tex_unit(ctx, unit);
-
-   /* Note: This error is a precedent set by glBindTextures. From the GL 4.5
-    * specification (30.10.2014) Section 8.1 ("Texture Objects"):
-    *
-    *    "An INVALID_OPERATION error is generated if first + count is greater
-    *     than the number of texture image units supported by the
-    *     implementation."
-    */
-   _mesa_error(ctx, GL_INVALID_OPERATION, "%s(unit=%s)", func,
-               _mesa_enum_to_string(GL_TEXTURE0+unit));
-   return NULL;
-}
-
 
 extern void
 _mesa_copy_texture_state( const struct gl_context *src, struct gl_context *dst );