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:
}
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[] = {
#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.