summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoland Scheidegger <[email protected]>2004-06-02 21:40:03 +0000
committerRoland Scheidegger <[email protected]>2004-06-02 21:40:03 +0000
commit2665a4e74ca0aa56f21ddc91eacc83ec2472cbda (patch)
tree05b7e3c4a5ac11a7b9ebcf984666030daa1e544a
parent749e842953a9ea6e1c9070af7f7211bfc48aa1fd (diff)
change GL_ARB_texture_env_crossbar implementation behaviour to OGL 1.4 core specification instead of extension specification (undefined behaviour instead of disabled blending if not enabled texture units are referenced). Fix minor signedness bug.
-rw-r--r--src/mesa/drivers/dri/radeon/radeon_texstate.c24
1 files changed, 7 insertions, 17 deletions
diff --git a/src/mesa/drivers/dri/radeon/radeon_texstate.c b/src/mesa/drivers/dri/radeon/radeon_texstate.c
index 128d3153cce..e3c305ef223 100644
--- a/src/mesa/drivers/dri/radeon/radeon_texstate.c
+++ b/src/mesa/drivers/dri/radeon/radeon_texstate.c
@@ -429,7 +429,7 @@ static GLboolean radeonUpdateTextureEnv( GLcontext *ctx, int unit )
* Extract the color and alpha combine function arguments.
*/
for ( i = 0 ; i < numColorArgs ; i++ ) {
- const GLuint op = texUnit->_CurrentCombine->OperandRGB[i] - GL_SRC_COLOR;
+ const GLint op = texUnit->_CurrentCombine->OperandRGB[i] - GL_SRC_COLOR;
const GLuint srcRGBi = texUnit->_CurrentCombine->SourceRGB[i];
assert(op >= 0);
assert(op <= 3);
@@ -455,13 +455,10 @@ static GLboolean radeonUpdateTextureEnv( GLcontext *ctx, int unit )
case GL_TEXTURE0:
case GL_TEXTURE1:
case GL_TEXTURE2:
- if (ctx->Texture.Unit[srcRGBi - GL_TEXTURE0]._ReallyEnabled)
- color_arg[i] = radeon_texture_color[op][srcRGBi - GL_TEXTURE0];
- else {
- color_combine = color_combine0;
- alpha_combine = alpha_combine0;
- goto write_txblend;
- }
+ /* implement ogl 1.4/1.5 core spec here, not specification of
+ * GL_ARB_texture_env_crossbar (which would require disabling blending
+ * instead of undefined results when referencing not enabled texunit) */
+ color_arg[i] = radeon_texture_color[op][srcRGBi - GL_TEXTURE0];
break;
default:
return GL_FALSE;
@@ -469,7 +466,7 @@ static GLboolean radeonUpdateTextureEnv( GLcontext *ctx, int unit )
}
for ( i = 0 ; i < numAlphaArgs ; i++ ) {
- const GLuint op = texUnit->_CurrentCombine->OperandA[i] - GL_SRC_ALPHA;
+ const GLint op = texUnit->_CurrentCombine->OperandA[i] - GL_SRC_ALPHA;
const GLuint srcAi = texUnit->_CurrentCombine->SourceA[i];
assert(op >= 0);
assert(op <= 1);
@@ -495,13 +492,7 @@ static GLboolean radeonUpdateTextureEnv( GLcontext *ctx, int unit )
case GL_TEXTURE0:
case GL_TEXTURE1:
case GL_TEXTURE2:
- if (ctx->Texture.Unit[srcAi - GL_TEXTURE0]._ReallyEnabled)
- alpha_arg[i] = radeon_texture_alpha[op][srcAi - GL_TEXTURE0];
- else {
- color_combine = color_combine0;
- alpha_combine = alpha_combine0;
- goto write_txblend;
- }
+ alpha_arg[i] = radeon_texture_alpha[op][srcAi - GL_TEXTURE0];
break;
default:
return GL_FALSE;
@@ -699,7 +690,6 @@ static GLboolean radeonUpdateTextureEnv( GLcontext *ctx, int unit )
*/
}
-write_txblend:
if ( rmesa->hw.tex[unit].cmd[TEX_PP_TXCBLEND] != color_combine ||
rmesa->hw.tex[unit].cmd[TEX_PP_TXABLEND] != alpha_combine ) {
RADEON_STATECHANGE( rmesa, tex[unit] );