glsl: add capability to lower mediump array types
[mesa.git] / src / compiler / glsl / ir_reader.cpp
index 7deb125264f7c096943eb7669552748badd07ea3..d4f0e58b155cbe5edc70508b2f49cf3fb05a4660 100644 (file)
@@ -208,7 +208,7 @@ ir_reader::read_function(s_expression *expr, bool skip_body)
    /* Skip over "function" tag and function name (which are guaranteed to be
     * present by the above PARTIAL_MATCH call).
     */
-   exec_node *node = ((s_list *) expr)->subexpressions.head->next->next;
+   exec_node *node = ((s_list *) expr)->subexpressions.get_head_raw()->next->next;
    for (/* nothing */; !node->is_tail_sentinel(); node = node->next) {
       s_expression *s_sig = (s_expression *) node;
       read_function_sig(f, s_sig, skip_body);
@@ -251,7 +251,7 @@ ir_reader::read_function_sig(ir_function *f, s_expression *expr, bool skip_body)
    state->symbols->push_scope();
 
    /* Skip over the "parameters" tag. */
-   exec_node *node = paramlist->subexpressions.head->next;
+   exec_node *node = paramlist->subexpressions.get_head_raw()->next;
    for (/* nothing */; !node->is_tail_sentinel(); node = node->next) {
       ir_variable *var = read_declaration((s_expression *) node);
       if (var == NULL)
@@ -419,8 +419,10 @@ ir_reader::read_declaration(s_expression *expr)
          var->data.sample = 1;
       } else if (strcmp(qualifier->value(), "patch") == 0) {
          var->data.patch = 1;
+      } else if (strcmp(qualifier->value(), "explicit_invariant") == 0) {
+         var->data.explicit_invariant = true;
       } else if (strcmp(qualifier->value(), "invariant") == 0) {
-        var->data.invariant = 1;
+         var->data.invariant = true;
       } else if (strcmp(qualifier->value(), "uniform") == 0) {
         var->data.mode = ir_var_uniform;
       } else if (strcmp(qualifier->value(), "shader_storage") == 0) {
@@ -833,7 +835,7 @@ ir_reader::read_constant(s_expression *expr)
         return NULL;
       }
 
-      if (type->base_type == GLSL_TYPE_FLOAT) {
+      if (type->is_float()) {
         s_number *value = SX_AS_NUMBER(expr);
         if (value == NULL) {
            ir_read_error(values, "expected numbers");
@@ -1047,11 +1049,11 @@ ir_reader::read_texture(s_expression *expr)
       }
 
       if (s_shadow->subexpressions.is_empty()) {
-        tex->shadow_comparitor = NULL;
+        tex->shadow_comparator = NULL;
       } else {
-        tex->shadow_comparitor = read_rvalue(s_shadow);
-        if (tex->shadow_comparitor == NULL) {
-           ir_read_error(NULL, "when reading shadow comparitor in (%s ..)",
+        tex->shadow_comparator = read_rvalue(s_shadow);
+        if (tex->shadow_comparator == NULL) {
+           ir_read_error(NULL, "when reading shadow comparator in (%s ..)",
                          tex->opcode_string());
            return NULL;
         }