diff options
author | Dave Airlie <[email protected]> | 2017-11-24 10:51:35 +1000 |
---|---|---|
committer | Dave Airlie <[email protected]> | 2017-12-18 04:30:03 +0000 |
commit | 4388bbbf2990df86a447a55de450d262c777be45 (patch) | |
tree | 3b7240c99eb3974f09e8c335d482c7f3e133b24f /src/gallium/drivers/r600/r600_state_common.c | |
parent | af9e34b8d71c361dd51a8c74f26630a61e3a8ceb (diff) |
r600: always flush between gfx and compute
This is in no way optimal, but there seems to be some problems
mixing at the moment, lots of hangs, it is possible, just need
to figure out more magic.
Signed-off-by: Dave Airlie <[email protected]>
Diffstat (limited to 'src/gallium/drivers/r600/r600_state_common.c')
-rw-r--r-- | src/gallium/drivers/r600/r600_state_common.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/gallium/drivers/r600/r600_state_common.c b/src/gallium/drivers/r600/r600_state_common.c index edb2597ef4e..e5a5a333679 100644 --- a/src/gallium/drivers/r600/r600_state_common.c +++ b/src/gallium/drivers/r600/r600_state_common.c @@ -1910,6 +1910,11 @@ static void r600_draw_vbo(struct pipe_context *ctx, const struct pipe_draw_info rctx->b.dma.flush(rctx, PIPE_FLUSH_ASYNC, NULL); } + if (rctx->cmd_buf_is_compute) { + rctx->b.gfx.flush(rctx, PIPE_FLUSH_ASYNC, NULL); + rctx->cmd_buf_is_compute = false; + } + /* Re-emit the framebuffer state if needed. */ dirty_tex_counter = p_atomic_read(&rctx->b.screen->dirty_tex_counter); if (unlikely(dirty_tex_counter != rctx->b.last_dirty_tex_counter)) { |