summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Romanick <ian.d.romanick@intel.com>2010-06-21 11:42:02 -0700
committerIan Romanick <ian.d.romanick@intel.com>2010-06-23 10:56:03 -0700
commit69a079aee8f79104501faeb2a5092b643f956d33 (patch)
tree3f4a609f0d071c97c35b598b75bf0fee5c58a24f
parent371019248ef94ddd7ee2491813e6f41c0412b2ba (diff)
ir_variable: Track the location of uniforms, varings, attributes, etc.
-rw-r--r--ir.cpp1
-rw-r--r--ir.h17
2 files changed, 18 insertions, 0 deletions
diff --git a/ir.cpp b/ir.cpp
index 61589c3..08b2d88 100644
--- a/ir.cpp
+++ b/ir.cpp
@@ -731,6 +731,7 @@ ir_variable::ir_variable(const struct glsl_type *type, const char *name)
{
this->type = type;
this->name = name;
+ this->location = -1;
this->constant_value = NULL;
if (type && type->base_type == GLSL_TYPE_SAMPLER)
diff --git a/ir.h b/ir.h
index 04ecb58..a2fc2b7 100644
--- a/ir.h
+++ b/ir.h
@@ -218,6 +218,23 @@ public:
unsigned array_lvalue:1;
/**
+ * Storage location of the base of this variable
+ *
+ * The precise meaning of this field depends on the nature of the variable.
+ *
+ * - Vertex shader input: one of the values from \c gl_vert_attrib.
+ * - Vertex shader output: one of the values from \c gl_vert_result.
+ * - Fragment shader input: one of the values from \c gl_frag_attrib.
+ * - Fragment shader output: one of the values from \c gl_frag_result.
+ * - Uniforms: Per-stage uniform slot number.
+ * - Other: This field is not currently used.
+ *
+ * If the variable is a uniform, shader input, or shader output, and the
+ * slot has not been assigned, the value will be -1.
+ */
+ int location;
+
+ /**
* Emit a warning if this variable is accessed.
*/
const char *warn_extension;