r600: do SQ flush ES ring rolling workaround
[mesa.git] / src / gallium / drivers / r600 / r600_state_common.c
index 4ea122a1136caa84a3202638dea56ce383d82ffa..82430e549c76597d0bb5b66555ef8e0cf5b41c54 100644 (file)
@@ -1769,6 +1769,12 @@ static void r600_draw_vbo(struct pipe_context *ctx, const struct pipe_draw_info
                                        (info.count_from_stream_output ? S_0287F0_USE_OPAQUE(1) : 0);
        }
 
+       /* ES ring rolling over at EOP - workaround */
+       if (rctx->b.chip_class == R600) {
+               cs->buf[cs->cdw++] = PKT3(PKT3_EVENT_WRITE, 0, 0);
+               cs->buf[cs->cdw++] = EVENT_TYPE(EVENT_TYPE_SQ_NON_EVENT);
+       }
+
        if (rctx->screen->b.trace_bo) {
                r600_trace_emit(rctx);
        }