static GLboolean
set_tex_parameteri(struct gl_context *ctx,
struct gl_texture_object *texObj,
- GLenum pname, const GLint *params)
+ GLenum pname, const GLint *params, bool dsa)
{
+ const char *suffix = dsa ? "ture" : "";
+
switch (pname) {
case GL_TEXTURE_MIN_FILTER:
if (!target_allows_setting_sampler_parameters(texObj->Target))
- goto invalid_operation;
+ goto invalid_enum;
if (texObj->Sampler.MinFilter == params[0])
return GL_FALSE;
case GL_TEXTURE_MAG_FILTER:
if (!target_allows_setting_sampler_parameters(texObj->Target))
- goto invalid_operation;
+ goto invalid_enum;
if (texObj->Sampler.MagFilter == params[0])
return GL_FALSE;
case GL_TEXTURE_WRAP_S:
if (!target_allows_setting_sampler_parameters(texObj->Target))
- goto invalid_operation;
+ goto invalid_enum;
if (texObj->Sampler.WrapS == params[0])
return GL_FALSE;
case GL_TEXTURE_WRAP_T:
if (!target_allows_setting_sampler_parameters(texObj->Target))
- goto invalid_operation;
+ goto invalid_enum;
if (texObj->Sampler.WrapT == params[0])
return GL_FALSE;
case GL_TEXTURE_WRAP_R:
if (!target_allows_setting_sampler_parameters(texObj->Target))
- goto invalid_operation;
+ goto invalid_enum;
if (texObj->Sampler.WrapR == params[0])
return GL_FALSE;
texObj->Target == GL_TEXTURE_2D_MULTISAMPLE_ARRAY) && params[0] != 0)
goto invalid_operation;
- if (params[0] < 0 ||
- (texObj->Target == GL_TEXTURE_RECTANGLE_ARB && params[0] != 0)) {
+ if (params[0] < 0) {
_mesa_error(ctx, GL_INVALID_VALUE,
- "glTexParameter(param=%d)", params[0]);
+ "glTex%sParameter(param=%d)", suffix, params[0]);
+ return GL_FALSE;
+ }
+ if (texObj->Target == GL_TEXTURE_RECTANGLE_ARB && params[0] != 0) {
+ _mesa_error(ctx, GL_INVALID_OPERATION,
+ "glTex%sParameter(target=%s, param=%d)", suffix,
+ _mesa_lookup_enum_by_nr(texObj->Target), params[0]);
return GL_FALSE;
}
incomplete(ctx, texObj);
if (params[0] < 0 ||
(texObj->Target == GL_TEXTURE_RECTANGLE_ARB && params[0] > 0)) {
_mesa_error(ctx, GL_INVALID_VALUE,
- "glTexParameter(param=%d)", params[0]);
+ "glTex%sParameter(param=%d)", suffix,
+ params[0]);
return GL_FALSE;
}
incomplete(ctx, texObj);
|| _mesa_is_gles3(ctx)) {
if (!target_allows_setting_sampler_parameters(texObj->Target))
- goto invalid_operation;
+ goto invalid_enum;
if (texObj->Sampler.CompareMode == params[0])
return GL_FALSE;
|| _mesa_is_gles3(ctx)) {
if (!target_allows_setting_sampler_parameters(texObj->Target))
- goto invalid_operation;
+ goto invalid_enum;
if (texObj->Sampler.CompareFunc == params[0])
return GL_FALSE;
const GLint swz = comp_to_swizzle(params[0]);
if (swz < 0) {
_mesa_error(ctx, GL_INVALID_ENUM,
- "glTexParameter(swizzle 0x%x)", params[0]);
+ "glTex%sParameter(swizzle 0x%x)", suffix, params[0]);
return GL_FALSE;
}
ASSERT(comp < 4);
}
else {
_mesa_error(ctx, GL_INVALID_ENUM,
- "glTexParameter(swizzle 0x%x)", params[comp]);
+ "glTex%sParameter(swizzle 0x%x)",
+ suffix, params[comp]);
return GL_FALSE;
}
}
GLenum decode = params[0];
if (!target_allows_setting_sampler_parameters(texObj->Target))
- goto invalid_operation;
+ goto invalid_enum;
if (decode == GL_DECODE_EXT || decode == GL_SKIP_DECODE_EXT) {
if (texObj->Sampler.sRGBDecode != decode) {
GLenum param = params[0];
if (!target_allows_setting_sampler_parameters(texObj->Target))
- goto invalid_operation;
+ goto invalid_enum;
if (param != GL_TRUE && param != GL_FALSE) {
goto invalid_param;
}
invalid_pname:
- _mesa_error(ctx, GL_INVALID_ENUM, "glTexParameter(pname=%s)",
- _mesa_lookup_enum_by_nr(pname));
+ _mesa_error(ctx, GL_INVALID_ENUM, "glTex%sParameter(pname=%s)",
+ suffix, _mesa_lookup_enum_by_nr(pname));
return GL_FALSE;
invalid_param:
- _mesa_error(ctx, GL_INVALID_ENUM, "glTexParameter(param=%s)",
- _mesa_lookup_enum_by_nr(params[0]));
+ _mesa_error(ctx, GL_INVALID_ENUM, "glTex%sParameter(param=%s)",
+ suffix, _mesa_lookup_enum_by_nr(params[0]));
return GL_FALSE;
invalid_operation:
- _mesa_error(ctx, GL_INVALID_OPERATION, "glTexParameter(pname=%s)",
- _mesa_lookup_enum_by_nr(pname));
+ _mesa_error(ctx, GL_INVALID_OPERATION, "glTex%sParameter(pname=%s)",
+ suffix, _mesa_lookup_enum_by_nr(pname));
+ return GL_FALSE;
+
+invalid_enum:
+ _mesa_error(ctx, GL_INVALID_ENUM, "glTex%sParameter(pname=%s)",
+ suffix, _mesa_lookup_enum_by_nr(pname));
return GL_FALSE;
}
((param < INT_MIN) ? INT_MIN : (GLint) (param - 0.5));
p[1] = p[2] = p[3] = 0;
- need_update = set_tex_parameteri(ctx, texObj, pname, p);
+ need_update = set_tex_parameteri(ctx, texObj, pname, p, false);
}
break;
default:
GLint p[4];
p[0] = (GLint) params[0];
p[1] = p[2] = p[3] = 0;
- need_update = set_tex_parameteri(ctx, texObj, pname, p);
+ need_update = set_tex_parameteri(ctx, texObj, pname, p, false);
}
break;
case GL_TEXTURE_CROP_RECT_OES:
iparams[1] = (GLint) params[1];
iparams[2] = (GLint) params[2];
iparams[3] = (GLint) params[3];
- need_update = set_tex_parameteri(ctx, texObj, pname, iparams);
+ need_update = set_tex_parameteri(ctx, texObj, pname, iparams, false);
}
break;
case GL_TEXTURE_SWIZZLE_R_EXT:
p[2] = (GLint) params[2];
p[3] = (GLint) params[3];
}
- need_update = set_tex_parameteri(ctx, texObj, pname, p);
+ need_update = set_tex_parameteri(ctx, texObj, pname, p, false);
}
break;
default:
GLint iparam[4];
iparam[0] = param;
iparam[1] = iparam[2] = iparam[3] = 0;
- need_update = set_tex_parameteri(ctx, texObj, pname, iparam);
+ need_update = set_tex_parameteri(ctx, texObj, pname, iparam, false);
}
}
break;
default:
/* this will generate an error if pname is illegal */
- need_update = set_tex_parameteri(ctx, texObj, pname, params);
+ need_update = set_tex_parameteri(ctx, texObj, pname, params, false);
}
if (ctx->Driver.TexParameter && need_update) {