+ DBG("%x num_draws=%u (%s/%s)", buffers, ctx->num_draws,
+ util_format_short_name(pipe_surface_format(pfb->cbufs[0])),
+ util_format_short_name(pipe_surface_format(pfb->zsbuf)));
+
+ fd_hw_query_set_stage(ctx, ctx->ring, FD_STAGE_DRAW);
+ ctx->draw_vbo(ctx, info);
+
+ for (i = 0; i < ctx->streamout.num_targets; i++)
+ ctx->streamout.offsets[i] += info->count;
+
+ if (fd_mesa_debug & FD_DBG_DDRAW)
+ ctx->dirty = 0xffffffff;
+
+ /* if an app (or, well, piglit test) does many thousands of draws
+ * without flush (or anything which implicitly flushes, like
+ * changing render targets), we can exceed the ringbuffer size.
+ * Since we don't currently have a sane way to wrapparound, and
+ * we use the same buffer for both draw and tiling commands, for
+ * now we need to do this hack and trigger flush if we are running
+ * low on remaining space for cmds:
+ */
+ if (((ctx->ring->cur - ctx->ring->start) >
+ (ctx->ring->size/4 - FD_TILING_COMMANDS_DWORDS)) ||
+ (fd_mesa_debug & FD_DBG_FLUSH))
+ fd_context_render(pctx);