mesa: only use fallback texture when using shaders, not fixed-function (take two)

The semantics are a little different for shaders vs. fixed-function when
trying to use an incomplete texture.  The fallback texture returning
(0,0,0,1) should only be used with shaders.  For fixed function, the texture
unit is truly disabled/ignored.

Fixes glean fbo test regression.
(cherry picked from commit 01e16befd4)
(cherry picked from commit 51325f44d1)
[anholt: squashed these two together from master, skipping the mess in between]
This commit is contained in:
Brian Paul
2009-05-05 16:21:20 -06:00
committed by Eric Anholt
parent 7b861b9b9e
commit 4adc9b4a5b
+13 -7
View File
@@ -561,13 +561,19 @@ update_texture_state( GLcontext *ctx )
}
if (!texUnit->_ReallyEnabled) {
/* If we get here it means the shader (or fixed-function state)
* is expecting a texture object, but there isn't one (or it's
* incomplete). Use the fallback texture.
*/
struct gl_texture_object *texObj = _mesa_get_fallback_texture(ctx);
texUnit->_ReallyEnabled = 1 << TEXTURE_2D_INDEX;
_mesa_reference_texobj(&texUnit->_Current, texObj);
if (fprog) {
/* If we get here it means the shader is expecting a texture
* object, but there isn't one (or it's incomplete). Use the
* fallback texture.
*/
struct gl_texture_object *texObj = _mesa_get_fallback_texture(ctx);
texUnit->_ReallyEnabled = 1 << TEXTURE_2D_INDEX;
_mesa_reference_texobj(&texUnit->_Current, texObj);
}
else {
/* fixed-function: texture unit is really disabled */
continue;
}
}
/* if we get here, we know this texture unit is enabled */