diff options
author | Brian Paul <brianp@vmware.com> | 2009-05-05 16:29:04 -0600 |
---|---|---|
committer | Brian Paul <brianp@vmware.com> | 2009-05-05 16:29:04 -0600 |
commit | a0edbfb28fb2e670c657d52190a7e8b1ccf4f46e (patch) | |
tree | 342dc4af86d73a64e8226fcd012f11d0e761b29c /src/mesa/main/texstate.c | |
parent | 01e16befd4809e3e93ee7855a4a5d7df9fe010d9 (diff) |
mesa: only use fallback texture when using shaders, not fixed-function
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.
Fixes glean fbo test regression.
Diffstat (limited to 'src/mesa/main/texstate.c')
-rw-r--r-- | src/mesa/main/texstate.c | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/src/mesa/main/texstate.c b/src/mesa/main/texstate.c index 9664bd58bc..5453331c67 100644 --- a/src/mesa/main/texstate.c +++ b/src/mesa/main/texstate.c @@ -560,14 +560,20 @@ update_texture_state( GLcontext *ctx ) } } - if (fprog && !texUnit->_ReallyEnabled) { - /* 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); + if (!texUnit->_ReallyEnabled) { + 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 */ |