From ce9e939144aa2c711718dce42477858e13f6b264 Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Fri, 31 Jan 2014 03:35:51 +0000 Subject: [PATCH] r600g: fix CAYMAN geometry shader support 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 Reviewed-by: Alex Deucher --- 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 3535a134715..8fa70542ea1 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; -- 2.30.2