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/evergreen_compute.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/evergreen_compute.c')
-rw-r--r-- | src/gallium/drivers/r600/evergreen_compute.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/gallium/drivers/r600/evergreen_compute.c b/src/gallium/drivers/r600/evergreen_compute.c index 06f8bc16ced..45fba007787 100644 --- a/src/gallium/drivers/r600/evergreen_compute.c +++ b/src/gallium/drivers/r600/evergreen_compute.c @@ -699,6 +699,11 @@ static void compute_emit_cs(struct r600_context *rctx, r600_update_compressed_resource_state(rctx, true); + if (!rctx->cmd_buf_is_compute) { + rctx->b.gfx.flush(rctx, PIPE_FLUSH_ASYNC, NULL); + rctx->cmd_buf_is_compute = true; + } + r600_need_cs_space(rctx, 0, true); if (rctx->cs_shader_state.shader->ir_type == PIPE_SHADER_IR_TGSI) { r600_shader_select(&rctx->b.b, rctx->cs_shader_state.shader->sel, &compute_dirty); |