diff options
| author | Brian Paul <brian.paul@tungstengraphics.com> | 2008-08-07 10:26:35 -0600 | 
|---|---|---|
| committer | Brian Paul <brian.paul@tungstengraphics.com> | 2008-08-07 13:32:43 -0600 | 
| commit | a78f295f7ca0a93fdaeda559668fda013c2a03b0 (patch) | |
| tree | 6cf6006bc61e18f122560f9af9b3ad4131113371 /src/mesa | |
| parent | 1ffd6908d4153d647f8a3bf1ba9fe9d33c206185 (diff) | |
mesa: glsl: finish up support for precision qualifiers
Diffstat (limited to 'src/mesa')
| -rw-r--r-- | src/mesa/shader/slang/slang_compile.c | 21 | ||||
| -rw-r--r-- | src/mesa/shader/slang/slang_compile_variable.h | 10 | 
2 files changed, 27 insertions, 4 deletions
| diff --git a/src/mesa/shader/slang/slang_compile.c b/src/mesa/shader/slang/slang_compile.c index 2a1af39ee0..64c0dad611 100644 --- a/src/mesa/shader/slang/slang_compile.c +++ b/src/mesa/shader/slang/slang_compile.c @@ -707,20 +707,33 @@ parse_fully_specified_type(slang_parse_ctx * C, slang_output_ctx * O,     precision = *C->I++;     if (!parse_type_specifier(C, O, &type->specifier))        return 0; +     switch (precision) {     case PRECISION_DEFAULT: -      /* TODO: Grab the default precision for the given type specifier. -       */ +      assert(type->specifier.type < TYPE_SPECIFIER_COUNT); +      if (type->specifier.type < TYPE_SPECIFIER_COUNT) +         type->precision = O->default_precision[type->specifier.type];        break;     case PRECISION_LOW: +      type->precision = SLANG_PREC_LOW; +      break;     case PRECISION_MEDIUM: +      type->precision = SLANG_PREC_MEDIUM; +      break;     case PRECISION_HIGH: -      /* TODO: Translate to mesa representation. -       */ +      type->precision = SLANG_PREC_HIGH;        break;     default:        return 0;     } + +#if !FEATURE_es2_glsl +   if (precision != PRECISION_DEFAULT) { +      slang_info_log_error(C->L, "precision qualifiers not allowed"); +      return 0; +   } +#endif +     return 1;  } diff --git a/src/mesa/shader/slang/slang_compile_variable.h b/src/mesa/shader/slang/slang_compile_variable.h index 9b0f85859a..d81a3d2869 100644 --- a/src/mesa/shader/slang/slang_compile_variable.h +++ b/src/mesa/shader/slang/slang_compile_variable.h @@ -51,10 +51,20 @@ slang_type_specifier_type_to_string(slang_type_specifier_type); +typedef enum slang_type_precision_ +{ +   SLANG_PREC_DEFAULT, +   SLANG_PREC_LOW, +   SLANG_PREC_MEDIUM, +   SLANG_PREC_HIGH +} slang_type_precision; + +  typedef struct slang_fully_specified_type_  {     slang_type_qualifier qualifier;     slang_type_specifier specifier; +   slang_type_precision precision;  } slang_fully_specified_type;  extern int | 
