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