From: Dave Airlie <airl...@redhat.com>

cayman has a different end of program bit, so do that properly.

fixes hangs with geom shader tests on cayman.

Signed-off-by: Dave Airlie <airl...@redhat.com>
---
 src/gallium/drivers/r600/r600_shader.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/src/gallium/drivers/r600/r600_shader.c 
b/src/gallium/drivers/r600/r600_shader.c
index 3535a13..8fa7054 100644
--- a/src/gallium/drivers/r600/r600_shader.c
+++ b/src/gallium/drivers/r600/r600_shader.c
@@ -1357,8 +1357,12 @@ static int generate_gs_copy_shader(struct r600_context 
*rctx,
        cf_pop->cf_addr = cf_pop->id + 2;
        cf_pop->pop_count = 1;
 
-       r600_bytecode_add_cfinst(ctx.bc, CF_OP_NOP);
-       ctx.bc->cf_last->end_of_program = 1;
+       if (ctx.bc->chip_class == CAYMAN)
+               cm_bytecode_add_cf_end(ctx.bc);
+       else {
+               r600_bytecode_add_cfinst(ctx.bc, CF_OP_NOP);
+               ctx.bc->cf_last->end_of_program = 1;
+       }
 
        gs->gs_copy_shader = cshader;
 
-- 
1.8.3.1

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to