ir_variable: Add query to get number of slots used by a variable
authorIan Romanick <ian.d.romanick@intel.com>
Mon, 21 Jun 2010 23:05:29 +0000 (16:05 -0700)
committerIan Romanick <ian.d.romanick@intel.com>
Wed, 23 Jun 2010 17:56:04 +0000 (10:56 -0700)
ir.cpp
ir.h

diff --git a/ir.cpp b/ir.cpp
index 08b2d88..49191fb 100644 (file)
--- a/ir.cpp
+++ b/ir.cpp
@@ -756,6 +756,14 @@ ir_variable::interpolation_string() const
 }
 
 
+unsigned
+ir_variable::component_slots() const
+{
+   /* FINISHME: Sparsely accessed arrays require fewer slots. */
+   return this->type->component_slots();
+}
+
+
 ir_function_signature::ir_function_signature(const glsl_type *return_type)
    : return_type(return_type), is_defined(false)
 {
diff --git a/ir.h b/ir.h
index a2fc2b7..9cbe115 100644 (file)
--- a/ir.h
+++ b/ir.h
@@ -187,6 +187,14 @@ public:
     */
    const char *interpolation_string() const;
 
+   /**
+    * Calculate the number of slots required to hold this variable
+    *
+    * This is used to determine how many uniform or varying locations a variable
+    * occupies.  The count is in units of floating point components.
+    */
+   unsigned component_slots() const;
+
    const char *name;
 
    /**