summaryrefslogtreecommitdiff
path: root/src/gallium/auxiliary/tgsi/util/tgsi_scan.c
diff options
context:
space:
mode:
authorBrian <brian.paul@tungstengraphics.com>2008-02-26 10:12:17 -0700
committerBrian <brian.paul@tungstengraphics.com>2008-02-26 10:12:17 -0700
commit1410b7bb509ef37c41043b173bc1047257483af0 (patch)
treea18077188d7d9d4d7421f7863df5d0d7c8c119eb /src/gallium/auxiliary/tgsi/util/tgsi_scan.c
parentecd50ef58b034e604ff6b2fedbb0815953e510ea (diff)
gallium: collect more shader info in tgsi_scan_shader()
Now getting input/output semantic info so we can eventually remove those fields from pipe_shader_state.
Diffstat (limited to 'src/gallium/auxiliary/tgsi/util/tgsi_scan.c')
-rw-r--r--src/gallium/auxiliary/tgsi/util/tgsi_scan.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/gallium/auxiliary/tgsi/util/tgsi_scan.c b/src/gallium/auxiliary/tgsi/util/tgsi_scan.c
index 4b99ac37cc..a1cc681492 100644
--- a/src/gallium/auxiliary/tgsi/util/tgsi_scan.c
+++ b/src/gallium/auxiliary/tgsi/util/tgsi_scan.c
@@ -69,6 +69,8 @@ tgsi_scan_shader(const struct tgsi_token *tokens,
*/
while( !tgsi_parse_end_of_tokens( &parse ) ) {
+ info->num_tokens++;
+
tgsi_parse_token( &parse );
switch( parse.FullToken.Token.Type ) {
@@ -91,9 +93,27 @@ tgsi_scan_shader(const struct tgsi_token *tokens,
for (i = fulldecl->u.DeclarationRange.First;
i <= fulldecl->u.DeclarationRange.Last;
i++) {
+
+ /* only first 32 regs will appear in this bitfield */
info->file_mask[file] |= (1 << i);
info->file_count[file]++;
+ if (file == TGSI_FILE_INPUT) {
+ info->input_semantic_name[info->num_inputs]
+ = fulldecl->Semantic.SemanticName;
+ info->input_semantic_index[info->num_inputs]
+ = fulldecl->Semantic.SemanticIndex;
+ info->num_inputs++;
+ }
+
+ if (file == TGSI_FILE_OUTPUT) {
+ info->output_semantic_name[info->num_outputs]
+ = fulldecl->Semantic.SemanticName;
+ info->output_semantic_index[info->num_outputs]
+ = fulldecl->Semantic.SemanticIndex;
+ info->num_outputs++;
+ }
+
/* special case */
if (procType == TGSI_PROCESSOR_FRAGMENT &&
file == TGSI_FILE_OUTPUT &&