radeonsi/gfx10: fix a possible hang with exp pos0 with done=0 and exec=0

Acked-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
This commit is contained in:
Marek Olšák 2019-05-28 19:52:53 -04:00
parent 683cf11b81
commit 1e39c21c23

View file

@ -3021,6 +3021,14 @@ void si_llvm_export_vs(struct si_shader_context *ctx,
if (pos_args[i].out[0])
shader->info.nr_pos_exports++;
/* Navi10-14 skip POS0 exports if EXEC=0 and DONE=0, causing a hang.
* Setting valid_mask=1 prevents it and has no other effect.
*/
if (ctx->screen->info.family == CHIP_NAVI10 ||
ctx->screen->info.family == CHIP_NAVI12 ||
ctx->screen->info.family == CHIP_NAVI14)
pos_args[0].valid_mask = 1;
pos_idx = 0;
for (i = 0; i < 4; i++) {
if (!pos_args[i].out[0])