Browse Source

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@freedesktop.org>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
tags/10.5-branchpoint
Rob Clark 10 years ago
parent
commit
49b4a6331f
2 changed files with 8 additions and 0 deletions
  1. 2
    0
      src/gallium/auxiliary/tgsi/tgsi_scan.c
  2. 6
    0
      src/gallium/auxiliary/tgsi/tgsi_scan.h

+ 2
- 0
src/gallium/auxiliary/tgsi/tgsi_scan.c View File

@@ -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);
}
}


+ 6
- 0
src/gallium/auxiliary/tgsi/tgsi_scan.h View File

@@ -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_ */
};

Loading…
Cancel
Save