From bf260384b986949239fbca473cb249fd0387580f 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: (cherry picked from commit d08c84ab0c3ab1f8061e5d9ea1bcff2ed8b6cf57) --- .pick_status.json | 2 +- src/gallium/drivers/zink/zink_draw.c | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index e38fafdd41b..ea99f442156 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -238,7 +238,7 @@ "description": "zink: improve detection for broken drawids", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "2d32d123e5624e631fa1eda02da647d0065b7ae8" }, diff --git a/src/gallium/drivers/zink/zink_draw.c b/src/gallium/drivers/zink/zink_draw.c index d8280c649cd..fc0c300fdec 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;