static boolean parse_identifier( const char **pcur, char *ret, size_t len )
{
const char *cur = *pcur;
- int i = 0;
+ size_t i = 0;
if (is_alpha_underscore( cur )) {
ret[i++] = *cur++;
while (is_alpha_underscore( cur ) || is_digit( cur )) {
eat_opt_white( &cur );
if (*cur == '.') {
- uint i;
+ int i;
cur++;
eat_opt_white( &cur );
struct translate_ctx *ctx,
boolean has_label )
{
- uint i;
+ int i;
uint saturate = 0;
uint precise = 0;
const struct tgsi_opcode_info *info;
break;
}
}
- if (i == TGSI_INTERPOLATE_COUNT) {
- report_error( ctx, "Expected semantic or interpolate attribute" );
- return FALSE;
- }
}
cur = ctx->cur;
}
}
+ cur = ctx->cur;
+ eat_opt_white( &cur );
+ if (*cur == ',' && !is_vs_input) {
+ cur++;
+ eat_opt_white( &cur );
+ if (str_match_nocase_whole( &cur, tgsi_invariant_name )) {
+ decl.Declaration.Invariant = 1;
+ ctx->cur = cur;
+ } else {
+ report_error( ctx, "Expected semantic, interpolate attribute, or invariant ");
+ return FALSE;
+ }
+ }
+
advance = tgsi_build_full_declaration(
&decl,
ctx->tokens_cur,
{
struct tgsi_full_immediate imm;
uint advance;
- int type;
+ uint type;
if (*ctx->cur == '[') {
uint uindex;