radv/radeonsi: Don't count read-only data when reporting code size

We usually use these counts as a simple way to figure out if a change
reduces the number of instructions or shrinks an instruction. However,
since .rodata sections aren't executed, we shouldn't be counting their
size for this analysis. Make the linker return the total executable
size, and use it to report the more useful size in both drivers.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
This commit is contained in:
Connor Abbott
2019-08-29 17:15:46 +02:00
parent 5cc7cc5f17
commit 5dadbabb47
6 changed files with 14 additions and 4 deletions

View File

@@ -941,10 +941,12 @@ radv_shader_variant_create(struct radv_device *device,
}
variant->code_size = rtld_binary.rx_size;
variant->exec_size = rtld_binary.exec_size;
} else {
assert(binary->type == RADV_BINARY_TYPE_LEGACY);
config = ((struct radv_shader_binary_legacy *)binary)->config;
variant->code_size = radv_get_shader_binary_size(((struct radv_shader_binary_legacy *)binary)->code_size);
variant->code_size = radv_get_shader_binary_size(((struct radv_shader_binary_legacy *)binary)->code_size);
variant->exec_size = variant->code_size;
}
variant->info = binary->variant_info;
@@ -1299,7 +1301,7 @@ generate_shader_stats(struct radv_device *device,
"********************\n\n\n",
conf->num_sgprs, conf->num_vgprs,
conf->spilled_sgprs, conf->spilled_vgprs,
variant->info.private_mem_vgprs, variant->code_size,
variant->info.private_mem_vgprs, variant->exec_size,
conf->lds_size, conf->scratch_bytes_per_wave,
max_simd_waves);
}