From 234f9953a22b75cb4ad4983822e648baf7512b08 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Thu, 6 Apr 2023 15:00:46 -0400 Subject: [PATCH] zink: fix longstanding TODO for generated tcs with dynamic pcp this doesn't matter, and this should only be reached in async mode if dynamic pcp is available Part-of: --- src/gallium/drivers/zink/zink_program.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/gallium/drivers/zink/zink_program.c b/src/gallium/drivers/zink/zink_program.c index 68a1160..4590759 100644 --- a/src/gallium/drivers/zink/zink_program.c +++ b/src/gallium/drivers/zink/zink_program.c @@ -264,9 +264,13 @@ create_shader_module_for_stage_optimal(struct zink_context *ctx, struct zink_scr return NULL; } if (stage == MESA_SHADER_TESS_CTRL && zs->non_fs.is_generated && zs->spirv) { - assert(ctx); //TODO async - struct zink_tcs_key *tcs = (struct zink_tcs_key*)key; - struct zink_shader_object obj = zink_shader_tcs_compile(screen, zs, tcs->patch_vertices); + assert(ctx || screen->info.dynamic_state2_feats.extendedDynamicState2PatchControlPoints); + unsigned patch_vertices = 3; + if (ctx) { + struct zink_tcs_key *tcs = (struct zink_tcs_key*)key; + patch_vertices = tcs->patch_vertices; + } + struct zink_shader_object obj = zink_shader_tcs_compile(screen, zs, patch_vertices); mod = obj.mod; } else { mod = zink_shader_compile(screen, zs, zink_shader_blob_deserialize(screen, &prog->blobs[stage]), (struct zink_shader_key*)key, shadow_needs_shader_swizzle ? &ctx->di.zs_swizzle[stage] : NULL); -- 2.7.4