diff options
author | Christian Gmeiner <christian.gmeiner@gmail.com> | 2019-08-12 18:46:04 +0200 |
---|---|---|
committer | Christian Gmeiner <christian.gmeiner@gmail.com> | 2019-08-12 23:44:17 +0200 |
commit | 039099684a57e9d5e6185f9c67bec8ac9983054b (patch) | |
tree | c9c971e30b2b654c08572efb4a42b6901b940f71 | |
parent | 056818563a5c7f3c6f4cf4dbead1492c2a8c588d (diff) | |
download | mesa-039099684a57e9d5e6185f9c67bec8ac9983054b.tar.gz |
etnaviv: add missing etna_dump_shader_nir(..) impl
To 99% a 1:1 copy of etna_dump_shader(..)
Signed-off-by: Christian Gmeiner <christian.gmeiner@gmail.com>
-rw-r--r-- | src/gallium/drivers/etnaviv/etnaviv_compiler_nir.c | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/src/gallium/drivers/etnaviv/etnaviv_compiler_nir.c b/src/gallium/drivers/etnaviv/etnaviv_compiler_nir.c index 44e0c1a29fb..99887a2a3a2 100644 --- a/src/gallium/drivers/etnaviv/etnaviv_compiler_nir.c +++ b/src/gallium/drivers/etnaviv/etnaviv_compiler_nir.c @@ -40,6 +40,7 @@ #include "compiler/nir/nir_builder.h" #include "compiler/nir/nir_worklist.h" +#include "tgsi/tgsi_strings.h" #include "util/u_half.h" struct etna_compile { @@ -779,6 +780,57 @@ etna_destroy_shader_nir(struct etna_shader_variant *shader) FREE(shader); } +extern const char *tgsi_swizzle_names[]; +void +etna_dump_shader_nir(const struct etna_shader_variant *shader) +{ + if (shader->stage == MESA_SHADER_VERTEX) + printf("VERT\n"); + else + printf("FRAG\n"); + + + etna_disasm(shader->code, shader->code_size, PRINT_RAW); + + printf("num loops: %i\n", shader->num_loops); + printf("num temps: %i\n", shader->num_temps); + printf("immediates:\n"); + for (int idx = 0; idx < shader->uniforms.imm_count; ++idx) { + printf(" [%i].%s = %f (0x%08x) (%d)\n", + idx / 4, + tgsi_swizzle_names[idx % 4], + *((float *)&shader->uniforms.imm_data[idx]), + shader->uniforms.imm_data[idx], + shader->uniforms.imm_contents[idx]); + } + printf("inputs:\n"); + for (int idx = 0; idx < shader->infile.num_reg; ++idx) { + printf(" [%i] name=%s comps=%i\n", shader->infile.reg[idx].reg, + (shader->stage == MESA_SHADER_VERTEX) ? + gl_vert_attrib_name(shader->infile.reg[idx].slot) : + gl_varying_slot_name(shader->infile.reg[idx].slot), + shader->infile.reg[idx].num_components); + } + printf("outputs:\n"); + for (int idx = 0; idx < shader->outfile.num_reg; ++idx) { + printf(" [%i] name=%s comps=%i\n", shader->outfile.reg[idx].reg, + (shader->stage == MESA_SHADER_VERTEX) ? + gl_varying_slot_name(shader->outfile.reg[idx].slot) : + gl_frag_result_name(shader->outfile.reg[idx].slot), + shader->outfile.reg[idx].num_components); + } + printf("special:\n"); + if (shader->stage == MESA_SHADER_VERTEX) { + printf(" vs_pos_out_reg=%i\n", shader->vs_pos_out_reg); + printf(" vs_pointsize_out_reg=%i\n", shader->vs_pointsize_out_reg); + printf(" vs_load_balancing=0x%08x\n", shader->vs_load_balancing); + } else { + printf(" ps_color_out_reg=%i\n", shader->ps_color_out_reg); + printf(" ps_depth_out_reg=%i\n", shader->ps_depth_out_reg); + } + printf(" input_count_unk8=0x%08x\n", shader->input_count_unk8); +} + static const struct etna_shader_inout * etna_shader_vs_lookup(const struct etna_shader_variant *sobj, const struct etna_shader_inout *in) |