tgsi: text parser: fix parsing of array in declaration

I noticed this code didn't work as advertised while doing some passing around
of TGSI shaders and trying to reparse them, and things failing.

This seems to fix it here for at least the small test case I hacked into a
graw test.

Reviewed-by: Brian Paul <brianp@vmware.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
Dave Airlie 2013-06-16 21:24:00 +10:00
parent 0829b893a9
commit 9e8400f4c9
1 changed files with 9 additions and 3 deletions

View File

@ -1129,8 +1129,13 @@ static boolean parse_declaration( struct translate_ctx *ctx )
cur2 = cur;
cur2++;
eat_opt_white( &cur2 );
if (str_match_nocase_whole( &cur2, "ARRAY(" )) {
if (str_match_nocase_whole( &cur2, "ARRAY" )) {
int arrayid;
if (*cur2 != '(') {
report_error( ctx, "Expected `('" );
return FALSE;
}
cur2++;
eat_opt_white( &cur2 );
if (!parse_int( &cur2, &arrayid )) {
report_error( ctx, "Expected `,'" );
@ -1138,12 +1143,13 @@ static boolean parse_declaration( struct translate_ctx *ctx )
}
eat_opt_white( &cur2 );
if (*cur2 != ')') {
report_error( ctx, "Expected `,'" );
report_error( ctx, "Expected `)'" );
return FALSE;
}
cur2++;
decl.Declaration.Array = 1;
decl.Array.ArrayID = arrayid;
cur = cur2;
ctx->cur = cur = cur2;
}
}