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