Mesa (master): tgsi: Add support to parse IMM[x] too.

Jose Fonseca jrfonseca at kemper.freedesktop.org
Wed Oct 17 14:34:45 UTC 2012


Module: Mesa
Branch: master
Commit: ea2978b11c02ca52c1f0b144d604597b664f6118
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=ea2978b11c02ca52c1f0b144d604597b664f6118

Author: José Fonseca <jfonseca at vmware.com>
Date:   Wed Oct 17 15:27:26 2012 +0100

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

Thanks to Brian for pointing this out.

---

 src/gallium/auxiliary/tgsi/tgsi_text.c           |   28 ++++++++++++++++++++++
 src/gallium/tests/graw/vertex-shader/vert-rcp.sh |    4 +-
 2 files changed, 30 insertions(+), 2 deletions(-)

diff --git a/src/gallium/auxiliary/tgsi/tgsi_text.c b/src/gallium/auxiliary/tgsi/tgsi_text.c
index 68d1478..1267e79 100644
--- a/src/gallium/auxiliary/tgsi/tgsi_text.c
+++ b/src/gallium/auxiliary/tgsi/tgsi_text.c
@@ -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;
 }
 
diff --git a/src/gallium/tests/graw/vertex-shader/vert-rcp.sh b/src/gallium/tests/graw/vertex-shader/vert-rcp.sh
index d440e35..8843fe5 100644
--- a/src/gallium/tests/graw/vertex-shader/vert-rcp.sh
+++ b/src/gallium/tests/graw/vertex-shader/vert-rcp.sh
@@ -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




More information about the mesa-commit mailing list