ir_variable: Track the location of uniforms, varings, attributes, etc.
authorIan Romanick <ian.d.romanick@intel.com>
Mon, 21 Jun 2010 18:42:02 +0000 (11:42 -0700)
committerIan Romanick <ian.d.romanick@intel.com>
Wed, 23 Jun 2010 17:56:03 +0000 (10:56 -0700)
ir.cpp
ir.h

diff --git a/ir.cpp b/ir.cpp
index 61589c3ff20e08e33c93ecc87bc6b7f1305adba4..08b2d8888160feb06560b8ca305c7e90c62fc0f3 100644 (file)
--- 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 04ecb582e482268f3f18a85ab1210b5974e4f707..a2fc2b769c0c76a295c920c600ec3f6afc12f655 100644 (file)
--- a/ir.h
+++ b/ir.h
@@ -217,6 +217,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.
     */