diff --git a/src/compiler/nir/nir_print.c b/src/compiler/nir/nir_print.c index dc8b67c7d37..b3edd8ccf89 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 543678fcea4..d6fe197fa0f 100644 --- a/src/compiler/shader_enums.c +++ b/src/compiler/shader_enums.c @@ -227,6 +227,14 @@ gl_varying_slot_name(gl_varying_slot slot) return NAME(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) { diff --git a/src/compiler/shader_enums.h b/src/compiler/shader_enums.h index 30020256c5e..eb96a917248 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.