mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-07 04:58:05 +02:00
nak: Add static cycle count statistic
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33773>
This commit is contained in:
parent
b72c772f83
commit
890bab86b4
6 changed files with 19 additions and 0 deletions
|
|
@ -140,6 +140,9 @@ struct nak_shader_info {
|
|||
/** Number of instructions used */
|
||||
uint32_t num_instrs;
|
||||
|
||||
/** Number of cycles used by fixed-latency instructions */
|
||||
uint32_t num_static_cycles;
|
||||
|
||||
/** Size of shader local (scratch) memory */
|
||||
uint32_t slm_size;
|
||||
|
||||
|
|
|
|||
|
|
@ -239,6 +239,7 @@ impl ShaderBin {
|
|||
num_control_barriers: info.num_control_barriers,
|
||||
_pad0: Default::default(),
|
||||
num_instrs: info.num_instrs,
|
||||
num_static_cycles: info.num_static_cycles,
|
||||
slm_size: info.slm_size,
|
||||
crs_size: sm.crs_size(info.max_crs_depth),
|
||||
__bindgen_anon_1: match &info.stage {
|
||||
|
|
@ -313,6 +314,7 @@ impl ShaderBin {
|
|||
|
||||
eprintln!("Stage: {}", stage_name);
|
||||
eprintln!("Instruction count: {}", c_info.num_instrs);
|
||||
eprintln!("Static cycle count: {}", c_info.num_static_cycles);
|
||||
eprintln!("Num GPRs: {}", c_info.num_gprs);
|
||||
eprintln!("SLM size: {}", c_info.slm_size);
|
||||
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@ fn init_info_from_nir(nak: &nak_compiler, nir: &nir_shader) -> ShaderInfo {
|
|||
ShaderInfo {
|
||||
num_gprs: 0,
|
||||
num_instrs: 0,
|
||||
num_static_cycles: 0,
|
||||
num_control_barriers: 0,
|
||||
slm_size: nir.scratch_size,
|
||||
max_crs_depth: 0,
|
||||
|
|
|
|||
|
|
@ -201,6 +201,7 @@ impl<'a> TestShaderBuilder<'a> {
|
|||
num_gprs: 0,
|
||||
num_control_barriers: 0,
|
||||
num_instrs: 0,
|
||||
num_static_cycles: 0,
|
||||
slm_size: 0,
|
||||
max_crs_depth: 0,
|
||||
uses_global_mem: true,
|
||||
|
|
|
|||
|
|
@ -7456,6 +7456,7 @@ pub struct ShaderInfo {
|
|||
pub num_gprs: u8,
|
||||
pub num_control_barriers: u8,
|
||||
pub num_instrs: u32,
|
||||
pub num_static_cycles: u32,
|
||||
pub slm_size: u32,
|
||||
pub max_crs_depth: u32,
|
||||
pub uses_global_mem: bool,
|
||||
|
|
@ -7535,11 +7536,13 @@ impl Shader<'_> {
|
|||
|
||||
pub fn gather_info(&mut self) {
|
||||
let mut num_instrs = 0;
|
||||
let mut num_static_cycles = 0;
|
||||
let mut uses_global_mem = false;
|
||||
let mut writes_global_mem = false;
|
||||
|
||||
self.for_each_instr(&mut |instr| {
|
||||
num_instrs += 1;
|
||||
num_static_cycles += instr.deps.delay as u32;
|
||||
|
||||
if !uses_global_mem {
|
||||
uses_global_mem = instr.uses_global_mem();
|
||||
|
|
@ -7551,6 +7554,7 @@ impl Shader<'_> {
|
|||
});
|
||||
|
||||
self.info.num_instrs = num_instrs;
|
||||
self.info.num_static_cycles = num_static_cycles;
|
||||
self.info.uses_global_mem = uses_global_mem;
|
||||
self.info.writes_global_mem = writes_global_mem;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1247,6 +1247,14 @@ nvk_shader_get_executable_statistics(
|
|||
stat->value.u64 = shader->info.num_instrs;
|
||||
}
|
||||
|
||||
vk_outarray_append_typed(VkPipelineExecutableStatisticKHR, &out, stat) {
|
||||
WRITE_STR(stat->name, "Static cycle count");
|
||||
WRITE_STR(stat->description,
|
||||
"Total cycles used by fixed-latency instructions in this shader");
|
||||
stat->format = VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR;
|
||||
stat->value.u64 = shader->info.num_static_cycles;
|
||||
}
|
||||
|
||||
vk_outarray_append_typed(VkPipelineExecutableStatisticKHR, &out, stat) {
|
||||
WRITE_STR(stat->name, "Code Size");
|
||||
WRITE_STR(stat->description,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue