mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 07:28:11 +02:00
i965/nir: Report NIR instruction counts (in SSA form) via KHR_debug.
This allows us to count NIR instructions via shader-db. Use "run" as normal. The results file will contain both NIR and assembly. Then, to generate a NIR report: ./report.py <(grep NIR results/foo) <(grep NIR results/bar) Or, to generate an i965 report: ./report.py <(grep -v NIR results/foo) <(grep -v NIR results/bar) Signed-off-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com> Reviewed-by: Matt Turner <mattst88@gmail.com>
This commit is contained in:
parent
f3e06fcc6a
commit
d7743bb1c2
1 changed files with 32 additions and 0 deletions
|
|
@ -49,6 +49,28 @@ nir_optimize(nir_shader *nir)
|
|||
} while (progress);
|
||||
}
|
||||
|
||||
static bool
|
||||
count_nir_instrs_in_block(nir_block *block, void *state)
|
||||
{
|
||||
int *count = (int *) state;
|
||||
nir_foreach_instr(block, instr) {
|
||||
*count = *count + 1;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
static int
|
||||
count_nir_instrs(nir_shader *nir)
|
||||
{
|
||||
int count = 0;
|
||||
nir_foreach_overload(nir, overload) {
|
||||
if (!overload->impl)
|
||||
continue;
|
||||
nir_foreach_block(overload->impl, count_nir_instrs_in_block, &count);
|
||||
}
|
||||
return count;
|
||||
}
|
||||
|
||||
void
|
||||
fs_visitor::emit_nir_code()
|
||||
{
|
||||
|
|
@ -99,6 +121,16 @@ fs_visitor::emit_nir_code()
|
|||
nir_print_shader(nir, stderr);
|
||||
}
|
||||
|
||||
if (dispatch_width == 8) {
|
||||
static GLuint msg_id = 0;
|
||||
_mesa_gl_debug(&brw->ctx, &msg_id,
|
||||
MESA_DEBUG_SOURCE_SHADER_COMPILER,
|
||||
MESA_DEBUG_TYPE_OTHER,
|
||||
MESA_DEBUG_SEVERITY_NOTIFICATION,
|
||||
"FS NIR shader: %d inst\n",
|
||||
count_nir_instrs(nir));
|
||||
}
|
||||
|
||||
nir_convert_from_ssa(nir);
|
||||
nir_validate_shader(nir);
|
||||
nir_lower_vec_to_movs(nir);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue