glsl: add SYSTEM_VALUE_VERTEX_CNT
[mesa.git] / src / glsl / link_atomics.cpp
index fbe4e7364aebb1b4a8c6c0c7b39f479d90100853..100d03c4e8f719826e6aa0a340ad87a4cdf66ea6 100644 (file)
@@ -110,8 +110,8 @@ namespace {
          if (sh == NULL)
             continue;
 
-         foreach_list(node, sh->ir) {
-            ir_variable *var = ((ir_instruction *)node)->as_variable();
+         foreach_in_list(ir_instruction, node, sh->ir) {
+            ir_variable *var = node->as_variable();
 
             if (var && var->type->contains_atomic()) {
                unsigned id = 0;
@@ -201,11 +201,13 @@ link_assign_atomic_counter_resources(struct gl_context *ctx,
          gl_uniform_storage *const storage = &prog->UniformStorage[id];
 
          mab.Uniforms[j] = id;
-         var->data.atomic.buffer_index = i;
+         if (!var->data.explicit_binding)
+            var->data.binding = i;
+
          storage->atomic_buffer_index = i;
          storage->offset = var->data.atomic.offset;
          storage->array_stride = (var->type->is_array() ?
-                                  var->type->element_type()->atomic_size() : 0);
+                                  var->type->without_array()->atomic_size() : 0);
       }
 
       /* Assign stage-specific fields. */