Using the input_interp_{mode,loc} arrays which are filled
in ac_shader_info.Signed-off-by: Samuel Pitoiset <[email protected]> --- src/amd/common/ac_nir_to_llvm.c | 23 ++++++++--------------- 1 file changed, 8 insertions(+), 15 deletions(-) diff --git a/src/amd/common/ac_nir_to_llvm.c b/src/amd/common/ac_nir_to_llvm.c index b9c5f9840b..644c85e2eb 100644 --- a/src/amd/common/ac_nir_to_llvm.c +++ b/src/amd/common/ac_nir_to_llvm.c @@ -5530,22 +5530,8 @@ handle_fs_input_decl(struct radv_shader_context *ctx, struct nir_variable *variable) { int idx = variable->data.location; - unsigned attrib_count = glsl_count_attribute_slots(variable->type, false); - LLVMValueRef interp; variable->data.driver_location = idx * 4; - - if (glsl_get_base_type(glsl_without_array(variable->type)) == GLSL_TYPE_FLOAT) { - unsigned interp_type = - ctx->shader_info->info.ps.input_interp_loc[idx]; - - interp = lookup_interp_param(&ctx->abi, variable->data.interpolation, interp_type); - } else - interp = NULL; - - for (unsigned i = 0; i < attrib_count; ++i) - ctx->inputs[radeon_llvm_reg_index_soa(idx + i, 0)] = interp; - } static void @@ -5574,6 +5560,8 @@ static void handle_fs_inputs(struct radv_shader_context *ctx, struct nir_shader *nir) { + struct ac_shader_info *info = &ctx->shader_info->info; + prepare_interp_optimize(ctx, nir); nir_foreach_variable(variable, &nir->inputs) @@ -5590,7 +5578,12 @@ handle_fs_inputs(struct radv_shader_context *ctx, if (i >= VARYING_SLOT_VAR0 || i == VARYING_SLOT_PNTC || i == VARYING_SLOT_PRIMITIVE_ID || i == VARYING_SLOT_LAYER) { - interp_param = *inputs; + unsigned interp_mode = info->ps.input_interp_mode[i]; + unsigned interp_loc = info->ps.input_interp_loc[i]; + + interp_param = lookup_interp_param(&ctx->abi, interp_mode, + interp_loc); + interp_fs_input(ctx, index, interp_param, ctx->abi.prim_mask, inputs); -- 2.16.2 _______________________________________________ mesa-dev mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-dev
