On Tue, Sep 15, 2015 at 9:52 AM, Iago Toral <ito...@igalia.com> wrote: > On Tue, 2015-09-15 at 08:07 -0400, Rob Clark wrote: >> On Tue, Sep 15, 2015 at 2:55 AM, Iago Toral <ito...@igalia.com> wrote: >> > On Sun, 2015-09-13 at 11:51 -0400, Rob Clark wrote: >> >> From: Rob Clark <robcl...@freedesktop.org> >> >> >> >> Signed-off-by: Rob Clark <robcl...@freedesktop.org> >> >> --- >> >> src/Makefile.am | 1 + >> >> src/glsl/shader_enums.c | 202 >> >> ++++++++++++++++++++++++++++++++++++++++++++++ >> >> src/glsl/shader_enums.h | 53 ++++++++++++ >> >> src/mesa/Makefile.sources | 4 +- >> >> 4 files changed, 259 insertions(+), 1 deletion(-) >> >> create mode 100644 src/glsl/shader_enums.c >> >> >> >> diff --git a/src/Makefile.am b/src/Makefile.am >> >> index 0d49bcd..9e15cca 100644 >> >> --- a/src/Makefile.am >> >> +++ b/src/Makefile.am >> >> @@ -62,6 +62,7 @@ AM_CPPFLAGS = \ >> >> noinst_LTLIBRARIES = libglsl_util.la >> >> >> >> libglsl_util_la_SOURCES = \ >> >> + glsl/shader_enums.c \ >> >> mesa/main/imports.c \ >> >> mesa/program/prog_hash_table.c \ >> >> mesa/program/symbol_table.c \ >> >> diff --git a/src/glsl/shader_enums.c b/src/glsl/shader_enums.c >> >> new file mode 100644 >> >> index 0000000..1c45a40 >> >> --- /dev/null >> >> +++ b/src/glsl/shader_enums.c >> >> @@ -0,0 +1,202 @@ >> >> +/* >> >> + * Mesa 3-D graphics library >> >> + * >> >> + * Copyright © 2015 Red Hat >> >> + * >> >> + * Permission is hereby granted, free of charge, to any person obtaining >> >> a >> >> + * copy of this software and associated documentation files (the >> >> "Software"), >> >> + * to deal in the Software without restriction, including without >> >> limitation >> >> + * the rights to use, copy, modify, merge, publish, distribute, >> >> sublicense, >> >> + * and/or sell copies of the Software, and to permit persons to whom the >> >> + * Software is furnished to do so, subject to the following conditions: >> >> + * >> >> + * The above copyright notice and this permission notice (including the >> >> next >> >> + * paragraph) shall be included in all copies or substantial portions of >> >> the >> >> + * Software. >> >> + * >> >> + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, >> >> EXPRESS OR >> >> + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF >> >> MERCHANTABILITY, >> >> + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT >> >> SHALL >> >> + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR >> >> OTHER >> >> + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, >> >> ARISING >> >> + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER >> >> DEALINGS >> >> + * IN THE SOFTWARE. >> >> + * >> >> + * Authors: >> >> + * Rob Clark <robcl...@freedesktop.org> >> >> + */ >> >> + >> >> +#include "glsl/shader_enums.h" >> >> +#include "util/macros.h" >> >> + >> >> +#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[] = { >> >> + ENUM(VERT_ATTRIB_POS), >> >> + ENUM(VERT_ATTRIB_WEIGHT), >> >> + ENUM(VERT_ATTRIB_NORMAL), >> >> + ENUM(VERT_ATTRIB_COLOR0), >> >> + ENUM(VERT_ATTRIB_COLOR1), >> >> + ENUM(VERT_ATTRIB_FOG), >> >> + ENUM(VERT_ATTRIB_COLOR_INDEX), >> >> + ENUM(VERT_ATTRIB_EDGEFLAG), >> >> + ENUM(VERT_ATTRIB_TEX0), >> >> + ENUM(VERT_ATTRIB_TEX1), >> >> + ENUM(VERT_ATTRIB_TEX2), >> >> + ENUM(VERT_ATTRIB_TEX3), >> >> + ENUM(VERT_ATTRIB_TEX4), >> >> + ENUM(VERT_ATTRIB_TEX5), >> >> + ENUM(VERT_ATTRIB_TEX6), >> >> + ENUM(VERT_ATTRIB_TEX7), >> >> + ENUM(VERT_ATTRIB_POINT_SIZE), >> >> + ENUM(VERT_ATTRIB_GENERIC0), >> >> + ENUM(VERT_ATTRIB_GENERIC1), >> >> + ENUM(VERT_ATTRIB_GENERIC2), >> >> + ENUM(VERT_ATTRIB_GENERIC3), >> >> + ENUM(VERT_ATTRIB_GENERIC4), >> >> + ENUM(VERT_ATTRIB_GENERIC5), >> >> + ENUM(VERT_ATTRIB_GENERIC6), >> >> + ENUM(VERT_ATTRIB_GENERIC7), >> >> + ENUM(VERT_ATTRIB_GENERIC8), >> >> + ENUM(VERT_ATTRIB_GENERIC9), >> >> + ENUM(VERT_ATTRIB_GENERIC10), >> >> + ENUM(VERT_ATTRIB_GENERIC11), >> >> + ENUM(VERT_ATTRIB_GENERIC12), >> >> + ENUM(VERT_ATTRIB_GENERIC13), >> >> + ENUM(VERT_ATTRIB_GENERIC14), >> >> + ENUM(VERT_ATTRIB_GENERIC15), >> >> + }; >> >> + return NAME(attrib); >> >> +} >> >> + >> >> +const char * gl_varying_slot_name(gl_varying_slot slot) >> >> +{ >> >> + static const char *names[] = { >> >> + ENUM(VARYING_SLOT_POS), >> >> + ENUM(VARYING_SLOT_COL0), >> >> + ENUM(VARYING_SLOT_COL1), >> >> + ENUM(VARYING_SLOT_FOGC), >> >> + ENUM(VARYING_SLOT_TEX0), >> >> + ENUM(VARYING_SLOT_TEX1), >> >> + ENUM(VARYING_SLOT_TEX2), >> >> + ENUM(VARYING_SLOT_TEX3), >> >> + ENUM(VARYING_SLOT_TEX4), >> >> + ENUM(VARYING_SLOT_TEX5), >> >> + ENUM(VARYING_SLOT_TEX6), >> >> + ENUM(VARYING_SLOT_TEX7), >> >> + ENUM(VARYING_SLOT_PSIZ), >> >> + ENUM(VARYING_SLOT_BFC0), >> >> + ENUM(VARYING_SLOT_BFC1), >> >> + ENUM(VARYING_SLOT_EDGE), >> >> + ENUM(VARYING_SLOT_CLIP_VERTEX), >> >> + ENUM(VARYING_SLOT_CLIP_DIST0), >> >> + ENUM(VARYING_SLOT_CLIP_DIST1), >> >> + ENUM(VARYING_SLOT_PRIMITIVE_ID), >> >> + ENUM(VARYING_SLOT_LAYER), >> >> + ENUM(VARYING_SLOT_VIEWPORT), >> >> + ENUM(VARYING_SLOT_FACE), >> >> + ENUM(VARYING_SLOT_PNTC), >> >> + ENUM(VARYING_SLOT_TESS_LEVEL_OUTER), >> >> + ENUM(VARYING_SLOT_TESS_LEVEL_INNER), >> >> + ENUM(VARYING_SLOT_VAR0), >> >> + ENUM(VARYING_SLOT_VAR1), >> >> + ENUM(VARYING_SLOT_VAR2), >> >> + ENUM(VARYING_SLOT_VAR3), >> >> + ENUM(VARYING_SLOT_VAR4), >> >> + ENUM(VARYING_SLOT_VAR5), >> >> + ENUM(VARYING_SLOT_VAR6), >> >> + ENUM(VARYING_SLOT_VAR7), >> >> + ENUM(VARYING_SLOT_VAR8), >> >> + ENUM(VARYING_SLOT_VAR9), >> >> + ENUM(VARYING_SLOT_VAR10), >> >> + ENUM(VARYING_SLOT_VAR11), >> >> + ENUM(VARYING_SLOT_VAR12), >> >> + ENUM(VARYING_SLOT_VAR13), >> >> + ENUM(VARYING_SLOT_VAR14), >> >> + ENUM(VARYING_SLOT_VAR15), >> >> + ENUM(VARYING_SLOT_VAR16), >> >> + ENUM(VARYING_SLOT_VAR17), >> >> + ENUM(VARYING_SLOT_VAR18), >> >> + ENUM(VARYING_SLOT_VAR19), >> >> + ENUM(VARYING_SLOT_VAR20), >> >> + ENUM(VARYING_SLOT_VAR21), >> >> + ENUM(VARYING_SLOT_VAR22), >> >> + ENUM(VARYING_SLOT_VAR23), >> >> + ENUM(VARYING_SLOT_VAR24), >> >> + ENUM(VARYING_SLOT_VAR25), >> >> + ENUM(VARYING_SLOT_VAR26), >> >> + ENUM(VARYING_SLOT_VAR27), >> >> + ENUM(VARYING_SLOT_VAR28), >> >> + ENUM(VARYING_SLOT_VAR29), >> >> + ENUM(VARYING_SLOT_VAR30), >> >> + ENUM(VARYING_SLOT_VAR31), >> >> + }; >> >> + return NAME(slot); >> >> +} >> >> + >> >> +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), >> >> + }; >> >> + return NAME(sysval); >> >> +} >> >> + >> >> +const char * glsl_interp_qualifier_name(enum glsl_interp_qualifier qual) >> >> +{ >> >> + static const char *names[] = { >> >> + ENUM(INTERP_QUALIFIER_NONE), >> >> + ENUM(INTERP_QUALIFIER_SMOOTH), >> >> + ENUM(INTERP_QUALIFIER_FLAT), >> >> + ENUM(INTERP_QUALIFIER_NOPERSPECTIVE), >> >> + }; >> >> + return NAME(qual); >> >> +} >> >> + >> >> +const char * gl_frag_result_name(gl_frag_result result) >> >> +{ >> >> + static const char *names[] = { >> >> + ENUM(FRAG_RESULT_DEPTH), >> >> + ENUM(FRAG_RESULT_STENCIL), >> >> + ENUM(FRAG_RESULT_COLOR), >> >> + ENUM(FRAG_RESULT_SAMPLE_MASK), >> >> + ENUM(FRAG_RESULT_DATA0), >> >> + ENUM(FRAG_RESULT_DATA1), >> >> + ENUM(FRAG_RESULT_DATA2), >> >> + ENUM(FRAG_RESULT_DATA3), >> >> + ENUM(FRAG_RESULT_DATA4), >> >> + ENUM(FRAG_RESULT_DATA5), >> >> + ENUM(FRAG_RESULT_DATA6), >> >> + ENUM(FRAG_RESULT_DATA7), >> >> + }; >> >> + return NAME(result); >> >> +} >> >> diff --git a/src/glsl/shader_enums.h b/src/glsl/shader_enums.h >> >> index 9bb163f..d054b87 100644 >> >> --- a/src/glsl/shader_enums.h >> >> +++ b/src/glsl/shader_enums.h >> >> @@ -43,6 +43,8 @@ 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) >> >> >> >> >> >> @@ -91,6 +93,8 @@ typedef enum >> >> VERT_ATTRIB_MAX = 33 >> >> } gl_vert_attrib; >> >> >> >> +const char * gl_vert_attrib_name(gl_vert_attrib attrib); >> >> + >> >> /** >> >> * Symbolic constats to help iterating over >> >> * specific blocks of vertex attributes. >> >> @@ -193,8 +197,43 @@ typedef enum >> >> VARYING_SLOT_TESS_LEVEL_OUTER, /* Only appears as TCS output. */ >> >> VARYING_SLOT_TESS_LEVEL_INNER, /* Only appears as TCS output. */ >> >> VARYING_SLOT_VAR0, /* First generic varying slot */ >> >> + /* the remaining are simply for the benefit of gl_varying_slot_name() >> >> + * and not to be construed as an upper bound: >> >> + */ >> >> + VARYING_SLOT_VAR1, >> >> + VARYING_SLOT_VAR2, >> >> + VARYING_SLOT_VAR3, >> >> + VARYING_SLOT_VAR4, >> >> + VARYING_SLOT_VAR5, >> >> + VARYING_SLOT_VAR6, >> >> + VARYING_SLOT_VAR7, >> >> + VARYING_SLOT_VAR8, >> >> + VARYING_SLOT_VAR9, >> >> + VARYING_SLOT_VAR10, >> >> + VARYING_SLOT_VAR11, >> >> + VARYING_SLOT_VAR12, >> >> + VARYING_SLOT_VAR13, >> >> + VARYING_SLOT_VAR14, >> >> + VARYING_SLOT_VAR15, >> >> + VARYING_SLOT_VAR16, >> >> + VARYING_SLOT_VAR17, >> >> + VARYING_SLOT_VAR18, >> >> + VARYING_SLOT_VAR19, >> >> + VARYING_SLOT_VAR20, >> >> + VARYING_SLOT_VAR21, >> >> + VARYING_SLOT_VAR22, >> >> + VARYING_SLOT_VAR23, >> >> + VARYING_SLOT_VAR24, >> >> + VARYING_SLOT_VAR25, >> >> + VARYING_SLOT_VAR26, >> >> + VARYING_SLOT_VAR27, >> >> + VARYING_SLOT_VAR28, >> >> + VARYING_SLOT_VAR29, >> >> + VARYING_SLOT_VAR30, >> >> + VARYING_SLOT_VAR31, >> >> } gl_varying_slot; >> >> >> >> +const char * gl_varying_slot_name(gl_varying_slot slot); >> >> >> >> /** >> >> * Bitflags for varying slots. >> >> @@ -366,6 +405,7 @@ typedef enum >> >> SYSTEM_VALUE_MAX /**< Number of values */ >> >> } gl_system_value; >> >> >> >> +const char * gl_system_value_name(gl_system_value sysval); >> >> >> >> /** >> >> * The possible interpolation qualifiers that can be applied to a >> >> fragment >> >> @@ -383,6 +423,8 @@ enum glsl_interp_qualifier >> >> INTERP_QUALIFIER_COUNT /**< Number of interpolation qualifiers */ >> >> }; >> >> >> >> +const char * glsl_interp_qualifier_name(enum glsl_interp_qualifier qual); >> >> + >> >> /** >> >> * Fragment program results >> >> */ >> >> @@ -399,8 +441,19 @@ typedef enum >> >> /* FRAG_RESULT_DATAn are the per-render-target (GLSL gl_FragData[n] >> >> * or ARB_fragment_program fragment.color[n]) color results. If >> >> * any are written, FRAG_RESULT_COLOR will not be written. >> >> + * FRAG_RESULT_DATA1 and up are simply for the benefit of >> >> + * gl_frag_result_name() and not to be construed as an upper bound >> >> */ >> >> FRAG_RESULT_DATA0 = 4, >> >> + FRAG_RESULT_DATA1, >> >> + FRAG_RESULT_DATA2, >> >> + FRAG_RESULT_DATA3, >> >> + FRAG_RESULT_DATA4, >> >> + FRAG_RESULT_DATA5, >> >> + FRAG_RESULT_DATA6, >> >> + FRAG_RESULT_DATA7, >> >> } gl_frag_result; >> >> >> >> +const char * gl_frag_result_name(gl_frag_result result); >> >> + >> >> #endif /* SHADER_ENUMS_H */ >> >> diff --git a/src/mesa/Makefile.sources b/src/mesa/Makefile.sources >> >> index ed9848c..2a719a0 100644 >> >> --- a/src/mesa/Makefile.sources >> >> +++ b/src/mesa/Makefile.sources >> >> @@ -523,7 +523,9 @@ PROGRAM_FILES = \ >> >> program/sampler.h \ >> >> program/string_to_uint_map.cpp \ >> >> program/symbol_table.c \ >> >> - program/symbol_table.h >> >> + program/symbol_table.h \ >> >> + ../glsl/shader_enums.c \ >> >> + ../glsl/shader_enums.h >> > >> > Why not put these under LIBGLSL_FILES in src/glsl/Makefile.sources? That >> > would seem like a more natural choice. >> >> yes, it is a strange place, but since nir is used by gallium drivers >> this needs to get pulled into both libglsl_util (for non-GL state >> trackers) as well as libmesagallium (for GL) > > In the case of libglsl_util, there are no references to PROGRAM_FILES > and no LIBADD target either, so I don't think this is pulling these > symbols for it, is it?:
no, shader_enums.c got added in two places.. directly in the libglsl_util_la_SOURCES for the !GL case.. and PROGRAM_FILES for the GL case. PROGRAM_FILES was just a convenient place to pull it in to libmesa_la_SOURCES or libmesagallium_la_SOURCES for the GL case (either gallium or classic), since libglsl_util.la is not used in the GL case. That is why there is some duplication already between libglsl_util_la_SOURCES and libmesa{gallium}_la_SOURCES BR, -R > libglsl_util_la_SOURCES = \ > mesa/main/imports.c \ > mesa/program/prog_hash_table.c \ > mesa/program/symbol_table.c \ > mesa/program/dummy_errors.c > > The files included in this target are declared in other targets as well > (in fact, some are declared in LIBGLSL_FILES) so as far as libglsl_util > is concerned, I think it should be fine to just add the files here if we > need them. It seems consistent with the way things are setup now. > > libmesagallium seems to depend on libglsl already, so if we add the > files in LIBGLSL_FILES that should be covered: > > libmesagallium_la_LIBADD = \ > $(top_builddir)/src/glsl/libglsl.la \ > $(ARCH_LIBS) > > Or maybe I am missing something, my autotools knowledge is rather > rudimentary :) > > Iago > >> tbh it would be nice to make NIR more of a stand-alone thing, to make >> this aspect of the build less awkward.. >> >> BR, >> -R >> >> > Iago >> > >> >> PROGRAM_NIR_FILES = \ >> >> program/prog_to_nir.c \ >> > >> > >> > > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev