From: Lionel Landwerlin Date: Fri, 27 Nov 2020 10:26:34 +0000 (+0200) Subject: compiler/nir: introduce a new helper to get varying name X-Git-Tag: upstream/21.0.0~1994 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=244514addd990dc211c8352e03dc13bbd21e6bab;p=platform%2Fupstream%2Fmesa.git compiler/nir: introduce a new helper to get varying name As we now reuse the enums to remain within 64 values, we need to get the proper name using the stage. v2: Use enum type for parameter (Jason) Signed-off-by: Lionel Landwerlin Reviewed-by: Samuel Pitoiset Reviewed-by: Jason Ekstrand Part-of: --- diff --git a/src/compiler/nir/nir_print.c b/src/compiler/nir/nir_print.c index dc8b67c..b3edd8c 100644 --- a/src/compiler/nir/nir_print.c +++ b/src/compiler/nir/nir_print.c @@ -538,18 +538,23 @@ print_var_decl(nir_variable *var, print_state *state) if (var->data.mode == nir_var_shader_in) loc = gl_vert_attrib_name(var->data.location); else if (var->data.mode == nir_var_shader_out) - loc = gl_varying_slot_name(var->data.location); + loc = gl_varying_slot_name_for_stage(var->data.location, + state->shader->info.stage); break; case MESA_SHADER_GEOMETRY: if ((var->data.mode == nir_var_shader_in) || - (var->data.mode == nir_var_shader_out)) - loc = gl_varying_slot_name(var->data.location); + (var->data.mode == nir_var_shader_out)) { + loc = gl_varying_slot_name_for_stage(var->data.location, + state->shader->info.stage); + } break; case MESA_SHADER_FRAGMENT: - if (var->data.mode == nir_var_shader_in) - loc = gl_varying_slot_name(var->data.location); - else if (var->data.mode == nir_var_shader_out) + if (var->data.mode == nir_var_shader_in) { + loc = gl_varying_slot_name_for_stage(var->data.location, + state->shader->info.stage); + } else if (var->data.mode == nir_var_shader_out) { loc = gl_frag_result_name(var->data.location); + } break; case MESA_SHADER_TESS_CTRL: case MESA_SHADER_TESS_EVAL: diff --git a/src/compiler/shader_enums.c b/src/compiler/shader_enums.c index 543678f..d6fe197 100644 --- a/src/compiler/shader_enums.c +++ b/src/compiler/shader_enums.c @@ -228,6 +228,14 @@ gl_varying_slot_name(gl_varying_slot slot) } const char * +gl_varying_slot_name_for_stage(gl_varying_slot slot, gl_shader_stage stage) +{ + if (stage != MESA_SHADER_FRAGMENT && slot == VARYING_SLOT_PRIMITIVE_SHADING_RATE) + return "VARYING_SLOT_PRIMITIVE_SHADING_RATE"; + return gl_varying_slot_name(slot); +} + +const char * gl_system_value_name(gl_system_value sysval) { static const char *names[] = { diff --git a/src/compiler/shader_enums.h b/src/compiler/shader_enums.h index 3002025..eb96a91 100644 --- a/src/compiler/shader_enums.h +++ b/src/compiler/shader_enums.h @@ -333,6 +333,9 @@ typedef enum #define MAX_VARYINGS_INCL_PATCH (VARYING_SLOT_TESS_MAX - VARYING_SLOT_VAR0) const char *gl_varying_slot_name(gl_varying_slot slot); +const char *gl_varying_slot_name_for_stage(gl_varying_slot slot, + gl_shader_stage stage); + /** * Bitflags for varying slots.