diff options
author | Ben Skeggs <skeggsb@gmail.com> | 2008-11-10 15:53:51 +1100 |
---|---|---|
committer | Ben Skeggs <skeggsb@gmail.com> | 2008-11-10 15:53:51 +1100 |
commit | 32e6be6362e44609d36c2fb20a4c858f57c908fb (patch) | |
tree | 4ed99e93ef5f4a8bb51653917c911e04e42f5235 /src/mesa/shader/slang/slang_compile.c | |
parent | 92674bc8889e10e580c630cf85c106fa6eb34d7b (diff) | |
parent | 399da3a337932c6074a69ac73e711138271308eb (diff) |
Merge remote branch 'origin/gallium-0.2' into gallium-0.2
Diffstat (limited to 'src/mesa/shader/slang/slang_compile.c')
-rw-r--r-- | src/mesa/shader/slang/slang_compile.c | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/src/mesa/shader/slang/slang_compile.c b/src/mesa/shader/slang/slang_compile.c index 9cf0f8b81a..294e46235c 100644 --- a/src/mesa/shader/slang/slang_compile.c +++ b/src/mesa/shader/slang/slang_compile.c @@ -800,6 +800,7 @@ parse_fully_specified_type(slang_parse_ctx * C, slang_output_ctx * O, #define OP_FIELD 59 #define OP_POSTINCREMENT 60 #define OP_POSTDECREMENT 61 +#define OP_PRECISION 62 /** @@ -971,6 +972,16 @@ parse_statement(slang_parse_ctx * C, slang_output_ctx * O, return 0; } break; + case OP_PRECISION: + { + /* set default precision for a type in this scope */ + /* ignored at this time */ + int prec_qual = *C->I++; + int datatype = *C->I++; + (void) prec_qual; + (void) datatype; + } + break; default: return 0; } @@ -1295,12 +1306,16 @@ static int parse_parameter_declaration(slang_parse_ctx * C, slang_output_ctx * O, slang_variable * param) { + int param_qual, precision_qual; + /* parse and validate the parameter's type qualifiers (there can be * two at most) because not all combinations are valid */ if (!parse_type_qualifier(C, ¶m->type.qualifier)) return 0; - switch (*C->I++) { + + param_qual = *C->I++; + switch (param_qual) { case PARAM_QUALIFIER_IN: if (param->type.qualifier != SLANG_QUAL_CONST && param->type.qualifier != SLANG_QUAL_NONE) { @@ -1328,6 +1343,11 @@ parse_parameter_declaration(slang_parse_ctx * C, slang_output_ctx * O, return 0; } + /* parse precision qualifier (lowp, mediump, highp */ + precision_qual = *C->I++; + /* ignored at this time */ + (void) precision_qual; + /* parse parameter's type specifier and name */ if (!parse_type_specifier(C, O, ¶m->type.specifier)) return 0; |