On 8 October 2015 at 19:38, Ilia Mirkin <imir...@alum.mit.edu> wrote: > On Thu, Oct 8, 2015 at 2:34 PM, Emil Velikov <emil.l.veli...@gmail.com> wrote: >> On 8 October 2015 at 19:32, Ilia Mirkin <imir...@alum.mit.edu> wrote: >>> 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 \ >>> >> Yes it is nasty. >> >>> 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? >> Give it a go and admire the duplicated symbols :) > > Errr, that was a typo. I meant it should be removed from > PROGRAM_FILES. Any additional duplicated items should be removed as > well. Patches welcome :-) And please give the scons a test as well, just in case.
-Emil _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev