vc4: Sanity check that flushes don't happen between state emit and draw.

Catches the cause of failure in
arb_vertex_buffer_object-mixed-immediate-and-vbo, I've had this class of
failure before, and it probably won't be the last time.
This commit is contained in:
Eric Anholt 2016-04-15 13:43:14 -07:00
parent 56b14adf85
commit 9e8a8b0c8b

View file

@ -296,6 +296,7 @@ vc4_draw_vbo(struct pipe_context *pctx, const struct pipe_draw_info *info)
vc4_start_draw(vc4, info->count);
vc4_update_compiled_shaders(vc4, info->mode);
uint32_t start_draw_calls_queued = vc4->draw_calls_queued;
vc4_emit_state(pctx);
if ((vc4->dirty & (VC4_DIRTY_VTXBUF |
@ -425,6 +426,12 @@ vc4_draw_vbo(struct pipe_context *pctx, const struct pipe_draw_info *info)
}
cl_end(&vc4->bcl, bcl);
/* No flushes of the job should have happened between when we started
* emitting state for our draw and when we just emitted our draw's
* primitives.
*/
assert(start_draw_calls_queued == vc4->draw_calls_queued);
if (vc4->zsa && vc4->zsa->base.depth.enabled) {
vc4->resolve |= PIPE_CLEAR_DEPTH;
}