mesa: Refactor parameter processing in set_combiner_(operand|source)

The enum values were chosen to have sequential values for a reason.
Use that to compact and simplify the code.
This commit is contained in:
Ian Romanick 2010-09-08 10:46:10 -07:00
parent 1a2d498b41
commit de1ffd2f62
1 changed files with 22 additions and 68 deletions

View File

@ -196,57 +196,34 @@ set_combiner_source(GLcontext *ctx,
/*
* Translate pname to (term, alpha).
*
* The enums were given sequential values for a reason.
*/
switch (pname) {
case GL_SOURCE0_RGB:
term = 0;
alpha = GL_FALSE;
break;
case GL_SOURCE1_RGB:
term = 1;
alpha = GL_FALSE;
break;
case GL_SOURCE2_RGB:
term = 2;
alpha = GL_FALSE;
break;
case GL_SOURCE3_RGB_NV:
if (ctx->Extensions.NV_texture_env_combine4) {
term = 3;
alpha = GL_FALSE;
}
else {
TE_ERROR(GL_INVALID_ENUM, "glTexEnv(pname=%s)", pname);
return;
}
term = pname - GL_SOURCE0_RGB;
alpha = GL_FALSE;
break;
case GL_SOURCE0_ALPHA:
term = 0;
alpha = GL_TRUE;
break;
case GL_SOURCE1_ALPHA:
term = 1;
alpha = GL_TRUE;
break;
case GL_SOURCE2_ALPHA:
term = 2;
alpha = GL_TRUE;
break;
case GL_SOURCE3_ALPHA_NV:
if (ctx->Extensions.NV_texture_env_combine4) {
term = 3;
alpha = GL_TRUE;
}
else {
TE_ERROR(GL_INVALID_ENUM, "glTexEnv(pname=%s)", pname);
return;
}
term = pname - GL_SOURCE0_ALPHA;
alpha = GL_TRUE;
break;
default:
TE_ERROR(GL_INVALID_ENUM, "glTexEnv(pname=%s)", pname);
return;
}
if ((term == 3) && !ctx->Extensions.NV_texture_env_combine4) {
TE_ERROR(GL_INVALID_ENUM, "glTexEnv(pname=%s)", pname);
return;
}
assert(term < MAX_COMBINER_TERMS);
/*
@ -310,56 +287,33 @@ set_combiner_operand(GLcontext *ctx,
return;
}
/* The enums were given sequential values for a reason.
*/
switch (pname) {
case GL_OPERAND0_RGB:
term = 0;
alpha = GL_FALSE;
break;
case GL_OPERAND1_RGB:
term = 1;
alpha = GL_FALSE;
break;
case GL_OPERAND2_RGB:
term = 2;
alpha = GL_FALSE;
break;
case GL_OPERAND3_RGB_NV:
if (ctx->Extensions.NV_texture_env_combine4) {
term = 3;
alpha = GL_FALSE;
}
else {
TE_ERROR(GL_INVALID_ENUM, "glTexEnv(pname=%s)", pname);
return;
}
term = pname - GL_OPERAND0_RGB;
alpha = GL_FALSE;
break;
case GL_OPERAND0_ALPHA:
term = 0;
alpha = GL_TRUE;
break;
case GL_OPERAND1_ALPHA:
term = 1;
alpha = GL_TRUE;
break;
case GL_OPERAND2_ALPHA:
term = 2;
alpha = GL_TRUE;
break;
case GL_OPERAND3_ALPHA_NV:
if (ctx->Extensions.NV_texture_env_combine4) {
term = 3;
alpha = GL_TRUE;
}
else {
TE_ERROR(GL_INVALID_ENUM, "glTexEnv(pname=%s)", pname);
return;
}
term = pname - GL_OPERAND0_ALPHA;
alpha = GL_TRUE;
break;
default:
TE_ERROR(GL_INVALID_ENUM, "glTexEnv(pname=%s)", pname);
return;
}
if ((term == 3) && !ctx->Extensions.NV_texture_env_combine4) {
TE_ERROR(GL_INVALID_ENUM, "glTexEnv(pname=%s)", pname);
return;
}
assert(term < MAX_COMBINER_TERMS);
/*