From: Ian Romanick Date: Wed, 25 Sep 2013 18:44:41 +0000 (-0700) Subject: glsl: Make mode_string function globally available X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=f8c579dc0fc0ffed41a86daecbcfe6c3b9843e61;p=mesa.git 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 Reviewed-by: Paul Berry --- diff --git a/src/glsl/ir.cpp b/src/glsl/ir.cpp index 768c4dcc707..1b4973612e0 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 49de9e358bd..5b30fe59b91 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 495a2abe280..49bb142a80a 100644 --- a/src/glsl/linker.cpp +++ b/src/glsl/linker.cpp @@ -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 */