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:
parent
1a2d498b41
commit
de1ffd2f62
|
@ -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);
|
||||
|
||||
/*
|
||||
|
|
Loading…
Reference in New Issue