Mesa (master): r600: don't set EOP on pop or loop end

Dave Airlie airlied at kemper.freedesktop.org
Tue Dec 5 20:10:28 UTC 2017


Module: Mesa
Branch: master
Commit: 3a403a9797958ac3178d0a8ab4eef829058a0e1b
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=3a403a9797958ac3178d0a8ab4eef829058a0e1b

Author: Dave Airlie <airlied at redhat.com>
Date:   Thu Nov 23 14:05:05 2017 +1000

r600: don't set EOP on pop or loop end

This appears to bad, compute shaders hang without it.

Signed-off-by: Dave Airlie <airlied at redhat.com>

---

 src/gallium/drivers/r600/r600_shader.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/gallium/drivers/r600/r600_shader.c b/src/gallium/drivers/r600/r600_shader.c
index 7768f503c0..7d1e444f4f 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;




More information about the mesa-commit mailing list