From d08c84ab0c3ab1f8061e5d9ea1bcff2ed8b6cf57 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Wed, 14 Jul 2021 14:21:24 -0400 Subject: [PATCH] zink: improve detection for broken drawids this is also broken for multidraws where drawid shouldn't be incremented Fixes: 2d32d123e56 ("zink: avoid unnecessarily rewriting gl_DrawID") Reviewed-by: Dave Airlie Part-of: --- src/gallium/drivers/zink/zink_draw.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/gallium/drivers/zink/zink_draw.c b/src/gallium/drivers/zink/zink_draw.c index d8280c6..fc0c300 100644 --- a/src/gallium/drivers/zink/zink_draw.c +++ b/src/gallium/drivers/zink/zink_draw.c @@ -422,7 +422,8 @@ zink_draw_vbo(struct pipe_context *pctx, if (!dindirect || !dindirect->buffer) ctx->drawid_broken = BITSET_TEST(ctx->gfx_stages[PIPE_SHADER_VERTEX]->nir->info.system_values_read, SYSTEM_VALUE_DRAW_ID) && (drawid_offset != 0 || - ((!ctx->tc || !screen->info.have_EXT_multi_draw) && num_draws > 1)); + (!screen->info.have_EXT_multi_draw && num_draws > 1) || + (screen->info.have_EXT_multi_draw && num_draws > 1 && !dinfo->increment_draw_id)); if (drawid_broken != ctx->drawid_broken) ctx->dirty_shader_stages |= BITFIELD_BIT(PIPE_SHADER_VERTEX); ctx->gfx_pipeline_state.vertices_per_patch = dinfo->vertices_per_patch; -- 2.7.4