diff options
author | Brian Paul <[email protected]> | 2011-03-16 21:13:31 -0600 |
---|---|---|
committer | Brian Paul <[email protected]> | 2011-03-16 21:13:31 -0600 |
commit | dfda559b9867d70b70b99c0f3e751fd5930bdc01 (patch) | |
tree | a518ba2e33e13b0704ea978401fde2abfdc93630 | |
parent | 2279156fe7ac9718533b8b0de90ae96100486680 (diff) |
mesa: clean up the glBindTexture early out code a bit
-rw-r--r-- | src/mesa/main/texobj.c | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/src/mesa/main/texobj.c b/src/mesa/main/texobj.c index 5be881ec45e..10ddc77b459 100644 --- a/src/mesa/main/texobj.c +++ b/src/mesa/main/texobj.c @@ -1017,7 +1017,6 @@ _mesa_BindTexture( GLenum target, GLuint texName ) struct gl_texture_unit *texUnit = &ctx->Texture.Unit[unit]; struct gl_texture_object *newTexObj = NULL, *defaultTexObj = NULL; GLint targetIndex; - GLboolean early_out = GL_FALSE; ASSERT_OUTSIDE_BEGIN_END(ctx); if (MESA_VERBOSE & (VERBOSE_API|VERBOSE_TEXTURE)) @@ -1071,15 +1070,18 @@ _mesa_BindTexture( GLenum target, GLuint texName ) assert(valid_texture_object(newTexObj)); - _glthread_LOCK_MUTEX(ctx->Shared->Mutex); - if ((ctx->Shared->RefCount == 1) - && (newTexObj == texUnit->CurrentTex[targetIndex])) { - early_out = GL_TRUE; - } - _glthread_UNLOCK_MUTEX(ctx->Shared->Mutex); - - if (early_out) { - return; + /* Check if this texture is only used by this context and is already bound. + * If so, just return. + */ + { + GLboolean early_out; + _glthread_LOCK_MUTEX(ctx->Shared->Mutex); + early_out = ((ctx->Shared->RefCount == 1) + && (newTexObj == texUnit->CurrentTex[targetIndex])); + _glthread_UNLOCK_MUTEX(ctx->Shared->Mutex); + if (early_out) { + return; + } } /* flush before changing binding */ |