* Only the glGetTexLevelParameter() functions accept proxy targets.
*/
static struct gl_texture_object *
-get_texobj(struct gl_context *ctx, GLenum target, GLboolean get)
+get_texobj_by_target(struct gl_context *ctx, GLenum target, GLboolean get)
{
struct gl_texture_unit *texUnit;
int targetIndex;
return texUnit->CurrentTex[targetIndex];
}
+/**
+ * Get current texture object for given name.
+ * Return NULL if any error (and record the error).
+ * Note that proxy targets are not accepted.
+ * Only the glGetTexLevelParameter() functions accept proxy targets.
+ */
+static struct gl_texture_object *
+get_texobj_by_name(struct gl_context *ctx, GLuint texture, GLboolean get)
+{
+ struct gl_texture_object *texObj;
+
+ texObj = _mesa_lookup_texture(ctx, texture);
+ if (!texObj) {
+ /*
+ * User passed a non-generated name.
+ * Throw the error in the caller.
+ */
+ return NULL;
+ }
+
+ switch (texObj->Target) {
+ case GL_TEXTURE_1D:
+ case GL_TEXTURE_1D_ARRAY:
+ case GL_TEXTURE_2D:
+ case GL_TEXTURE_2D_ARRAY:
+ case GL_TEXTURE_2D_MULTISAMPLE:
+ case GL_TEXTURE_2D_MULTISAMPLE_ARRAY:
+ case GL_TEXTURE_3D:
+ case GL_TEXTURE_CUBE_MAP:
+ case GL_TEXTURE_CUBE_MAP_ARRAY:
+ case GL_TEXTURE_RECTANGLE:
+ return texObj;
+ default:
+ _mesa_error(ctx, GL_INVALID_ENUM,
+ "gl%sTextureParameter(target)", get ? "Get" : "");
+ return NULL;
+ }
+
+}
+
/**
* Convert GL_RED/GREEN/BLUE/ALPHA/ZERO/ONE to SWIZZLE_X/Y/Z/W/ZERO/ONE.
struct gl_texture_object *texObj;
GET_CURRENT_CONTEXT(ctx);
- texObj = get_texobj(ctx, target, GL_FALSE);
+ texObj = get_texobj_by_target(ctx, target, GL_FALSE);
if (!texObj)
return;
struct gl_texture_object *texObj;
GET_CURRENT_CONTEXT(ctx);
- texObj = get_texobj(ctx, target, GL_FALSE);
+ texObj = get_texobj_by_target(ctx, target, GL_FALSE);
if (!texObj)
return;
struct gl_texture_object *texObj;
GET_CURRENT_CONTEXT(ctx);
- texObj = get_texobj(ctx, target, GL_FALSE);
+ texObj = get_texobj_by_target(ctx, target, GL_FALSE);
if (!texObj)
return;
struct gl_texture_object *texObj;
GET_CURRENT_CONTEXT(ctx);
- texObj = get_texobj(ctx, target, GL_FALSE);
+ texObj = get_texobj_by_target(ctx, target, GL_FALSE);
if (!texObj)
return;
}
}
-
/**
* Set tex parameter to integer value(s). Primarily intended to set
* integer-valued texture border color (for integer-valued textures).
struct gl_texture_object *texObj;
GET_CURRENT_CONTEXT(ctx);
- texObj = get_texobj(ctx, target, GL_FALSE);
+ texObj = get_texobj_by_target(ctx, target, GL_FALSE);
if (!texObj)
return;
struct gl_texture_object *texObj;
GET_CURRENT_CONTEXT(ctx);
- texObj = get_texobj(ctx, target, GL_FALSE);
+ texObj = get_texobj_by_target(ctx, target, GL_FALSE);
if (!texObj)
return;
struct gl_texture_object *obj;
GET_CURRENT_CONTEXT(ctx);
- obj = get_texobj(ctx, target, GL_TRUE);
+ obj = get_texobj_by_target(ctx, target, GL_TRUE);
if (!obj)
return;
struct gl_texture_object *obj;
GET_CURRENT_CONTEXT(ctx);
- obj = get_texobj(ctx, target, GL_TRUE);
+ obj = get_texobj_by_target(ctx, target, GL_TRUE);
if (!obj)
return;
_mesa_error(ctx, GL_INVALID_ENUM, "glGetTexParameteriv(pname=0x%x)", pname);
}
-
/** New in GL 3.0 */
void GLAPIENTRY
_mesa_GetTexParameterIiv(GLenum target, GLenum pname, GLint *params)
struct gl_texture_object *texObj;
GET_CURRENT_CONTEXT(ctx);
- texObj = get_texobj(ctx, target, GL_TRUE);
+ texObj = get_texobj_by_target(ctx, target, GL_TRUE);
if (!texObj)
return;
struct gl_texture_object *texObj;
GET_CURRENT_CONTEXT(ctx);
- texObj = get_texobj(ctx, target, GL_TRUE);
+ texObj = get_texobj_by_target(ctx, target, GL_TRUE);
if (!texObj)
return;