From f8a88724adb03116a4c9d410b2606e00ad7a39da Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Wed, 3 Sep 2025 13:26:23 -0400 Subject: [PATCH] zink: fix edgeflags check on program creation can't check the shaders before the shaders are set Fixes: a93685ef557 ("zink: add `has_edgeflags` flag to zink_shader and zink_gfx_program") Part-of: (cherry picked from commit 683e3ea0af5dd0eddc767fba6e90e583137e53b7) --- .pick_status.json | 2 +- src/gallium/drivers/zink/zink_program.c | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index bbff428ce6d..ff878d6c0de 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -7404,7 +7404,7 @@ "description": "zink: fix edgeflags check on program creation", "nominated": true, "nomination_type": 2, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "a93685ef5577219a08c28470b25b622eef63d4ed", "notes": null diff --git a/src/gallium/drivers/zink/zink_program.c b/src/gallium/drivers/zink/zink_program.c index f78e0bd9b2c..afa5d14b740 100644 --- a/src/gallium/drivers/zink/zink_program.c +++ b/src/gallium/drivers/zink/zink_program.c @@ -1106,8 +1106,6 @@ gfx_program_create(struct zink_context *ctx, prog->base.removed = true; prog->optimal_keys = screen->optimal_keys; - prog->has_edgeflags = prog->shaders[MESA_SHADER_VERTEX] && - prog->shaders[MESA_SHADER_VERTEX]->has_edgeflags; for (int i = 0; i < ZINK_GFX_SHADER_COUNT; ++i) { util_dynarray_init(&prog->shader_cache[i][0][0], prog->base.ralloc_ctx); util_dynarray_init(&prog->shader_cache[i][0][1], prog->base.ralloc_ctx); @@ -1145,6 +1143,8 @@ gfx_program_create(struct zink_context *ctx, prog->last_vertex_stage = stages[MESA_SHADER_TESS_EVAL]; else prog->last_vertex_stage = stages[MESA_SHADER_VERTEX]; + prog->has_edgeflags = prog->shaders[MESA_SHADER_VERTEX] && + prog->shaders[MESA_SHADER_VERTEX]->has_edgeflags; for (int i = 0; i < ARRAY_SIZE(prog->pipelines); ++i) { _mesa_hash_table_init(&prog->pipelines[i], prog->base.ralloc_ctx, NULL, zink_get_gfx_pipeline_eq_func(screen, prog));