diff --git a/src/nouveau/compiler/nak/api.rs b/src/nouveau/compiler/nak/api.rs index 527579c5ce5..72ecf3fd527 100644 --- a/src/nouveau/compiler/nak/api.rs +++ b/src/nouveau/compiler/nak/api.rs @@ -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); diff --git a/src/nouveau/vulkan/nvk_shader.c b/src/nouveau/vulkan/nvk_shader.c index 8f7f781034b..da907f1feef 100644 --- a/src/nouveau/vulkan/nvk_shader.c +++ b/src/nouveau/vulkan/nvk_shader.c @@ -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); }