#define LINK_UNIFORM_BLOCK_ACTIVE_VISITOR_H
#include "ir.h"
-#include "ir_visitor.h"
-#include "glsl_types.h"
-#include "main/hash_table.h"
+#include "util/hash_table.h"
+
+struct uniform_block_array_elements {
+ unsigned *array_elements;
+ unsigned num_array_elements;
+
+ ir_dereference_array *ir;
+
+ struct uniform_block_array_elements *array;
+};
struct link_uniform_block_active {
const glsl_type *type;
+ ir_variable *var;
- unsigned *array_elements;
- unsigned num_array_elements;
+ struct uniform_block_array_elements *array;
+
+ unsigned binding;
bool has_instance_name;
+ bool has_binding;
+ bool is_shader_storage;
};
class link_uniform_block_active_visitor : public ir_hierarchical_visitor {
virtual ir_visitor_status visit_enter(ir_dereference_array *);
virtual ir_visitor_status visit(ir_dereference_variable *);
+ virtual ir_visitor_status visit(ir_variable *);
bool success;