anv: use shader source hash rather than cmd_buffer fields

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41748>
This commit is contained in:
Lionel Landwerlin 2026-03-26 12:03:55 +02:00 committed by Marge Bot
parent 88418718a9
commit c09f00d339
3 changed files with 19 additions and 31 deletions

View file

@ -1717,7 +1717,6 @@ bind_graphics_shaders(struct anv_cmd_buffer *cmd_buffer,
diff_fix_state(VF_SGVS_2, vs.vf_sgvs_2);
diff_fix_state(VF_COMPONENT_PACKING, vs.vf_component_packing);
diff_var_state(VF_SGVS_INSTANCING, vs.vf_sgvs_instancing);
gfx->vs_source_hash = shader->prog_data->source_hash;
} else {
BITSET_SET(hw_state->pack_dirty, ANV_GFX_STATE_VS);
}
@ -1773,7 +1772,6 @@ bind_graphics_shaders(struct anv_cmd_buffer *cmd_buffer,
diff_fix_state(WM, ps.wm);
diff_fix_state(PS, ps.ps);
diff_fix_state(PS_EXTRA, ps.ps_extra);
gfx->fs_source_hash = shader->prog_data->source_hash;
} else {
BITSET_SET(hw_state->pack_dirty, ANV_GFX_STATE_PS_EXTRA);
}

View file

@ -4454,9 +4454,6 @@ struct anv_cmd_graphics_state {
/* Bitfield of valid entries in the shaders array */
VkShaderStageFlags active_stages;
uint32_t vs_source_hash;
uint32_t fs_source_hash;
/* Pipeline information */
uint32_t instance_multiplier;

View file

@ -1102,6 +1102,12 @@ anv_use_generated_draws(const struct anv_cmd_buffer *cmd_buffer, uint32_t count)
return count >= instance->drirc.perf.generated_indirect_threshold;
}
#define gfx_source_hashes(gfx) \
(gfx->shaders[MESA_SHADER_VERTEX] != NULL ? \
gfx->shaders[MESA_SHADER_VERTEX]->prog_data->source_hash : 0ull), \
(gfx->shaders[MESA_SHADER_FRAGMENT] != NULL ? \
gfx->shaders[MESA_SHADER_FRAGMENT]->prog_data->source_hash : 0ull)
#include "genX_cmd_draw_helpers.h"
#include "genX_cmd_draw_generated_indirect.h"
@ -1305,8 +1311,7 @@ void genX(CmdDraw)(
cmd_buffer_post_draw_wa(cmd_buffer, vertexCount, SEQUENTIAL);
trace_intel_end_draw(&cmd_buffer->trace, count,
gfx->vs_source_hash,
gfx->fs_source_hash);
gfx_source_hashes(gfx));
}
void genX(CmdDrawMultiEXT)(
@ -1360,8 +1365,7 @@ void genX(CmdDrawMultiEXT)(
SEQUENTIAL);
trace_intel_end_draw_multi(&cmd_buffer->trace, count,
gfx->vs_source_hash,
gfx->fs_source_hash);
gfx_source_hashes(gfx));
}
#else
vk_foreach_multi_draw(draw, i, pVertexInfo, drawCount, stride) {
@ -1395,8 +1399,7 @@ void genX(CmdDrawMultiEXT)(
SEQUENTIAL);
trace_intel_end_draw_multi(&cmd_buffer->trace, count,
gfx->vs_source_hash,
gfx->fs_source_hash);
gfx_source_hashes(gfx));
}
#endif
}
@ -1465,8 +1468,7 @@ void genX(CmdDrawIndexed)(
cmd_buffer_post_draw_wa(cmd_buffer, indexCount, RANDOM);
trace_intel_end_draw_indexed(&cmd_buffer->trace, count,
gfx->vs_source_hash,
gfx->fs_source_hash);
gfx_source_hashes(gfx));
}
void genX(CmdDrawMultiIndexedEXT)(
@ -1536,8 +1538,7 @@ void genX(CmdDrawMultiIndexedEXT)(
RANDOM);
trace_intel_end_draw_indexed_multi(&cmd_buffer->trace, count,
gfx->vs_source_hash,
gfx->fs_source_hash);
gfx_source_hashes(gfx));
emitted = false;
}
} else {
@ -1575,8 +1576,7 @@ void genX(CmdDrawMultiIndexedEXT)(
RANDOM);
trace_intel_end_draw_indexed_multi(&cmd_buffer->trace, count,
gfx->vs_source_hash,
gfx->fs_source_hash);
gfx_source_hashes(gfx));
}
}
} else {
@ -1610,8 +1610,7 @@ void genX(CmdDrawMultiIndexedEXT)(
RANDOM);
trace_intel_end_draw_indexed_multi(&cmd_buffer->trace, count,
gfx->vs_source_hash,
gfx->fs_source_hash);
gfx_source_hashes(gfx));
}
}
#else
@ -1648,8 +1647,7 @@ void genX(CmdDrawMultiIndexedEXT)(
RANDOM);
trace_intel_end_draw_indexed_multi(&cmd_buffer->trace, count,
gfx->vs_source_hash,
gfx->fs_source_hash);
gfx_source_hashes(gfx));
}
#endif
}
@ -1768,8 +1766,7 @@ void genX(CmdDrawIndirectByteCount2EXT)(
trace_intel_end_draw_indirect_byte_count(&cmd_buffer->trace,
instanceCount * gfx->instance_multiplier,
gfx->vs_source_hash,
gfx->fs_source_hash);
gfx_source_hashes(gfx));
}
static void
@ -2091,8 +2088,7 @@ void genX(CmdDrawIndirect2KHR)(
}
trace_intel_end_draw_indirect(&cmd_buffer->trace, pInfo->drawCount,
gfx->vs_source_hash,
gfx->fs_source_hash);
gfx_source_hashes(gfx));
}
void genX(CmdDrawIndexedIndirect2KHR)(
@ -2132,8 +2128,7 @@ void genX(CmdDrawIndexedIndirect2KHR)(
}
trace_intel_end_draw_indexed_indirect(&cmd_buffer->trace, pInfo->drawCount,
gfx->vs_source_hash,
gfx->fs_source_hash);
gfx_source_hashes(gfx));
}
#define MI_PREDICATE_SRC0 0x2400
@ -2323,8 +2318,7 @@ void genX(CmdDrawIndirectCount2KHR)(
trace_intel_end_draw_indirect_count(&cmd_buffer->trace,
anv_address_utrace(count_address),
gfx->vs_source_hash,
gfx->fs_source_hash);
gfx_source_hashes(gfx));
}
void genX(CmdDrawIndexedIndirectCount2KHR)(
@ -2368,8 +2362,7 @@ void genX(CmdDrawIndexedIndirectCount2KHR)(
trace_intel_end_draw_indexed_indirect_count(&cmd_buffer->trace,
anv_address_utrace(count_address),
gfx->vs_source_hash,
gfx->fs_source_hash);
gfx_source_hashes(gfx));
}
void genX(CmdBeginTransformFeedback2EXT)(