Mesa (master): glsl: Make mode_string function globally available

Ian Romanick idr at kemper.freedesktop.org
Wed Oct 30 20:49:48 UTC 2013


Module: Mesa
Branch: master
Commit: f8c579dc0fc0ffed41a86daecbcfe6c3b9843e61
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=f8c579dc0fc0ffed41a86daecbcfe6c3b9843e61

Author: Ian Romanick <ian.d.romanick at intel.com>
Date:   Wed Sep 25 11:44:41 2013 -0700

glsl: Make mode_string function globally available

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 at intel.com>
Reviewed-by: Paul Berry <stereotype441 at gmail.com>

---

 src/glsl/ir.cpp     |   43 +++++++++++++++++++++++++++++++++++++++++++
 src/glsl/ir.h       |    3 +++
 src/glsl/linker.cpp |   23 -----------------------
 3 files changed, 46 insertions(+), 23 deletions(-)

diff --git a/src/glsl/ir.cpp b/src/glsl/ir.cpp
index 768c4dc..1b49736 100644
--- a/src/glsl/ir.cpp
+++ b/src/glsl/ir.cpp
@@ -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";
+}
diff --git a/src/glsl/ir.h b/src/glsl/ir.h
index 49de9e3..5b30fe5 100644
--- a/src/glsl/ir.h
+++ b/src/glsl/ir.h
@@ -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 */
 
diff --git a/src/glsl/linker.cpp b/src/glsl/linker.cpp
index 495a2ab..49bb142 100644
--- a/src/glsl/linker.cpp
+++ b/src/glsl/linker.cpp
@@ -558,29 +558,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
  */
 void




More information about the mesa-commit mailing list