break;
}
} else {
- if (!program->info.has_epilog) {
- exp.done = true;
- exp.valid_mask = true;
- }
+ exp.done = true;
+ exp.valid_mask = true;
exported = true;
break;
}
} else if ((*it)->definitions.size() && (*it)->definitions[0].physReg() == exec) {
break;
} else if ((*it)->opcode == aco_opcode::s_setpc_b64) {
- /* Do not abort if the main FS has an epilog because it only
- * exports MRTZ (if present) and the epilog exports colors.
- */
- exported |= program->stage.hw == AC_HW_PIXEL_SHADER && program->info.has_epilog;
-
/* Do not abort for VS/TES as NGG if they are non-monolithic shaders
* because a jump would be emitted.
*/
asm_context ctx(program, symbols);
/* Prolog has no exports. */
- if (!program->is_prolog &&
+ if (!program->is_prolog && !program->info.has_epilog &&
(program->stage.hw == AC_HW_VERTEX_SHADER || program->stage.hw == AC_HW_PIXEL_SHADER ||
program->stage.hw == AC_HW_NEXT_GEN_GEOMETRY_SHADER))
fix_exports(ctx, code, program);
/* FS epilogs always have at least one color/null export. */
ctx.program->has_color_exports = true;
- ctx.block->kind |= block_kind_export_end;
} else if (nir->info.stage == MESA_SHADER_TESS_CTRL) {
assert(ctx.stage == tess_control_hs || ctx.stage == vertex_tess_control_hs);
if (ctx.options->is_opengl)