From: Brian Paul Date: Thu, 17 Mar 2011 03:13:31 +0000 (-0600) Subject: mesa: clean up the glBindTexture early out code a bit X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=dfda559b9867d70b70b99c0f3e751fd5930bdc01;p=mesa.git mesa: clean up the glBindTexture early out code a bit --- 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 */