radeonsi: dump the shader key when dumping shaders
authorMarek Olšák <marek.olsak@amd.com>
Sun, 22 Feb 2015 13:58:30 +0000 (14:58 +0100)
committerMarek Olšák <marek.olsak@amd.com>
Tue, 24 Feb 2015 20:21:04 +0000 (21:21 +0100)
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
src/gallium/drivers/radeonsi/si_shader.c

index e6849ad22c77b75574eed18512de4fb374c6ffa0..b0417edf33e1e8f13b03b52bde108297a5d90ef6 100644 (file)
@@ -2740,6 +2740,43 @@ static int si_generate_gs_copy_shader(struct si_screen *sscreen,
        return r;
 }
 
+static void si_dump_key(unsigned shader, union si_shader_key *key)
+{
+       int i;
+
+       fprintf(stderr, "SHADER KEY\n");
+
+       switch (shader) {
+       case PIPE_SHADER_VERTEX:
+               fprintf(stderr, "  instance_divisors = {");
+               for (i = 0; i < Elements(key->vs.instance_divisors); i++)
+                       fprintf(stderr, !i ? "%u" : ", %u",
+                               key->vs.instance_divisors[i]);
+               fprintf(stderr, "}\n");
+
+               if (key->vs.as_es)
+                       fprintf(stderr, "  gs_used_inputs = 0x%"PRIx64"\n",
+                               key->vs.gs_used_inputs);
+               fprintf(stderr, "  as_es = %u\n", key->vs.as_es);
+               break;
+
+       case PIPE_SHADER_GEOMETRY:
+               break;
+
+       case PIPE_SHADER_FRAGMENT:
+               fprintf(stderr, "  export_16bpc = 0x%X\n", key->ps.export_16bpc);
+               fprintf(stderr, "  last_cbuf = %u\n", key->ps.last_cbuf);
+               fprintf(stderr, "  color_two_side = %u\n", key->ps.color_two_side);
+               fprintf(stderr, "  alpha_func = %u\n", key->ps.alpha_func);
+               fprintf(stderr, "  alpha_to_one = %u\n", key->ps.alpha_to_one);
+               fprintf(stderr, "  poly_stipple = %u\n", key->ps.poly_stipple);
+               break;
+
+       default:
+               assert(0);
+       }
+}
+
 int si_shader_create(struct si_screen *sscreen, struct si_shader *shader)
 {
        struct si_shader_selector *sel = shader->selector;
@@ -2762,6 +2799,7 @@ int si_shader_create(struct si_screen *sscreen, struct si_shader *shader)
        /* Dump TGSI code before doing TGSI->LLVM conversion in case the
         * conversion fails. */
        if (dump) {
+               si_dump_key(sel->type, &shader->key);
                tgsi_dump(tokens, 0);
                si_dump_streamout(&sel->so);
        }