diff options
Diffstat (limited to 'src/gallium/drivers/r600/r600_shader.c')
-rw-r--r-- | src/gallium/drivers/r600/r600_shader.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/gallium/drivers/r600/r600_shader.c b/src/gallium/drivers/r600/r600_shader.c index fd3cb3edd21..d0665b1c2aa 100644 --- a/src/gallium/drivers/r600/r600_shader.c +++ b/src/gallium/drivers/r600/r600_shader.c @@ -2113,7 +2113,7 @@ static int generate_gs_copy_shader(struct r600_context *rctx, *last_exp_pos = NULL, *last_exp_param = NULL; int i, j, next_clip_pos = 61, next_param = 0; int ring; - + bool only_ring_0 = true; cshader = calloc(1, sizeof(struct r600_pipe_shader)); if (!cshader) return 0; @@ -2186,6 +2186,8 @@ static int generate_gs_copy_shader(struct r600_context *rctx, for (i = 0; i < so->num_outputs; i++) { if (so->output[i].stream == ring) { enabled = true; + if (ring > 0) + only_ring_0 = false; break; } } @@ -2220,7 +2222,7 @@ static int generate_gs_copy_shader(struct r600_context *rctx, cf_jump = ctx.bc->cf_last; if (enabled) - emit_streamout(&ctx, so, ring, &cshader->shader.ring_item_sizes[ring]); + emit_streamout(&ctx, so, only_ring_0 ? -1 : ring, &cshader->shader.ring_item_sizes[ring]); cshader->shader.ring_item_sizes[ring] = ocnt * 16; } |