diff options
author | Marek Olšák <[email protected]> | 2019-04-12 11:12:34 -0400 |
---|---|---|
committer | Marek Olšák <[email protected]> | 2019-04-22 16:05:52 -0400 |
commit | b58e5fb6f317be771326f98d498483e45942beaf (patch) | |
tree | c41c6d5a3409a80ac781907546e635401d6557bb /src/gallium/drivers/radeonsi/si_pipe.c | |
parent | f280c36c087bdfc2ad5367fa5da2ae4016d7a4c1 (diff) |
radeonsi: use CP DMA for the null const buffer clear on CIK
This is a workaround for a thread deadlock that I have no idea
why it occurs.
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=108879
Fixes: 9b331e462e5021d994859756d46cd2519d9c9c6e
Acked-by: Samuel Pitoiset <[email protected]>
Diffstat (limited to 'src/gallium/drivers/radeonsi/si_pipe.c')
-rw-r--r-- | src/gallium/drivers/radeonsi/si_pipe.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/gallium/drivers/radeonsi/si_pipe.c b/src/gallium/drivers/radeonsi/si_pipe.c index 5caeb575623..fa96ce34224 100644 --- a/src/gallium/drivers/radeonsi/si_pipe.c +++ b/src/gallium/drivers/radeonsi/si_pipe.c @@ -637,11 +637,14 @@ static struct pipe_context *si_create_context(struct pipe_screen *screen, si_begin_new_gfx_cs(sctx); if (sctx->chip_class == CIK) { - /* Clear the NULL constant buffer, because loads should return zeros. */ + /* Clear the NULL constant buffer, because loads should return zeros. + * Note that this forces CP DMA to be used, because clover deadlocks + * for some reason when the compute codepath is used. + */ uint32_t clear_value = 0; si_clear_buffer(sctx, sctx->null_const_buf.buffer, 0, sctx->null_const_buf.buffer->width0, - &clear_value, 4, SI_COHERENCY_SHADER); + &clear_value, 4, SI_COHERENCY_SHADER, true); } return &sctx->b; fail: |