diff options
author | Marek Olšák <[email protected]> | 2018-01-10 23:25:37 +0100 |
---|---|---|
committer | Marek Olšák <[email protected]> | 2018-01-31 03:21:20 +0100 |
commit | 148b48646b6ae093fde5e243c22e894bb4b96e36 (patch) | |
tree | 1604ce4258a86eb382bdf8db9b5b9c6a114912f1 /src/gallium/drivers/radeonsi | |
parent | c02c9ee550d137fbea3ed105131d621d6af5813b (diff) |
radeonsi: print shader-db stats for main parts, not final binaries
This is needed to get shader-db stats for LS,HS,ES,GS stages on gfx9.
Reviewed-by: Nicolai Hähnle <[email protected]>
Diffstat (limited to 'src/gallium/drivers/radeonsi')
-rw-r--r-- | src/gallium/drivers/radeonsi/si_shader.c | 33 | ||||
-rw-r--r-- | src/gallium/drivers/radeonsi/si_shader.h | 2 | ||||
-rw-r--r-- | src/gallium/drivers/radeonsi/si_state_shaders.c | 1 |
3 files changed, 23 insertions, 13 deletions
diff --git a/src/gallium/drivers/radeonsi/si_shader.c b/src/gallium/drivers/radeonsi/si_shader.c index 7304d7e00db..9458920b9d7 100644 --- a/src/gallium/drivers/radeonsi/si_shader.c +++ b/src/gallium/drivers/radeonsi/si_shader.c @@ -5427,15 +5427,29 @@ static void si_calculate_max_simd_waves(struct si_shader *shader) conf->max_simd_waves = max_simd_waves; } +void si_shader_dump_stats_for_shader_db(const struct si_shader *shader, + struct pipe_debug_callback *debug) +{ + const struct si_shader_config *conf = &shader->config; + + pipe_debug_message(debug, SHADER_INFO, + "Shader Stats: SGPRS: %d VGPRS: %d Code Size: %d " + "LDS: %d Scratch: %d Max Waves: %d Spilled SGPRs: %d " + "Spilled VGPRs: %d PrivMem VGPRs: %d", + conf->num_sgprs, conf->num_vgprs, + si_get_shader_binary_size(shader), + conf->lds_size, conf->scratch_bytes_per_wave, + conf->max_simd_waves, conf->spilled_sgprs, + conf->spilled_vgprs, conf->private_mem_vgprs); +} + static void si_shader_dump_stats(struct si_screen *sscreen, const struct si_shader *shader, - struct pipe_debug_callback *debug, unsigned processor, FILE *file, bool check_debug_option) { const struct si_shader_config *conf = &shader->config; - unsigned code_size = si_get_shader_binary_size(shader); if (!check_debug_option || si_can_dump_shader(sscreen, processor)) { @@ -5459,19 +5473,11 @@ static void si_shader_dump_stats(struct si_screen *sscreen, "********************\n\n\n", conf->num_sgprs, conf->num_vgprs, conf->spilled_sgprs, conf->spilled_vgprs, - conf->private_mem_vgprs, code_size, + conf->private_mem_vgprs, + si_get_shader_binary_size(shader), conf->lds_size, conf->scratch_bytes_per_wave, conf->max_simd_waves); } - - pipe_debug_message(debug, SHADER_INFO, - "Shader Stats: SGPRS: %d VGPRS: %d Code Size: %d " - "LDS: %d Scratch: %d Max Waves: %d Spilled SGPRs: %d " - "Spilled VGPRs: %d PrivMem VGPRs: %d", - conf->num_sgprs, conf->num_vgprs, code_size, - conf->lds_size, conf->scratch_bytes_per_wave, - conf->max_simd_waves, conf->spilled_sgprs, - conf->spilled_vgprs, conf->private_mem_vgprs); } const char *si_get_shader_name(const struct si_shader *shader, unsigned processor) @@ -5549,7 +5555,7 @@ void si_shader_dump(struct si_screen *sscreen, const struct si_shader *shader, fprintf(file, "\n"); } - si_shader_dump_stats(sscreen, shader, debug, processor, file, + si_shader_dump_stats(sscreen, shader, processor, file, check_debug_option); } @@ -6980,6 +6986,7 @@ int si_compile_tgsi_shader(struct si_screen *sscreen, } si_calculate_max_simd_waves(shader); + si_shader_dump_stats_for_shader_db(shader, debug); return 0; } diff --git a/src/gallium/drivers/radeonsi/si_shader.h b/src/gallium/drivers/radeonsi/si_shader.h index 6ed1646817f..3cc49caf214 100644 --- a/src/gallium/drivers/radeonsi/si_shader.h +++ b/src/gallium/drivers/radeonsi/si_shader.h @@ -641,6 +641,8 @@ int si_shader_binary_upload(struct si_screen *sscreen, struct si_shader *shader) void si_shader_dump(struct si_screen *sscreen, const struct si_shader *shader, struct pipe_debug_callback *debug, unsigned processor, FILE *f, bool check_debug_option); +void si_shader_dump_stats_for_shader_db(const struct si_shader *shader, + struct pipe_debug_callback *debug); void si_multiwave_lds_size_workaround(struct si_screen *sscreen, unsigned *lds_size); void si_shader_apply_scratch_relocs(struct si_shader *shader, diff --git a/src/gallium/drivers/radeonsi/si_state_shaders.c b/src/gallium/drivers/radeonsi/si_state_shaders.c index ecb8a0dad85..959aead892f 100644 --- a/src/gallium/drivers/radeonsi/si_state_shaders.c +++ b/src/gallium/drivers/radeonsi/si_state_shaders.c @@ -1823,6 +1823,7 @@ static void si_init_shader_selector_async(void *job, int thread_index) if (tgsi_binary && si_shader_cache_load_shader(sscreen, tgsi_binary, shader)) { mtx_unlock(&sscreen->shader_cache_mutex); + si_shader_dump_stats_for_shader_db(shader, debug); } else { mtx_unlock(&sscreen->shader_cache_mutex); |