[Mesa-dev] [PATCH 26/30] r600g: fix CAYMAN geometry shader support

Dave Airlie airlied at gmail.com
Tue Feb 4 00:53:43 CET 2014


From: Dave Airlie <airlied at 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 <airlied at 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



More information about the mesa-dev mailing list