From: Chris Forbes Date: Sun, 13 Apr 2014 00:37:31 +0000 (+1200) Subject: mesa: Track max enabled tex image unit X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=c4a98e76d7dcb84ba6a0337dc975351966c4dac7;p=mesa.git mesa: Track max enabled tex image unit This gives us a better bound for some hot loops in the drivers than MAX_COMBINED_TEXTURE_IMAGE_UNITS, which is ridiculously large on modern hardware, and only getting worse as more shader stages are added. Signed-off-by: Chris Forbes Reviewed-by: Anuj Phogat Reviewed-by: Ian Romanick --- diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h index 4d014d1ee3a..66943836c5b 100644 --- a/src/mesa/main/mtypes.h +++ b/src/mesa/main/mtypes.h @@ -1402,6 +1402,9 @@ struct gl_texture_attrib /** Bitwise-OR of all Texture.Unit[i]._GenFlags */ GLbitfield _GenFlags; + + /** Upper bound on _ReallyEnabled texunits. */ + GLint _MaxEnabledTexImageUnit; }; diff --git a/src/mesa/main/texstate.c b/src/mesa/main/texstate.c index fcae878cf84..b68920ce170 100644 --- a/src/mesa/main/texstate.c +++ b/src/mesa/main/texstate.c @@ -550,6 +550,7 @@ update_texture_state( struct gl_context *ctx ) ctx->Texture._GenFlags = 0x0; ctx->Texture._TexMatEnabled = 0x0; ctx->Texture._TexGenEnabled = 0x0; + ctx->Texture._MaxEnabledTexImageUnit = -1; /* * Update texture unit state. @@ -636,6 +637,7 @@ update_texture_state( struct gl_context *ctx ) /* if we get here, we know this texture unit is enabled */ ctx->Texture._EnabledUnits |= (1 << unit); + ctx->Texture._MaxEnabledTexImageUnit = unit; if (enabledTargetsByStage[MESA_SHADER_FRAGMENT]) enabledFragUnits |= (1 << unit);