summaryrefslogtreecommitdiffstats
path: root/src/glsl/ir.h
diff options
context:
space:
mode:
authorOlivier Galibert <[email protected]>2012-05-02 23:11:39 +0200
committerKenneth Graunke <[email protected]>2012-05-08 12:55:47 -0700
commita270e86d382597d4d01ebcfa1693e21d778cbe6d (patch)
tree6c6ffca23f454b70e1edda4fe3efe19e83a00fff /src/glsl/ir.h
parent6e4852a3a5f3cbe52c53d91d343a37861f207563 (diff)
glsl: Add a constant_referenced method to ir_dereference*
The method is used to get a reference to an ir_constant * within the context of evaluating an assignment when calculating a constant_expression_value. Signed-off-by: Olivier Galibert <[email protected]> Reviewed-by: Kenneth Graunke <[email protected]> Reviewed-by: Eric Anholt <[email protected]> [v1]
Diffstat (limited to 'src/glsl/ir.h')
-rw-r--r--src/glsl/ir.h36
1 files changed, 36 insertions, 0 deletions
diff --git a/src/glsl/ir.h b/src/glsl/ir.h
index d7df41d893c..dc96e1fe9ed 100644
--- a/src/glsl/ir.h
+++ b/src/glsl/ir.h
@@ -1451,6 +1451,15 @@ public:
* Get the variable that is ultimately referenced by an r-value
*/
virtual ir_variable *variable_referenced() const = 0;
+
+ /**
+ * Get the constant that is ultimately referenced by an r-value,
+ * in a constant expression evaluation context.
+ *
+ * The offset is used when the reference is to a specific column of
+ * a matrix.
+ */
+ virtual void constant_referenced(struct hash_table *variable_context, ir_constant *&store, int &offset) const = 0;
};
@@ -1476,6 +1485,15 @@ public:
return this->var;
}
+ /**
+ * Get the constant that is ultimately referenced by an r-value,
+ * in a constant expression evaluation context.
+ *
+ * The offset is used when the reference is to a specific column of
+ * a matrix.
+ */
+ virtual void constant_referenced(struct hash_table *variable_context, ir_constant *&store, int &offset) const;
+
virtual ir_variable *whole_variable_referenced()
{
/* ir_dereference_variable objects always dereference the entire
@@ -1525,6 +1543,15 @@ public:
return this->array->variable_referenced();
}
+ /**
+ * Get the constant that is ultimately referenced by an r-value,
+ * in a constant expression evaluation context.
+ *
+ * The offset is used when the reference is to a specific column of
+ * a matrix.
+ */
+ virtual void constant_referenced(struct hash_table *variable_context, ir_constant *&store, int &offset) const;
+
virtual void accept(ir_visitor *v)
{
v->visit(this);
@@ -1559,6 +1586,15 @@ public:
return this->record->variable_referenced();
}
+ /**
+ * Get the constant that is ultimately referenced by an r-value,
+ * in a constant expression evaluation context.
+ *
+ * The offset is used when the reference is to a specific column of
+ * a matrix.
+ */
+ virtual void constant_referenced(struct hash_table *variable_context, ir_constant *&store, int &offset) const;
+
virtual void accept(ir_visitor *v)
{
v->visit(this);