This is a trivial enough function that can live in the header. While we're here, add a STATIC_ASSERT for good measure.
Signed-off-by: Emil Velikov <emil.veli...@collabora.com> --- src/glsl/shader_enums.c | 13 ------------- src/glsl/shader_enums.h | 23 +++++++++++++++++++++-- 2 files changed, 21 insertions(+), 15 deletions(-) diff --git a/src/glsl/shader_enums.c b/src/glsl/shader_enums.c index c196b79..b3da3e9 100644 --- a/src/glsl/shader_enums.c +++ b/src/glsl/shader_enums.c @@ -32,19 +32,6 @@ #define ENUM(x) [x] = #x #define NAME(val) ((((val) < ARRAY_SIZE(names)) && names[(val)]) ? names[(val)] : "UNKNOWN") -const char * gl_shader_stage_name(gl_shader_stage stage) -{ - static const char *names[] = { - ENUM(MESA_SHADER_VERTEX), - ENUM(MESA_SHADER_TESS_CTRL), - ENUM(MESA_SHADER_TESS_EVAL), - ENUM(MESA_SHADER_GEOMETRY), - ENUM(MESA_SHADER_FRAGMENT), - ENUM(MESA_SHADER_COMPUTE), - }; - return NAME(stage); -} - const char * gl_vert_attrib_name(gl_vert_attrib attrib) { static const char *names[] = { diff --git a/src/glsl/shader_enums.h b/src/glsl/shader_enums.h index 2a5d2c5..fbd2744 100644 --- a/src/glsl/shader_enums.h +++ b/src/glsl/shader_enums.h @@ -43,10 +43,27 @@ typedef enum MESA_SHADER_COMPUTE = 5, } gl_shader_stage; -const char * gl_shader_stage_name(gl_shader_stage stage); - #define MESA_SHADER_STAGES (MESA_SHADER_COMPUTE + 1) +#define ENUM(x) [x] = #x + +static const char *gl_shader_stage_names[] = { + ENUM(MESA_SHADER_VERTEX), + ENUM(MESA_SHADER_TESS_CTRL), + ENUM(MESA_SHADER_TESS_EVAL), + ENUM(MESA_SHADER_GEOMETRY), + ENUM(MESA_SHADER_FRAGMENT), + ENUM(MESA_SHADER_COMPUTE), +}; + +static inline const char *gl_shader_stage_name(gl_shader_stage stage) +{ + STATIC_ASSERT(ARRAY_SIZE(gl_shader_stage_names) == MESA_SHADER_STAGES); + if (stage < ARRAY_SIZE(gl_shader_stage_names)) + return gl_shader_stage_names[stage]; + else + return "UNKNOWN"; +} /** * Indexes for vertex program attributes. @@ -473,4 +490,6 @@ typedef enum const char * gl_frag_result_name(gl_frag_result result); +#undef ENUM + #endif /* SHADER_ENUMS_H */ -- 2.5.0 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev