diff --git a/src/amd/compiler/aco_instruction_selection.cpp b/src/amd/compiler/aco_instruction_selection.cpp index b34e71c836d..95e62eb16b1 100644 --- a/src/amd/compiler/aco_instruction_selection.cpp +++ b/src/amd/compiler/aco_instruction_selection.cpp @@ -5015,12 +5015,15 @@ visit_store_output(isel_context* ctx, nir_intrinsic_instr* instr) unreachable("Shader stage not implemented"); } - /* For NGG VS and TES shaders the primitive ID is exported manually after the other exports so we - * have to emit an exp here manually */ + /* For NGG VS and TES shaders (without GS) the primitive ID is exported + * manually after the other exports so we have to emit an exp here manually + */ if (ctx->stage.hw == HWStage::NGG && (ctx->stage.has(SWStage::VS) || ctx->stage.has(SWStage::TES)) && - nir_intrinsic_io_semantics(instr).location == VARYING_SLOT_PRIMITIVE_ID) + !ctx->stage.has(SWStage::GS) && + nir_intrinsic_io_semantics(instr).location == VARYING_SLOT_PRIMITIVE_ID) { export_vs_varying(ctx, VARYING_SLOT_PRIMITIVE_ID, false, NULL); + } } void