glsl: Put `sample`-qualified varyings in their own packing classes
[mesa.git] / src / glsl / ir_variable_refcount.h
index 059ea097a626469275a0dd1a9be9d5c6eece4774..03fa7b5b4670b045157a0a0e18e26be3ffcd8791 100644 (file)
 #include "ir_visitor.h"
 #include "glsl_types.h"
 
-class variable_entry : public exec_node
+class ir_variable_refcount_entry
 {
 public:
-   variable_entry(ir_variable *var)
-   {
-      this->var = var;
-      assign = NULL;
-      referenced_count = 0;
-      assigned_count = 0;
-      declaration = false;
-   }
+   ir_variable_refcount_entry(ir_variable *var);
 
    ir_variable *var; /* The key: the variable's pointer. */
    ir_assignment *assign; /* An assignment to the variable, if any */
@@ -59,27 +52,19 @@ public:
 
 class ir_variable_refcount_visitor : public ir_hierarchical_visitor {
 public:
-   ir_variable_refcount_visitor(void)
-   {
-      this->mem_ctx = talloc_new(NULL);
-      this->variable_list.make_empty();
-   }
-
-   ~ir_variable_refcount_visitor(void)
-   {
-      talloc_free(this->mem_ctx);
-   }
+   ir_variable_refcount_visitor(void);
+   ~ir_variable_refcount_visitor(void);
 
    virtual ir_visitor_status visit(ir_variable *);
    virtual ir_visitor_status visit(ir_dereference_variable *);
 
    virtual ir_visitor_status visit_enter(ir_function_signature *);
    virtual ir_visitor_status visit_leave(ir_assignment *);
+   virtual ir_visitor_status visit_leave(ir_loop *);
 
-   variable_entry *get_variable_entry(ir_variable *var);
+   ir_variable_refcount_entry *get_variable_entry(ir_variable *var);
 
-   /* List of variable_entry */
-   exec_list variable_list;
+   struct hash_table *ht;
 
    void *mem_ctx;
 };