tgsi: reject interpolation and semantics on vs inputs
authorKeith Whitwell <keithw@vmware.com>
Fri, 4 Jun 2010 15:38:28 +0000 (16:38 +0100)
committerKeith Whitwell <keithw@vmware.com>
Mon, 7 Jun 2010 15:34:55 +0000 (16:34 +0100)
src/gallium/auxiliary/tgsi/tgsi_text.c

index 71a0d96331a6ea9a3dd61bc1a3841cb645f58e37..00e6392f63ac4f487e381d8c1d63941ccd5d5d8c 100644 (file)
@@ -993,6 +993,7 @@ static boolean parse_declaration( struct translate_ctx *ctx )
    uint writemask;
    const char *cur;
    uint advance;
+   boolean is_vs_input;
 
    assert(Elements(semantic_names) == TGSI_SEMANTIC_COUNT);
    assert(Elements(interpolate_names) == TGSI_INTERPOLATE_COUNT);
@@ -1021,9 +1022,12 @@ static boolean parse_declaration( struct translate_ctx *ctx )
       decl.Dim.Index2D = brackets[0].first;
    }
 
+   is_vs_input = (file == TGSI_FILE_INPUT && 
+                  ctx->processor == TGSI_PROCESSOR_VERTEX);
+
    cur = ctx->cur;
    eat_opt_white( &cur );
-   if (*cur == ',') {
+   if (*cur == ',' && !is_vs_input) {
       uint i;
 
       cur++;
@@ -1066,7 +1070,7 @@ static boolean parse_declaration( struct translate_ctx *ctx )
 
    cur = ctx->cur;
    eat_opt_white( &cur );
-   if (*cur == ',') {
+   if (*cur == ',' && !is_vs_input) {
       uint i;
 
       cur++;