summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/r600/r600_shader.c
diff options
context:
space:
mode:
authorDave Airlie <[email protected]>2014-01-31 03:35:51 +0000
committerDave Airlie <[email protected]>2014-02-05 10:49:42 +1000
commitce9e939144aa2c711718dce42477858e13f6b264 (patch)
tree15686129a4a789f5165f3e3bdeaaa73001b595ee /src/gallium/drivers/r600/r600_shader.c
parent7ec5e883f20a7ed88c23a98c4be8d4a4ea06e81e (diff)
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 <[email protected]> Reviewed-by: Alex Deucher <[email protected]>
Diffstat (limited to 'src/gallium/drivers/r600/r600_shader.c')
-rw-r--r--src/gallium/drivers/r600/r600_shader.c8
1 files 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;