From 6edf6ad130af7cd02bc5beb0f9d68292fee1557d Mon Sep 17 00:00:00 2001 From: =?utf8?q?Timur=20Krist=C3=B3f?= Date: Mon, 24 Feb 2020 17:10:13 +0100 Subject: [PATCH] aco: Implement load_primitive_id for tessellation shaders. MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Timur Kristóf Reviewed-by: Rhys Perry Part-of: --- src/amd/compiler/aco_instruction_selection.cpp | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/amd/compiler/aco_instruction_selection.cpp b/src/amd/compiler/aco_instruction_selection.cpp index 6a5fb83..c8b10cf 100644 --- a/src/amd/compiler/aco_instruction_selection.cpp +++ b/src/amd/compiler/aco_instruction_selection.cpp @@ -6857,9 +6857,22 @@ void visit_intrinsic(isel_context *ctx, nir_intrinsic_instr *instr) break; } case nir_intrinsic_load_primitive_id: { - assert(ctx->shader->info.stage == MESA_SHADER_GEOMETRY); Temp dst = get_ssa_temp(ctx, &instr->dest.ssa); - bld.copy(Definition(dst), get_arg(ctx, ctx->args->ac.gs_prim_id)); + + switch (ctx->shader->info.stage) { + case MESA_SHADER_GEOMETRY: + bld.copy(Definition(dst), get_arg(ctx, ctx->args->ac.gs_prim_id)); + break; + case MESA_SHADER_TESS_CTRL: + bld.copy(Definition(dst), get_arg(ctx, ctx->args->ac.tcs_patch_id)); + break; + case MESA_SHADER_TESS_EVAL: + bld.copy(Definition(dst), get_arg(ctx, ctx->args->ac.tes_patch_id)); + break; + default: + unreachable("Unimplemented shader stage for nir_intrinsic_load_primitive_id"); + } + break; } case nir_intrinsic_emit_vertex_with_counter: { -- 2.7.4