tgsi: Add support to parse IMM[x] too.

Thanks to Brian for pointing this out.
This commit is contained in:
José Fonseca 2012-10-17 15:27:26 +01:00
parent 2ab6e67d90
commit ea2978b11c
2 changed files with 30 additions and 2 deletions

View file

@ -242,6 +242,7 @@ struct translate_ctx
struct tgsi_header *header;
unsigned processor : 4;
int implied_array_size : 5;
unsigned num_immediates;
};
static void report_error( struct translate_ctx *ctx, const char *msg )
@ -1336,6 +1337,31 @@ static boolean parse_immediate( struct translate_ctx *ctx )
uint advance;
int type;
if (*ctx->cur == '[') {
uint uindex;
++ctx->cur;
eat_opt_white( &ctx->cur );
if (!parse_uint( &ctx->cur, &uindex )) {
report_error( ctx, "Expected literal unsigned integer" );
return FALSE;
}
if (uindex != ctx->num_immediates) {
report_error( ctx, "Immediates must be sorted" );
return FALSE;
}
eat_opt_white( &ctx->cur );
if (*ctx->cur != ']') {
report_error( ctx, "Expected `]'" );
return FALSE;
}
ctx->cur++;
}
if (!eat_white( &ctx->cur )) {
report_error( ctx, "Syntax error" );
return FALSE;
@ -1363,6 +1389,8 @@ static boolean parse_immediate( struct translate_ctx *ctx )
return FALSE;
ctx->tokens_cur += advance;
ctx->num_immediates++;
return TRUE;
}

View file

@ -7,8 +7,8 @@ DCL OUT[1], COLOR
DCL TEMP[0]
IMM FLT32 { 1.0, 0.0, 0.0, 0.0 }
IMM FLT32 { 1.5, 0.0, 0.0, 0.0 }
IMM[0] FLT32 { 1.0, 0.0, 0.0, 0.0 }
IMM[1] FLT32 { 1.5, 0.0, 0.0, 0.0 }
ADD TEMP[0], IN[0], IMM[0]
RCP TEMP[0].x, TEMP[0].xxxx