[Mesa-dev] [PATCH 1/4] glsl: Pull interpolation_string() out of ir_variable.

Paul Berry stereotype441 at gmail.com
Wed Oct 23 00:24:26 CEST 2013


Future patches will need to call this function when there isn't an
ir_varible present to refer to.
---
 src/glsl/ast_to_hir.cpp    |  4 ++--
 src/glsl/ir.cpp            |  4 ++--
 src/glsl/ir.h              | 30 ++++++++++++++++--------------
 src/glsl/link_varyings.cpp |  4 ++--
 4 files changed, 22 insertions(+), 20 deletions(-)

diff --git a/src/glsl/ast_to_hir.cpp b/src/glsl/ast_to_hir.cpp
index dfa32d9..bf37e3f 100644
--- a/src/glsl/ast_to_hir.cpp
+++ b/src/glsl/ast_to_hir.cpp
@@ -2111,7 +2111,7 @@ apply_type_qualifier_to_variable(const struct ast_type_qualifier *qual,
          _mesa_glsl_error(loc, state,
                           "interpolation qualifier `%s' can only be applied to "
                           "shader inputs or outputs.",
-                          var->interpolation_string());
+                          interpolation_string(var->interpolation));
 
       }
 
@@ -2120,7 +2120,7 @@ apply_type_qualifier_to_variable(const struct ast_type_qualifier *qual,
          _mesa_glsl_error(loc, state,
                           "interpolation qualifier `%s' cannot be applied to "
                           "vertex shader inputs or fragment shader outputs",
-                          var->interpolation_string());
+                          interpolation_string(var->interpolation));
       }
    }
 
diff --git a/src/glsl/ir.cpp b/src/glsl/ir.cpp
index de9613e..4e06a9f 100644
--- a/src/glsl/ir.cpp
+++ b/src/glsl/ir.cpp
@@ -1609,9 +1609,9 @@ ir_variable::ir_variable(const struct glsl_type *type, const char *name,
 
 
 const char *
-ir_variable::interpolation_string() const
+interpolation_string(unsigned interpolation)
 {
-   switch (this->interpolation) {
+   switch (interpolation) {
    case INTERP_QUALIFIER_NONE:          return "no";
    case INTERP_QUALIFIER_SMOOTH:        return "smooth";
    case INTERP_QUALIFIER_FLAT:          return "flat";
diff --git a/src/glsl/ir.h b/src/glsl/ir.h
index aac8cbb..c4c0055 100644
--- a/src/glsl/ir.h
+++ b/src/glsl/ir.h
@@ -312,6 +312,22 @@ struct ir_state_slot {
    int swizzle;
 };
 
+
+/**
+ * Get the string value for an interpolation qualifier
+ *
+ * \return The string that would be used in a shader to specify \c
+ * mode will be returned.
+ *
+ * This function is used to generate error messages of the form "shader
+ * uses %s interpolation qualifier", so in the case where there is no
+ * interpolation qualifier, it returns "no".
+ *
+ * This function should only be used on a shader input or output variable.
+ */
+const char *interpolation_string(unsigned interpolation);
+
+
 class ir_variable : public ir_instruction {
 public:
    ir_variable(const struct glsl_type *, const char *, ir_variable_mode);
@@ -332,20 +348,6 @@ public:
 
 
    /**
-    * Get the string value for the interpolation qualifier
-    *
-    * \return The string that would be used in a shader to specify \c
-    * mode will be returned.
-    *
-    * This function is used to generate error messages of the form "shader
-    * uses %s interpolation qualifier", so in the case where there is no
-    * interpolation qualifier, it returns "no".
-    *
-    * This function should only be used on a shader input or output variable.
-    */
-   const char *interpolation_string() const;
-
-   /**
     * Determine how this variable should be interpolated based on its
     * interpolation qualifier (if present), whether it is gl_Color or
     * gl_SecondaryColor, and whether flatshading is enabled in the current GL
diff --git a/src/glsl/link_varyings.cpp b/src/glsl/link_varyings.cpp
index 4ba6d8a..66f0e22 100644
--- a/src/glsl/link_varyings.cpp
+++ b/src/glsl/link_varyings.cpp
@@ -125,9 +125,9 @@ cross_validate_types_and_qualifiers(struct gl_shader_program *prog,
                    "interpolation qualifier\n",
                    _mesa_glsl_shader_target_name(producer_type),
                    output->name,
-                   output->interpolation_string(),
+                   interpolation_string(output->interpolation),
                    _mesa_glsl_shader_target_name(consumer_type),
-                   input->interpolation_string());
+                   interpolation_string(input->interpolation));
       return;
    }
 }
-- 
1.8.4.1



More information about the mesa-dev mailing list