This is a trivial enough function that can live in the header. While we're here, add a STATIC_ASSERT for good measure.
Add the missing SYSTEM_VALUE_NUM_WORK_GROUPS enum. Signed-off-by: Emil Velikov <emil.veli...@collabora.com> --- src/glsl/shader_enums.c | 24 ------------------------ src/glsl/shader_enums.h | 30 +++++++++++++++++++++++++++++- 2 files changed, 29 insertions(+), 25 deletions(-) diff --git a/src/glsl/shader_enums.c b/src/glsl/shader_enums.c index 61c1fa6..9b9ec2b 100644 --- a/src/glsl/shader_enums.c +++ b/src/glsl/shader_enums.c @@ -32,30 +32,6 @@ #define ENUM(x) [x] = #x #define NAME(val) ((((val) < ARRAY_SIZE(names)) && names[(val)]) ? names[(val)] : "UNKNOWN") -const char * gl_system_value_name(gl_system_value sysval) -{ - static const char *names[] = { - ENUM(SYSTEM_VALUE_VERTEX_ID), - ENUM(SYSTEM_VALUE_INSTANCE_ID), - ENUM(SYSTEM_VALUE_VERTEX_ID_ZERO_BASE), - ENUM(SYSTEM_VALUE_BASE_VERTEX), - ENUM(SYSTEM_VALUE_INVOCATION_ID), - ENUM(SYSTEM_VALUE_FRONT_FACE), - ENUM(SYSTEM_VALUE_SAMPLE_ID), - ENUM(SYSTEM_VALUE_SAMPLE_POS), - ENUM(SYSTEM_VALUE_SAMPLE_MASK_IN), - ENUM(SYSTEM_VALUE_TESS_COORD), - ENUM(SYSTEM_VALUE_VERTICES_IN), - ENUM(SYSTEM_VALUE_PRIMITIVE_ID), - ENUM(SYSTEM_VALUE_TESS_LEVEL_OUTER), - ENUM(SYSTEM_VALUE_TESS_LEVEL_INNER), - ENUM(SYSTEM_VALUE_LOCAL_INVOCATION_ID), - ENUM(SYSTEM_VALUE_WORK_GROUP_ID), - ENUM(SYSTEM_VALUE_VERTEX_CNT), - }; - return NAME(sysval); -} - const char * glsl_interp_qualifier_name(enum glsl_interp_qualifier qual) { static const char *names[] = { diff --git a/src/glsl/shader_enums.h b/src/glsl/shader_enums.h index 9afbb8d..a560017 100644 --- a/src/glsl/shader_enums.h +++ b/src/glsl/shader_enums.h @@ -552,7 +552,35 @@ typedef enum SYSTEM_VALUE_MAX /**< Number of values */ } gl_system_value; -const char * gl_system_value_name(gl_system_value sysval); +static const char *gl_system_value_names[] = { + ENUM(SYSTEM_VALUE_VERTEX_ID), + ENUM(SYSTEM_VALUE_INSTANCE_ID), + ENUM(SYSTEM_VALUE_VERTEX_ID_ZERO_BASE), + ENUM(SYSTEM_VALUE_BASE_VERTEX), + ENUM(SYSTEM_VALUE_INVOCATION_ID), + ENUM(SYSTEM_VALUE_FRONT_FACE), + ENUM(SYSTEM_VALUE_SAMPLE_ID), + ENUM(SYSTEM_VALUE_SAMPLE_POS), + ENUM(SYSTEM_VALUE_SAMPLE_MASK_IN), + ENUM(SYSTEM_VALUE_TESS_COORD), + ENUM(SYSTEM_VALUE_VERTICES_IN), + ENUM(SYSTEM_VALUE_PRIMITIVE_ID), + ENUM(SYSTEM_VALUE_TESS_LEVEL_OUTER), + ENUM(SYSTEM_VALUE_TESS_LEVEL_INNER), + ENUM(SYSTEM_VALUE_LOCAL_INVOCATION_ID), + ENUM(SYSTEM_VALUE_WORK_GROUP_ID), + ENUM(SYSTEM_VALUE_NUM_WORK_GROUPS), + ENUM(SYSTEM_VALUE_VERTEX_CNT), +}; + +static inline const char *gl_system_value_name(gl_system_value sysval) +{ + STATIC_ASSERT(ARRAY_SIZE(gl_system_value_names) == SYSTEM_VALUE_MAX); + if (sysval < ARRAY_SIZE(gl_system_value_names)) + return gl_system_value_names[sysval]; + else + return "UNKNOWN"; +} /** * The possible interpolation qualifiers that can be applied to a fragment -- 2.5.0 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev