From 6a836eaff5511abc930fc479b2014c003117942c Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Thu, 11 Aug 2022 15:48:11 -0400 Subject: [PATCH] zink: track which stages in gfx programs are using inlined uniforms Reviewed-by: Samuel Pitoiset Part-of: --- src/gallium/drivers/zink/zink_program.c | 6 ++++++ src/gallium/drivers/zink/zink_types.h | 1 + 2 files changed, 7 insertions(+) diff --git a/src/gallium/drivers/zink/zink_program.c b/src/gallium/drivers/zink/zink_program.c index 559be572ce3..611ddd209e2 100644 --- a/src/gallium/drivers/zink/zink_program.c +++ b/src/gallium/drivers/zink/zink_program.c @@ -257,6 +257,12 @@ update_gfx_shader_modules(struct zink_context *ctx, hash_changed = true; default_variants &= zm->default_variant; prog->modules[i] = zm; + if (has_inline) { + if (zm->num_uniforms) + prog->inline_variants |= BITFIELD_BIT(i); + else + prog->inline_variants &= ~BITFIELD_BIT(i); + } variant_hash ^= prog->modules[i]->hash; } diff --git a/src/gallium/drivers/zink/zink_types.h b/src/gallium/drivers/zink/zink_types.h index 738b9f3a353..270ac071770 100644 --- a/src/gallium/drivers/zink/zink_types.h +++ b/src/gallium/drivers/zink/zink_types.h @@ -793,6 +793,7 @@ struct zink_gfx_program { struct hash_table pipelines[2][11]; // [dynamic, renderpass][number of draw modes we support] uint32_t default_variant_hash; uint32_t last_variant_hash; + uint8_t inline_variants; //which stages are using inlined uniforms struct set libs[4]; //zink_gfx_library_key[primtype] -> VkPipeline };