From: Timur Kristóf Date: Mon, 24 Feb 2020 16:10:13 +0000 (+0100) Subject: aco: Implement load_primitive_id for tessellation shaders. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=6edf6ad130af7cd02bc5beb0f9d68292fee1557d;p=mesa.git aco: Implement load_primitive_id for tessellation shaders. Signed-off-by: Timur Kristóf Reviewed-by: Rhys Perry Part-of: --- diff --git a/src/amd/compiler/aco_instruction_selection.cpp b/src/amd/compiler/aco_instruction_selection.cpp index 6a5fb839e1e..c8b10cf150f 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: {