Mesa (master): mesa: Track max enabled tex image unit

Chris Forbes chrisf at kemper.freedesktop.org
Sun Apr 20 22:12:29 UTC 2014


Module: Mesa
Branch: master
Commit: c4a98e76d7dcb84ba6a0337dc975351966c4dac7
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=c4a98e76d7dcb84ba6a0337dc975351966c4dac7

Author: Chris Forbes <chrisf at ijw.co.nz>
Date:   Sun Apr 13 12:37:31 2014 +1200

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 <chrisf at ijw.co.nz>
Reviewed-by: Anuj Phogat <anuj.phogat at gmail.com>
Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>

---

 src/mesa/main/mtypes.h   |    3 +++
 src/mesa/main/texstate.c |    2 ++
 2 files changed, 5 insertions(+)

diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h
index 4d014d1..6694383 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 fcae878..b68920c 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);




More information about the mesa-commit mailing list