From c952655693fd319437a9bdb9b5fd7b47a70b1d95 Mon Sep 17 00:00:00 2001 From: Samuel Pitoiset Date: Thu, 16 Sep 2021 13:15:10 +0200 Subject: [PATCH] ac/rgp, radv: report wave size for shaders Fills the "Wave mode" in "Pipelines" for GPUs that supports Wave32. Signed-off-by: Samuel Pitoiset Reviewed-by: Pierre-Eric Pelloux-Prayer Part-of: --- src/amd/common/ac_rgp.h | 1 + src/amd/common/ac_rgp_elf_object_pack.c | 5 ++++- src/amd/vulkan/layers/radv_sqtt_layer.c | 1 + 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/amd/common/ac_rgp.h b/src/amd/common/ac_rgp.h index 83ddb217099..694aade80db 100644 --- a/src/amd/common/ac_rgp.h +++ b/src/amd/common/ac_rgp.h @@ -53,6 +53,7 @@ struct rgp_shader_data { uint32_t vgpr_count; uint32_t sgpr_count; uint32_t scratch_memory_size; + uint32_t wavefront_size; uint64_t base_address; uint32_t elf_symbol_offset; uint32_t hw_stage; diff --git a/src/amd/common/ac_rgp_elf_object_pack.c b/src/amd/common/ac_rgp_elf_object_pack.c index 27d06f5c6a3..4f1961ba025 100644 --- a/src/amd/common/ac_rgp_elf_object_pack.c +++ b/src/amd/common/ac_rgp_elf_object_pack.c @@ -149,7 +149,7 @@ ac_rgp_write_msgpack(FILE *output, ac_msgpack_add_fixstr(&msgpack, hw_stage_string[ record->shader_data[i].hw_stage]); - ac_msgpack_add_fixmap_op(&msgpack, 4); + ac_msgpack_add_fixmap_op(&msgpack, 5); ac_msgpack_add_fixstr(&msgpack, ".entry_point"); ac_msgpack_add_fixstr(&msgpack, hw_stage_symbol_string[ record->shader_data[i].hw_stage]); @@ -166,6 +166,9 @@ ac_rgp_write_msgpack(FILE *output, ac_msgpack_add_uint(&msgpack, record->shader_data[i].scratch_memory_size); + ac_msgpack_add_fixstr(&msgpack, ".wavefront_size"); + ac_msgpack_add_uint(&msgpack, + record->shader_data[i].wavefront_size); } /* 5 */ diff --git a/src/amd/vulkan/layers/radv_sqtt_layer.c b/src/amd/vulkan/layers/radv_sqtt_layer.c index 3bf70d00d9a..32bec940873 100644 --- a/src/amd/vulkan/layers/radv_sqtt_layer.c +++ b/src/amd/vulkan/layers/radv_sqtt_layer.c @@ -893,6 +893,7 @@ radv_add_code_object(struct radv_device *device, struct radv_pipeline *pipeline) record->shader_data[i].vgpr_count = shader->config.num_vgprs; record->shader_data[i].sgpr_count = shader->config.num_sgprs; record->shader_data[i].scratch_memory_size = shader->config.scratch_bytes_per_wave; + record->shader_data[i].wavefront_size = shader->info.wave_size; record->shader_data[i].base_address = va & 0xffffffffffff; record->shader_data[i].elf_symbol_offset = 0; record->shader_data[i].hw_stage = radv_mesa_to_rgp_shader_stage(pipeline, i);