summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDave Airlie <[email protected]>2017-11-23 14:05:05 +1000
committerDave Airlie <[email protected]>2017-12-05 20:09:33 +0000
commit3a403a9797958ac3178d0a8ab4eef829058a0e1b (patch)
treebd22cac74f44a1e189a5c3e81cf1808a6806b05e
parent2fdc21bcabeedf6e6894b73f0996f8626c79ec05 (diff)
r600: don't set EOP on pop or loop end
This appears to bad, compute shaders hang without it. Signed-off-by: Dave Airlie <[email protected]>
-rw-r--r--src/gallium/drivers/r600/r600_shader.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/gallium/drivers/r600/r600_shader.c b/src/gallium/drivers/r600/r600_shader.c
index 7768f503c0c..7d1e444f4ff 100644
--- a/src/gallium/drivers/r600/r600_shader.c
+++ b/src/gallium/drivers/r600/r600_shader.c
@@ -3839,7 +3839,7 @@ static int r600_shader_from_tgsi(struct r600_context *rctx,
last = r600_isa_cf(ctx.bc->cf_last->op);
/* alu clause instructions don't have EOP bit, so add NOP */
- if (!last || last->flags & CF_ALU)
+ if (!last || last->flags & CF_ALU || ctx.bc->cf_last->op == CF_OP_LOOP_END || ctx.bc->cf_last->op == CF_OP_POP)
r600_bytecode_add_cfinst(ctx.bc, CF_OP_NOP);
ctx.bc->cf_last->end_of_program = 1;