nak: print shared memory usage in stats

This commit is contained in:
Karol Herbst 2026-04-28 21:01:25 +02:00 committed by Karol Herbst
parent 3dcba87ca3
commit d39d48425a
2 changed files with 15 additions and 0 deletions

View file

@ -243,6 +243,7 @@ impl ShaderBin {
let asm = CString::new(asm)
.expect("NAK assembly has unexpected null characters");
let mut shared_mem = 0;
let c_info = nak_shader_info {
stage: match info.stage {
ShaderStageInfo::Compute(_) => MESA_SHADER_COMPUTE,
@ -272,6 +273,7 @@ impl ShaderBin {
crs_size: sm.crs_size(info.max_crs_depth),
__bindgen_anon_1: match &info.stage {
ShaderStageInfo::Compute(cs_info) => {
shared_mem = cs_info.smem_size;
nak_shader_info__bindgen_ty_1 {
cs: nak_shader_info__bindgen_ty_1__bindgen_ty_1 {
local_size: [
@ -368,6 +370,7 @@ impl ShaderBin {
eprintln!("Fills from reg: {}", c_info.num_fills_from_reg);
eprintln!("Num GPRs: {}", c_info.num_gprs);
eprintln!("SLM size: {}", c_info.slm_size);
eprintln!("Shared size: {shared_mem}");
if c_info.stage != MESA_SHADER_COMPUTE {
eprint_hex("Header", &c_info.hdr);

View file

@ -1309,6 +1309,18 @@ nvk_shader_get_executable_statistics(
stat->value.u64 = shader->info.slm_size;
}
uint16_t smem_size = 0;
if (shader->info.stage == MESA_SHADER_COMPUTE)
smem_size = shader->info.cs.smem_size;
vk_outarray_append_typed(VkPipelineExecutableStatisticKHR, &out, stat) {
WRITE_STR(stat->name, "Shared size");
WRITE_STR(stat->description,
"Size of shader shared memory, in bytes");
stat->format = VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR;
stat->value.u64 = smem_size;
}
return vk_outarray_status(&out);
}