For the series:

Reviewed-by: Marek Olšák <marek.ol...@amd.com>

Marek

On Mon, Jan 8, 2018 at 6:07 AM, Timothy Arceri <tarc...@itsqueeze.com> wrote:
> Fixes the following piglit tests in radeonsi:
>
> vs-tcs-tes-tessinner-tessouter-inputs-quads.shader_test
> vs-tcs-tes-tessinner-tessouter-inputs-tris.shader_test
> vs-tes-tessinner-tessouter-inputs-quads.shader_test
> vs-tes-tessinner-tessouter-inputs-tris.shader_test
>
> v2: make use of si_shader_io_get_unique_index_patch()
>     via the helper in the previous patch rather than
>     shader_io_get_unique_index()
>
> Reviewed-by: Nicolai Hähnle <nicolai.haeh...@amd.com> (v1)
> ---
>  src/amd/common/ac_nir_to_llvm.c          |  6 ++++++
>  src/amd/common/ac_shader_abi.h           |  4 ++++
>  src/gallium/drivers/radeonsi/si_shader.c | 22 ++++++++++++++++++++++
>  3 files changed, 32 insertions(+)
>
> diff --git a/src/amd/common/ac_nir_to_llvm.c b/src/amd/common/ac_nir_to_llvm.c
> index 48e2920a15..5203b78537 100644
> --- a/src/amd/common/ac_nir_to_llvm.c
> +++ b/src/amd/common/ac_nir_to_llvm.c
> @@ -4364,6 +4364,12 @@ static void visit_intrinsic(struct ac_nir_context *ctx,
>                 result = ctx->abi->load_tess_coord(ctx->abi, type, 
> instr->num_components);
>                 break;
>         }
> +       case nir_intrinsic_load_tess_level_outer:
> +               result = ctx->abi->load_tess_level(ctx->abi, 
> VARYING_SLOT_TESS_LEVEL_OUTER);
> +               break;
> +       case nir_intrinsic_load_tess_level_inner:
> +               result = ctx->abi->load_tess_level(ctx->abi, 
> VARYING_SLOT_TESS_LEVEL_INNER);
> +               break;
>         case nir_intrinsic_load_patch_vertices_in:
>                 result = LLVMConstInt(ctx->ac.i32, 
> ctx->nctx->options->key.tcs.input_vertices, false);
>                 break;
> diff --git a/src/amd/common/ac_shader_abi.h b/src/amd/common/ac_shader_abi.h
> index 277e4efe47..e3a47089a5 100644
> --- a/src/amd/common/ac_shader_abi.h
> +++ b/src/amd/common/ac_shader_abi.h
> @@ -103,6 +103,10 @@ struct ac_shader_abi {
>                                         LLVMTypeRef type,
>                                         unsigned num_components);
>
> +       LLVMValueRef (*load_tess_level)(struct ac_shader_abi *abi,
> +                                       unsigned varying_id);
> +
> +
>         LLVMValueRef (*load_ubo)(struct ac_shader_abi *abi, LLVMValueRef 
> index);
>
>         /**
> diff --git a/src/gallium/drivers/radeonsi/si_shader.c 
> b/src/gallium/drivers/radeonsi/si_shader.c
> index e579916359..86f3f7a8ba 100644
> --- a/src/gallium/drivers/radeonsi/si_shader.c
> +++ b/src/gallium/drivers/radeonsi/si_shader.c
> @@ -1934,6 +1934,27 @@ static LLVMValueRef load_tess_level(struct 
> si_shader_context *ctx,
>
>  }
>
> +static LLVMValueRef si_load_tess_level(struct ac_shader_abi *abi,
> +                                      unsigned varying_id)
> +{
> +       struct si_shader_context *ctx = si_shader_context_from_abi(abi);
> +       unsigned semantic_name;
> +
> +       switch (varying_id) {
> +       case VARYING_SLOT_TESS_LEVEL_INNER:
> +               semantic_name = TGSI_SEMANTIC_TESSINNER;
> +               break;
> +       case VARYING_SLOT_TESS_LEVEL_OUTER:
> +               semantic_name = TGSI_SEMANTIC_TESSOUTER;
> +               break;
> +       default:
> +               unreachable("unknown tess level");
> +       }
> +
> +       return load_tess_level(ctx, semantic_name);
> +
> +}
> +
>  void si_load_system_value(struct si_shader_context *ctx,
>                           unsigned index,
>                           const struct tgsi_full_declaration *decl)
> @@ -5971,6 +5992,7 @@ static bool si_compile_tgsi_main(struct 
> si_shader_context *ctx,
>                 bld_base->emit_fetch_funcs[TGSI_FILE_INPUT] = fetch_input_tes;
>                 ctx->abi.load_tess_inputs = si_nir_load_input_tes;
>                 ctx->abi.load_tess_coord = si_load_tess_coord;
> +               ctx->abi.load_tess_level = si_load_tess_level;
>                 if (shader->key.as_es)
>                         ctx->abi.emit_outputs = si_llvm_emit_es_epilogue;
>                 else
> --
> 2.14.3
>
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to