radeonsi: dump shader stats when hitting the live cache
With the introduction of the live shader cache, when a shader is fetched from the cache no stats are printed for shaderdb. So in a sequence like this: vs1, fs1, vs1, fs2, shaderdb may see 3 or 4 lines, depending on the threads being used. If one run produces 3 lines while the other produces 4 lines, it would compare vs1 stats with fs2 stats. Reviewed-by: Marek Olšák <marek.olsak@amd.com> Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4355> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4355>
This commit is contained in:
@@ -2827,9 +2827,27 @@ static void *si_create_shader_selector(struct pipe_context *ctx,
|
||||
|
||||
static void *si_create_shader(struct pipe_context *ctx, const struct pipe_shader_state *state)
|
||||
{
|
||||
struct si_context *sctx = (struct si_context *)ctx;
|
||||
struct si_screen *sscreen = (struct si_screen *)ctx->screen;
|
||||
bool cache_hit;
|
||||
struct si_shader_selector *sel = (struct si_shader_selector *)util_live_shader_cache_get(
|
||||
ctx, &sscreen->live_shader_cache, state, &cache_hit);
|
||||
|
||||
return util_live_shader_cache_get(ctx, &sscreen->live_shader_cache, state);
|
||||
if (sel && cache_hit && sctx->debug.debug_message) {
|
||||
if (sel->main_shader_part)
|
||||
si_shader_dump_stats_for_shader_db(sscreen, sel->main_shader_part, &sctx->debug);
|
||||
if (sel->main_shader_part_ls)
|
||||
si_shader_dump_stats_for_shader_db(sscreen, sel->main_shader_part_ls, &sctx->debug);
|
||||
if (sel->main_shader_part_es)
|
||||
si_shader_dump_stats_for_shader_db(sscreen, sel->main_shader_part_es, &sctx->debug);
|
||||
if (sel->main_shader_part_ngg)
|
||||
si_shader_dump_stats_for_shader_db(sscreen, sel->main_shader_part_ngg, &sctx->debug);
|
||||
if (sel->main_shader_part_ngg_es)
|
||||
si_shader_dump_stats_for_shader_db(sscreen, sel->main_shader_part_ngg_es, &sctx->debug);
|
||||
if (sel->gs_copy_shader)
|
||||
si_shader_dump_stats_for_shader_db(sscreen, sel->gs_copy_shader, &sctx->debug);
|
||||
}
|
||||
return sel;
|
||||
}
|
||||
|
||||
static void si_update_streamout_state(struct si_context *sctx)
|
||||
|
Reference in New Issue
Block a user