diff options
author | Marek Olšák <[email protected]> | 2019-05-28 19:52:53 -0400 |
---|---|---|
committer | Marek Olšák <[email protected]> | 2019-07-03 15:51:13 -0400 |
commit | 1e39c21c2362dbeadf4e4e5f147bed3e7bf26ea5 (patch) | |
tree | 61fabe2a3c884eec2ff960cfbc251101f168f0c9 /src/gallium/drivers/radeonsi/si_shader.c | |
parent | 683cf11b81dc775016ef96748809de473c350442 (diff) |
radeonsi/gfx10: fix a possible hang with exp pos0 with done=0 and exec=0
Acked-by: Bas Nieuwenhuizen <[email protected]>
Diffstat (limited to 'src/gallium/drivers/radeonsi/si_shader.c')
-rw-r--r-- | src/gallium/drivers/radeonsi/si_shader.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/gallium/drivers/radeonsi/si_shader.c b/src/gallium/drivers/radeonsi/si_shader.c index 2d022438841..7bc22fcfa4f 100644 --- a/src/gallium/drivers/radeonsi/si_shader.c +++ b/src/gallium/drivers/radeonsi/si_shader.c @@ -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]) |