- /* Inputs */
- tgsi_parse_init( &parse, tokens );
- while( !tgsi_parse_end_of_tokens( &parse ) ) {
- tgsi_parse_token( &parse );
-
- switch( parse.FullToken.Token.Type ) {
- case TGSI_TOKEN_TYPE_DECLARATION:
- /* Nothing to do -- using info from tgsi_scan().
- */
- break;
-
- case TGSI_TOKEN_TYPE_IMMEDIATE: {
- static const float id[4] = {0,0,0,1};
- const float *imm = &parse.FullToken.FullImmediate.u[i].Float;
- unsigned size = parse.FullToken.FullImmediate.Immediate.NrTokens - 1;
-
- for (i = 0; i < size; i++)
- c->immediate[c->nr_immediates][i] = imm[i];
-
- for ( ; i < 4; i++)
- c->immediate[c->nr_immediates][i] = id[i];
-
- c->nr_immediates++;
- break;
- }
-
- case TGSI_TOKEN_TYPE_INSTRUCTION:
- done = 1;
- break;
- }
- }