From d8455e5ebfa36767f0d7b63ba6b907c135711a7f Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Mon, 8 Aug 2022 11:43:15 -0400 Subject: [PATCH] zink: change u_foreach_bit to regular for loop in zink_gfx_program_update too hot to be using this Reviewed-by: Samuel Pitoiset Part-of: --- src/gallium/drivers/zink/zink_program.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/gallium/drivers/zink/zink_program.c b/src/gallium/drivers/zink/zink_program.c index 64191deb8fd..89fa53de204 100644 --- a/src/gallium/drivers/zink/zink_program.c +++ b/src/gallium/drivers/zink/zink_program.c @@ -408,8 +408,10 @@ zink_gfx_program_update(struct zink_context *ctx) struct hash_entry *entry = _mesa_hash_table_search_pre_hashed(ht, hash, ctx->gfx_stages); if (entry) { prog = (struct zink_gfx_program*)entry->data; - u_foreach_bit(stage, prog->stages_present & ~ctx->dirty_shader_stages) - ctx->gfx_pipeline_state.modules[stage] = prog->modules[stage]->shader; + for (unsigned i = 0; i < ZINK_GFX_SHADER_COUNT; i++) { + if (prog->stages_present & ctx->dirty_shader_stages & BITFIELD_BIT(i)) + ctx->gfx_pipeline_state.modules[i] = prog->modules[i]->shader; + } /* ensure variants are always updated if keys have changed since last use */ ctx->dirty_shader_stages |= prog->stages_present; update_gfx_program(ctx, prog);