summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/r600/evergreen_compute.c
diff options
context:
space:
mode:
authorDave Airlie <[email protected]>2017-11-24 10:51:35 +1000
committerDave Airlie <[email protected]>2017-12-18 04:30:03 +0000
commit4388bbbf2990df86a447a55de450d262c777be45 (patch)
tree3b7240c99eb3974f09e8c335d482c7f3e133b24f /src/gallium/drivers/r600/evergreen_compute.c
parentaf9e34b8d71c361dd51a8c74f26630a61e3a8ceb (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.c5
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);