summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Romanick <ian.d.romanick@intel.com>2010-06-18 19:00:28 -0700
committerIan Romanick <ian.d.romanick@intel.com>2010-06-23 10:56:03 -0700
commit950ceb2bd60c25e7fecdff0fbcbf6e69015588f3 (patch)
tree15e91df092d34ec3b9b9daca22e35c220bbaed35
parentcc22c5a5447d1d710e49524ee61b76268c7da6b9 (diff)
ir_variable: Add method to get string representing interpolation qualifier
-rw-r--r--ir.cpp17
-rw-r--r--ir.h10
2 files changed, 27 insertions, 0 deletions
diff --git a/ir.cpp b/ir.cpp
index 7fc260d..61589c3 100644
--- a/ir.cpp
+++ b/ir.cpp
@@ -738,6 +738,23 @@ ir_variable::ir_variable(const struct glsl_type *type, const char *name)
}
+const char *
+ir_variable::interpolation_string() const
+{
+ if (!this->shader_in && !this->shader_out)
+ return "";
+
+ switch (this->interpolation) {
+ case ir_var_smooth: return "smooth";
+ case ir_var_flat: return "flat";
+ case ir_var_noperspective: return "noperspective";
+ }
+
+ assert(!"Should not get here.");
+ return "";
+}
+
+
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 a04b688..04ecb58 100644
--- a/ir.h
+++ b/ir.h
@@ -177,6 +177,16 @@ public:
return var;
}
+ /**
+ * Get the string value for the interpolation qualifier
+ *
+ * \return
+ * If none of \c shader_in or \c shader_out is set, an empty string will
+ * be returned. Otherwise the string that would be used in a shader to
+ * specify \c mode will be returned.
+ */
+ const char *interpolation_string() const;
+
const char *name;
/**