diff options
author | Marek Olšák <[email protected]> | 2013-10-30 14:24:27 +0100 |
---|---|---|
committer | Marek Olšák <[email protected]> | 2013-11-04 19:07:57 +0100 |
commit | d0cf73a4086e2ef256f6a21c4e30030cc07fc5b6 (patch) | |
tree | 8533d4f7f85aefb8e456e7f0969f53c94d6d6713 /src/gallium/auxiliary/tgsi | |
parent | e5f0080d912d9231773a087c9f3e3a55136c467a (diff) |
tgsi/scan: set maximum index for each constant buffer
Diffstat (limited to 'src/gallium/auxiliary/tgsi')
-rw-r--r-- | src/gallium/auxiliary/tgsi/tgsi_scan.c | 13 | ||||
-rw-r--r-- | src/gallium/auxiliary/tgsi/tgsi_scan.h | 1 |
2 files changed, 13 insertions, 1 deletions
diff --git a/src/gallium/auxiliary/tgsi/tgsi_scan.c b/src/gallium/auxiliary/tgsi/tgsi_scan.c index 05b711148ce..0f1055627ab 100644 --- a/src/gallium/auxiliary/tgsi/tgsi_scan.c +++ b/src/gallium/auxiliary/tgsi/tgsi_scan.c @@ -60,6 +60,8 @@ tgsi_scan_shader(const struct tgsi_token *tokens, memset(info, 0, sizeof(*info)); for (i = 0; i < TGSI_FILE_COUNT; i++) info->file_max[i] = -1; + for (i = 0; i < Elements(info->const_file_max); i++) + info->const_file_max[i] = -1; /** ** Setup to begin parsing input shader @@ -172,7 +174,16 @@ tgsi_scan_shader(const struct tgsi_token *tokens, info->file_count[file]++; info->file_max[file] = MAX2(info->file_max[file], (int)reg); - if (file == TGSI_FILE_INPUT) { + if (file == TGSI_FILE_CONSTANT) { + int buffer = 0; + + if (fulldecl->Declaration.Dimension) + buffer = fulldecl->Dim.Index2D; + + info->const_file_max[buffer] = + MAX2(info->const_file_max[buffer], (int)reg); + } + else if (file == TGSI_FILE_INPUT) { info->input_semantic_name[reg] = (ubyte) semName; info->input_semantic_index[reg] = (ubyte) semIndex; info->input_interpolate[reg] = (ubyte)fulldecl->Interp.Interpolate; diff --git a/src/gallium/auxiliary/tgsi/tgsi_scan.h b/src/gallium/auxiliary/tgsi/tgsi_scan.h index d9147bd5bd9..9f45c36911f 100644 --- a/src/gallium/auxiliary/tgsi/tgsi_scan.h +++ b/src/gallium/auxiliary/tgsi/tgsi_scan.h @@ -59,6 +59,7 @@ struct tgsi_shader_info uint file_mask[TGSI_FILE_COUNT]; /**< bitmask of declared registers */ uint file_count[TGSI_FILE_COUNT]; /**< number of declared registers */ int file_max[TGSI_FILE_COUNT]; /**< highest index of declared registers */ + int const_file_max[PIPE_MAX_CONSTANT_BUFFERS]; uint immediate_count; /**< number of immediates declared */ uint num_instructions; |