summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Romanick <ian.d.romanick@intel.com>2010-06-21 16:05:29 -0700
committerIan Romanick <ian.d.romanick@intel.com>2010-06-23 10:56:04 -0700
commit8b80e9f9e3bc9ca41c95125826139471f73602c4 (patch)
tree39cfe73196ecd6c20b91933ec3af7ef467e1b6f0
parent57bb893a46ced683792f8e7ebdffbb5c5a892b84 (diff)
ir_variable: Add query to get number of slots used by a variable
-rw-r--r--ir.cpp8
-rw-r--r--ir.h8
2 files changed, 16 insertions, 0 deletions
diff --git a/ir.cpp b/ir.cpp
index 08b2d88881..49191fb929 100644
--- 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 a2fc2b769c..9cbe11505a 100644
--- 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;
/**