aco: do not abort if the FS doesn't export anything but has an epilog

The main fragment shader can only export MRTZ (if present) and the
epilog will export colors.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Timur Kristóf <timur.kristof@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17485>
This commit is contained in:
Samuel Pitoiset 2022-06-24 14:39:10 +02:00 committed by Marge Bot
parent a6dff6caa1
commit 2784bfe93f
1 changed files with 7 additions and 1 deletions

View File

@ -808,8 +808,14 @@ fix_exports(asm_context& ctx, std::vector<uint32_t>& out, Program* program)
exported = true;
break;
}
} else if ((*it)->definitions.size() && (*it)->definitions[0].physReg() == exec)
} 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 == HWStage::FS && program->info.ps.has_epilog;
}
++it;
}
}