r600g: setup streamout before calling last r600_need_cs_space before drawing

This fixes CS checker errors due to registers not being initialized, because
the flush occured after dirty state was emitted but before drawing.
This commit is contained in:
Marek Olšák
2012-07-18 18:33:37 +02:00
parent a40c1f9522
commit c3c83af380
+6 -6
View File
@@ -1069,6 +1069,12 @@ void r600_draw_vbo(struct pipe_context *ctx, const struct pipe_draw_info *dinfo)
r600_context_pipe_state_set(rctx, &rctx->vgt);
/* Enable stream out if needed. */
if (rctx->streamout_start) {
r600_context_streamout_begin(rctx);
rctx->streamout_start = FALSE;
}
/* Emit states (the function expects that we emit at most 17 dwords here). */
r600_need_cs_space(rctx, 0, TRUE);
@@ -1080,12 +1086,6 @@ void r600_draw_vbo(struct pipe_context *ctx, const struct pipe_draw_info *dinfo)
}
rctx->pm4_dirty_cdwords = 0;
/* Enable stream out if needed. */
if (rctx->streamout_start) {
r600_context_streamout_begin(rctx);
rctx->streamout_start = FALSE;
}
/* draw packet */
cs->buf[cs->cdw++] = PKT3(PKT3_NUM_INSTANCES, 0, rctx->predicate_drawing);
cs->buf[cs->cdw++] = info.instance_count;