glsl: Make mode_string function globally available
authorIan Romanick <ian.d.romanick@intel.com>
Wed, 25 Sep 2013 18:44:41 +0000 (11:44 -0700)
committerIan Romanick <ian.d.romanick@intel.com>
Wed, 30 Oct 2013 20:49:30 +0000 (13:49 -0700)
I made this a function (instead of a method of ir_variable) because it
made the change set smaller, and I expect that there will be an overload
that takes an ir_var_mode enum.  Having both functions used the same way
seemed better.

v2: Add missing case for ir_var_system_value.

v3: Change the ir_var_mode_count case to just break.  Move the assertion
and the return outside the switch-statment.  In the unlikely event that
var->mode is an invalid value other than ir_var_mode_count, the
assertion will still fire, and in release builds we won't wind up
returning a garbage pointer.  Suggested by Paul.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Paul Berry <stereotype441@gmail.com>
src/glsl/ir.cpp
src/glsl/ir.h
src/glsl/linker.cpp

index 768c4dcc707a7034340d45d9430e7f516479e257..1b4973612e02d82ded52de1742a88ac9b7a08aa2 100644 (file)
@@ -1891,3 +1891,46 @@ vertices_per_prim(GLenum prim)
       return 3;
    }
 }
+
+/**
+ * Generate a string describing the mode of a variable
+ */
+const char *
+mode_string(const ir_variable *var)
+{
+   switch (var->mode) {
+   case ir_var_auto:
+      return (var->read_only) ? "global constant" : "global variable";
+
+   case ir_var_uniform:
+      return "uniform";
+
+   case ir_var_shader_in:
+      return "shader input";
+
+   case ir_var_shader_out:
+      return "shader output";
+
+   case ir_var_function_in:
+   case ir_var_const_in:
+      return "function input";
+
+   case ir_var_function_out:
+      return "function output";
+
+   case ir_var_function_inout:
+      return "function inout";
+
+   case ir_var_system_value:
+      return "shader input";
+
+   case ir_var_temporary:
+      return "compiler temporary";
+
+   case ir_var_mode_count:
+      break;
+   }
+
+   assert(!"Should not get here.");
+   return "invalid variable";
+}
index 49de9e358bd749c90b67921bed5883b7d571f4ab..5b30fe59b91ba2f378a6f64abc0d6215fb6a6586 100644 (file)
@@ -2306,6 +2306,9 @@ extern char *
 prototype_string(const glsl_type *return_type, const char *name,
                 exec_list *parameters);
 
+const char *
+mode_string(const ir_variable *var);
+
 extern "C" {
 #endif /* __cplusplus */
 
index 495a2abe2802cc0b0275da232cca89b98e9dfa17..49bb142a80a6343a73a6b4e7c91d0f46ffdb60a2 100644 (file)
@@ -557,29 +557,6 @@ validate_geometry_shader_executable(struct gl_shader_program *prog,
 }
 
 
-/**
- * Generate a string describing the mode of a variable
- */
-static const char *
-mode_string(const ir_variable *var)
-{
-   switch (var->mode) {
-   case ir_var_auto:
-      return (var->read_only) ? "global constant" : "global variable";
-
-   case ir_var_uniform:    return "uniform";
-   case ir_var_shader_in:  return "shader input";
-   case ir_var_shader_out: return "shader output";
-
-   case ir_var_const_in:
-   case ir_var_temporary:
-   default:
-      assert(!"Should not get here.");
-      return "invalid variable";
-   }
-}
-
-
 /**
  * Perform validation of global variables used across multiple shaders
  */