This will be used by glBindTextures() when unbinding textures, to avoid having to loop over all the targets. --- src/mesa/main/mtypes.h | 3 +++ src/mesa/main/texobj.c | 6 ++++++ src/mesa/main/texstate.c | 3 +++ 3 files changed, 12 insertions(+)
diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h index 2fe47c4..c1a17b8 100644 --- a/src/mesa/main/mtypes.h +++ b/src/mesa/main/mtypes.h @@ -1368,6 +1368,9 @@ struct gl_texture_unit /** Points to highest priority, complete and enabled texture object */ struct gl_texture_object *_Current; + + /** Texture targets that have a non-default texture bound */ + GLbitfield _BoundTextures; }; diff --git a/src/mesa/main/texobj.c b/src/mesa/main/texobj.c index 4d97275..fbbc577 100644 --- a/src/mesa/main/texobj.c +++ b/src/mesa/main/texobj.c @@ -1093,6 +1093,7 @@ unbind_texobj_from_texunits(struct gl_context *ctx, _mesa_reference_texobj(&unit->CurrentTex[tex], ctx->Shared->DefaultTex[tex]); ASSERT(unit->CurrentTex[tex]); + unit->_BoundTextures ^= (1 << tex); break; } } @@ -1348,6 +1349,11 @@ _mesa_BindTexture( GLenum target, GLuint texName ) _mesa_reference_texobj(&texUnit->CurrentTex[targetIndex], newTexObj); ASSERT(texUnit->CurrentTex[targetIndex]); + if (texName != 0) + texUnit->_BoundTextures |= (1 << targetIndex); + else + texUnit->_BoundTextures &= ~(1 << targetIndex); + /* Pass BindTexture call to device driver */ if (ctx->Driver.BindTexture) ctx->Driver.BindTexture(ctx, target, newTexObj); diff --git a/src/mesa/main/texstate.c b/src/mesa/main/texstate.c index 7720965..c86324f 100644 --- a/src/mesa/main/texstate.c +++ b/src/mesa/main/texstate.c @@ -109,6 +109,7 @@ _mesa_copy_texture_state( const struct gl_context *src, struct gl_context *dst ) _mesa_reference_texobj(&dst->Texture.Unit[u].CurrentTex[tex], src->Texture.Unit[u].CurrentTex[tex]); } + dst->Texture.Unit[u]._BoundTextures = src->Texture.Unit[u]._BoundTextures; _mesa_unlock_context_textures(dst); } } @@ -798,6 +799,8 @@ init_texture_unit( struct gl_context *ctx, GLuint unit ) _mesa_reference_texobj(&texUnit->CurrentTex[tex], ctx->Shared->DefaultTex[tex]); } + + texUnit->_BoundTextures = 0; } -- 1.7.10.4 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev