Mesa (master): tgsi: keep track of read vs written indirects
Rob Clark
robclark at kemper.freedesktop.org
Thu Jan 8 00:38:21 UTC 2015
Module: Mesa
Branch: master
Commit: 49b4a6331f846cd86e6ca792959a9506bddeb658
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=49b4a6331f846cd86e6ca792959a9506bddeb658
Author: Rob Clark <robclark at freedesktop.org>
Date: Sat Jan 3 16:11:28 2015 -0500
tgsi: keep track of read vs written indirects
At least temporarily, I need to fallback to old compiler still for
relative dest (for freedreno), but I can do relative src temp. Only
a temporary situation, but seems easy/reasonable for tgsi-scan to
track this.
Signed-off-by: Rob Clark <robclark at freedesktop.org>
Reviewed-by: Roland Scheidegger <sroland at vmware.com>
---
src/gallium/auxiliary/tgsi/tgsi_scan.c | 2 ++
src/gallium/auxiliary/tgsi/tgsi_scan.h | 6 ++++++
2 files changed, 8 insertions(+)
diff --git a/src/gallium/auxiliary/tgsi/tgsi_scan.c b/src/gallium/auxiliary/tgsi/tgsi_scan.c
index 6210ebd..9d1f848 100644
--- a/src/gallium/auxiliary/tgsi/tgsi_scan.c
+++ b/src/gallium/auxiliary/tgsi/tgsi_scan.c
@@ -130,6 +130,7 @@ tgsi_scan_shader(const struct tgsi_token *tokens,
/* check for indirect register reads */
if (src->Register.Indirect) {
info->indirect_files |= (1 << src->Register.File);
+ info->indirect_files_read |= (1 << src->Register.File);
}
/* MSAA samplers */
@@ -150,6 +151,7 @@ tgsi_scan_shader(const struct tgsi_token *tokens,
const struct tgsi_full_dst_register *dst = &fullinst->Dst[i];
if (dst->Register.Indirect) {
info->indirect_files |= (1 << dst->Register.File);
+ info->indirect_files_written |= (1 << dst->Register.File);
}
}
diff --git a/src/gallium/auxiliary/tgsi/tgsi_scan.h b/src/gallium/auxiliary/tgsi/tgsi_scan.h
index bacb4ab..75540d5 100644
--- a/src/gallium/auxiliary/tgsi/tgsi_scan.h
+++ b/src/gallium/auxiliary/tgsi/tgsi_scan.h
@@ -94,6 +94,12 @@ struct tgsi_shader_info
* indirect addressing. The bits are (1 << TGSI_FILE_x), etc.
*/
unsigned indirect_files;
+ /**
+ * Bitmask indicating which register files are read / written with
+ * indirect addressing. The bits are (1 << TGSI_FILE_x).
+ */
+ unsigned indirect_files_read;
+ unsigned indirect_files_written;
unsigned properties[TGSI_PROPERTY_COUNT]; /* index with TGSI_PROPERTY_ */
};
More information about the mesa-commit
mailing list