From 1ffe73c71a89bf72096bc469df67002221776ae5 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Tue, 11 May 2021 19:29:36 -0400 Subject: [PATCH] zink: split draw_count checking to local variable Reviewed-by: Dave Airlie Part-of: --- src/gallium/drivers/zink/zink_draw.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/gallium/drivers/zink/zink_draw.cpp b/src/gallium/drivers/zink/zink_draw.cpp index 3fc58ab9701..951369bf801 100644 --- a/src/gallium/drivers/zink/zink_draw.cpp +++ b/src/gallium/drivers/zink/zink_draw.cpp @@ -420,6 +420,7 @@ zink_draw_vbo(struct pipe_context *pctx, bool mode_changed = ctx->gfx_pipeline_state.mode != dinfo->mode; bool reads_drawid = ctx->shader_reads_drawid; bool reads_basevertex = ctx->shader_reads_basevertex; + unsigned draw_count = ctx->batch.state->draw_count; update_barriers(ctx, false); @@ -688,7 +689,7 @@ zink_draw_vbo(struct pipe_context *pctx, } bool needs_drawid = reads_drawid && ctx->drawid_broken; - batch->state->draw_count += num_draws; + draw_count += num_draws; if (index_size > 0) { if (dindirect && dindirect->buffer) { assert(num_draws == 1); @@ -750,9 +751,10 @@ zink_draw_vbo(struct pipe_context *pctx, screen->vk.CmdEndTransformFeedbackEXT(batch->state->cmdbuf, 0, ctx->num_so_targets, counter_buffers, counter_buffer_offsets); } batch->has_work = true; + ctx->batch.state->draw_count = draw_count; /* flush if there's >100k draws */ - if (unlikely(ctx->batch.state->resource_size >= zink_screen(ctx->base.screen)->total_video_mem / 2 || - ctx->batch.state->draw_count >= 100000)) + if (unlikely(ctx->batch.state->resource_size >= screen->total_video_mem / 2 || + draw_count >= 100000)) pctx->flush(pctx, NULL, PIPE_FLUSH_ASYNC); }