diff --git a/src/amd/common/ac_nir_to_llvm.c b/src/amd/common/ac_nir_to_llvm.c index 236320bd785..b33e0a984f6 100644 --- a/src/amd/common/ac_nir_to_llvm.c +++ b/src/amd/common/ac_nir_to_llvm.c @@ -5499,10 +5499,9 @@ handle_fs_input_decl(struct nir_to_llvm_context *ctx, if (glsl_get_base_type(glsl_without_array(variable->type)) == GLSL_TYPE_FLOAT) { unsigned interp_type; - if (variable->data.sample) { + if (variable->data.sample) interp_type = INTERP_SAMPLE; - ctx->shader_info->info.ps.force_persample = true; - } else if (variable->data.centroid) + else if (variable->data.centroid) interp_type = INTERP_CENTROID; else interp_type = INTERP_CENTER; diff --git a/src/amd/common/ac_shader_info.c b/src/amd/common/ac_shader_info.c index b211da60b32..3b0887995d3 100644 --- a/src/amd/common/ac_shader_info.c +++ b/src/amd/common/ac_shader_info.c @@ -179,6 +179,18 @@ gather_info_block(const nir_shader *nir, const nir_block *block, } } +static void +gather_info_input_decl_ps(const nir_shader *nir, const nir_variable *var, + struct ac_shader_info *info) +{ + const struct glsl_type *type = glsl_without_array(var->type); + + if (glsl_get_base_type(type) == GLSL_TYPE_FLOAT) { + if (var->data.sample) + info->ps.force_persample = true; + } +} + static void gather_info_input_decl(const nir_shader *nir, const nir_variable *var, struct ac_shader_info *info) @@ -187,6 +199,9 @@ gather_info_input_decl(const nir_shader *nir, const nir_variable *var, case MESA_SHADER_VERTEX: info->vs.has_vertex_buffers = true; break; + case MESA_SHADER_FRAGMENT: + gather_info_input_decl_ps(nir, var, info); + break; default: break; }