aboutsummaryrefslogtreecommitdiffstats
path: root/src/glsl
diff options
context:
space:
mode:
authorOlivier Galibert <[email protected]>2012-05-02 23:11:41 +0200
committerKenneth Graunke <[email protected]>2012-05-08 12:55:52 -0700
commit2ff7b121cad2892698ff1aa7690dd361ea2739a7 (patch)
tree36f37ef92994c7cd82b50fe7e35fb466fbb654f3 /src/glsl
parent8ec01ba2ff95449674c779c05afcd32bbf7dbdc8 (diff)
glsl: Add an origin pointer in the function signature object.
This points to the object with the function body, allowing us to map from a built-in prototype to the actual body with IR code to execute. Signed-off-by: Olivier Galibert <[email protected]> Reviewed-by: Kenneth Graunke <[email protected]>
Diffstat (limited to 'src/glsl')
-rw-r--r--src/glsl/ir.cpp1
-rw-r--r--src/glsl/ir.h3
-rw-r--r--src/glsl/ir_clone.cpp1
3 files changed, 5 insertions, 0 deletions
diff --git a/src/glsl/ir.cpp b/src/glsl/ir.cpp
index 839d5b3fdb4..970d8f3bac0 100644
--- a/src/glsl/ir.cpp
+++ b/src/glsl/ir.cpp
@@ -1481,6 +1481,7 @@ ir_function_signature::ir_function_signature(const glsl_type *return_type)
{
this->ir_type = ir_type_function_signature;
this->is_builtin = false;
+ this->origin = NULL;
}
diff --git a/src/glsl/ir.h b/src/glsl/ir.h
index fe950861620..92be063747f 100644
--- a/src/glsl/ir.h
+++ b/src/glsl/ir.h
@@ -572,6 +572,9 @@ private:
/** Function of which this signature is one overload. */
class ir_function *_function;
+ /** Function signature of which this one is a prototype clone */
+ const ir_function_signature *origin;
+
friend class ir_function;
};
diff --git a/src/glsl/ir_clone.cpp b/src/glsl/ir_clone.cpp
index 5046ac372a1..591fe7b7756 100644
--- a/src/glsl/ir_clone.cpp
+++ b/src/glsl/ir_clone.cpp
@@ -324,6 +324,7 @@ ir_function_signature::clone_prototype(void *mem_ctx, struct hash_table *ht) con
copy->is_defined = false;
copy->is_builtin = this->is_builtin;
+ copy->origin = this;
/* Clone the parameter list, but NOT the body.
*/