[Mesa-stable] [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-stable
mailing list