Mesa (master): tgsi: track max array per file

Rob Clark robclark at kemper.freedesktop.org
Thu Jan 8 00:38:21 UTC 2015


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

Author: Rob Clark <robclark at freedesktop.org>
Date:   Sun Jan  4 16:33:37 2015 -0500

tgsi: track max array per file

NOTE IN[] and OUT[] don't need (have?) ArrayID's.. and TEMP[] can
optionally have them.  So we implicitly assume that ArrayID==0 always
exists for each file.  This is why array_max[file] is never less than
zero.

You can tell from indirect_files(_read/written) if the legacy array-
id zero was actually used.

Signed-off-by: Rob Clark <robclark at freedesktop.org>

---

 src/gallium/auxiliary/tgsi/tgsi_scan.c |    2 ++
 src/gallium/auxiliary/tgsi/tgsi_scan.h |    2 ++
 2 files changed, 4 insertions(+)

diff --git a/src/gallium/auxiliary/tgsi/tgsi_scan.c b/src/gallium/auxiliary/tgsi/tgsi_scan.c
index 9d1f848..e6011d2 100644
--- a/src/gallium/auxiliary/tgsi/tgsi_scan.c
+++ b/src/gallium/auxiliary/tgsi/tgsi_scan.c
@@ -165,6 +165,8 @@ tgsi_scan_shader(const struct tgsi_token *tokens,
                = &parse.FullToken.FullDeclaration;
             const uint file = fulldecl->Declaration.File;
             uint reg;
+            if (fulldecl->Declaration.Array)
+               info->array_max[file] = MAX2(info->array_max[file], fulldecl->Array.ArrayID);
             for (reg = fulldecl->Range.First;
                  reg <= fulldecl->Range.Last;
                  reg++) {
diff --git a/src/gallium/auxiliary/tgsi/tgsi_scan.h b/src/gallium/auxiliary/tgsi/tgsi_scan.h
index 75540d5..5dc9267 100644
--- a/src/gallium/auxiliary/tgsi/tgsi_scan.h
+++ b/src/gallium/auxiliary/tgsi/tgsi_scan.h
@@ -61,6 +61,8 @@ struct tgsi_shader_info
    int file_max[TGSI_FILE_COUNT];  /**< highest index of declared registers */
    int const_file_max[PIPE_MAX_CONSTANT_BUFFERS];
 
+   unsigned array_max[TGSI_FILE_COUNT];  /**< highest index array per register file */
+
    uint immediate_count; /**< number of immediates declared */
    uint num_instructions;
 




More information about the mesa-commit mailing list