gallium: Fix typo in define name.
[mesa.git] / src / mesa / shader / slang / slang_compile.c
index 64c0dad611d449dafd73c67cba0a955b0441549e..294e46235c20a58d4d960bc73edc9bd5c48dd20f 100644 (file)
@@ -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, &param->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, &param->type.specifier))
       return 0;
@@ -2431,19 +2451,20 @@ _slang_compile(GLcontext *ctx, struct gl_shader *shader)
    _slang_delete_mempool((slang_mempool *) ctx->Shader.MemPool);
    ctx->Shader.MemPool = NULL;
 
-   if (shader->Type == GL_VERTEX_SHADER) {
-      /* remove any reads of varying (output) registers */
+   /* remove any reads of output registers */
 #if 0
-      printf("Pre-remove output reads:\n");
-      _mesa_print_program(shader->Programs);
+   printf("Pre-remove output reads:\n");
+   _mesa_print_program(shader->Program);
 #endif
+   _mesa_remove_output_reads(shader->Program, PROGRAM_OUTPUT);
+   if (shader->Type == GL_VERTEX_SHADER) {
+      /* and remove writes to varying vars in vertex programs */
       _mesa_remove_output_reads(shader->Program, PROGRAM_VARYING);
-      _mesa_remove_output_reads(shader->Program, PROGRAM_OUTPUT);
+   }
 #if 0
-      printf("Post-remove output reads:\n");
-      _mesa_print_program(shader->Programs);
+   printf("Post-remove output reads:\n");
+   _mesa_print_program(shader->Program);
 #endif
-   }
 
    return success;
 }