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 };