On Thu, Oct 8, 2015 at 2:23 PM, Emil Velikov <emil.l.veli...@gmail.com> wrote: > On 8 October 2015 at 18:57, Ilia Mirkin <imir...@alum.mit.edu> wrote: >> On Thu, Oct 8, 2015 at 1:52 PM, Emil Velikov <emil.l.veli...@gmail.com> >> wrote: >>> On 8 October 2015 at 18:08, Ilia Mirkin <imir...@alum.mit.edu> wrote: >>>> On Thu, Oct 8, 2015 at 1:09 PM, Emil Velikov <emil.l.veli...@gmail.com> >>>> wrote: >>>>> 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), >>>>> +}; >>>> >>>> Won't this bloat the binary by including this in every object file? I >>>> don't know that the array will get merged. (The strings will though.) >>>> Normally these things live in c files so that they're stored in only >>>> one object. >>>> >>> The linker (with its garbage collector) will sort it out for us. Seems >>> like we do get a small increase from the series >>> >>> text data bss dec hex filename >>> 5103374 204048 27648 5335070 51681e i965_dri.so.after >>> 5104590 204208 27648 5336446 516d7e i965_dri.so.before >>> >>> Namely - we gain ~1.2k of text. Which imho doesn't sound that bad ? >> >> In exchange for what? From what I can tell... nothing. The array >> definition needs to live in a c file. You can move the function to >> look up from it into a header, that's fine. > > Nasty bug in(?) autohell [1]. If you're happy to dive in the auto* > boat and fix it, I would gladly purge this series :-)
Well that's just asking for trouble: src/Makefile.am: glsl/shader_enums.c \ src/mesa/Makefile.sources: ../glsl/shader_enums.c \ It should just be removed from shader_enums.c and make sure that libglsl_util is a dep of libmesa_la and libmesagallium_la. Am I missing something? _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev