[Mesa-dev] [PATCH] ac/nir: Use instance_rate_inputs per attribute, not per variable.

Samuel Pitoiset samuel.pitoiset at gmail.com
Tue Jan 23 09:33:57 UTC 2018


Reviewed-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>

On 01/22/2018 09:01 AM, Bas Nieuwenhuizen wrote:
> This did the wrong thing if we had e.g. an array for which only some
> of the attributes use the instance index. Tripped up some new CTS
> tests.
> 
> CC: <mesa-stable at lists.freedesktop.org>
> ---
>   src/amd/common/ac_nir_to_llvm.c | 27 +++++++++++++--------------
>   1 file changed, 13 insertions(+), 14 deletions(-)
> 
> diff --git a/src/amd/common/ac_nir_to_llvm.c b/src/amd/common/ac_nir_to_llvm.c
> index 243005a221..7defe0f491 100644
> --- a/src/amd/common/ac_nir_to_llvm.c
> +++ b/src/amd/common/ac_nir_to_llvm.c
> @@ -5321,21 +5321,20 @@ handle_vs_input_decl(struct nir_to_llvm_context *ctx,
>   
>   	variable->data.driver_location = idx * 4;
>   
> -	if (ctx->options->key.vs.instance_rate_inputs & (1u << index)) {
> -		buffer_index = LLVMBuildAdd(ctx->builder, ctx->abi.instance_id,
> -					    ctx->abi.start_instance, "");
> -		if (ctx->options->key.vs.as_ls) {
> -			ctx->shader_info->vs.vgpr_comp_cnt =
> -				MAX2(2, ctx->shader_info->vs.vgpr_comp_cnt);
> -		} else {
> -			ctx->shader_info->vs.vgpr_comp_cnt =
> -				MAX2(1, ctx->shader_info->vs.vgpr_comp_cnt);
> -		}
> -	} else
> -		buffer_index = LLVMBuildAdd(ctx->builder, ctx->abi.vertex_id,
> -					    ctx->abi.base_vertex, "");
> -
>   	for (unsigned i = 0; i < attrib_count; ++i, ++idx) {
> +		if (ctx->options->key.vs.instance_rate_inputs & (1u << (index + i))) {
> +			buffer_index = LLVMBuildAdd(ctx->builder, ctx->abi.instance_id,
> +			                            ctx->abi.start_instance, "");
> +			if (ctx->options->key.vs.as_ls) {
> +				ctx->shader_info->vs.vgpr_comp_cnt =
> +					MAX2(2, ctx->shader_info->vs.vgpr_comp_cnt);
> +			} else {
> +				ctx->shader_info->vs.vgpr_comp_cnt =
> +					MAX2(1, ctx->shader_info->vs.vgpr_comp_cnt);
> +			}
> +		} else
> +			buffer_index = LLVMBuildAdd(ctx->builder, ctx->abi.vertex_id,
> +			                            ctx->abi.base_vertex, "");
>   		t_offset = LLVMConstInt(ctx->ac.i32, index + i, false);
>   
>   		t_list = ac_build_load_to_sgpr(&ctx->ac, t_list_ptr, t_offset);
> 


More information about the mesa-dev mailing list