On Tue, Nov 10, 2015 at 12:48 AM, Kenneth Graunke <kenn...@whitecape.org> wrote: > I've been carrying around a patch to do this for the last few months, > and it's been exceedingly useful for debugging GS and tessellation > problems. I've caught lots of bugs by inspecting the interface > expectations of two adjacent stages. > > It's not that much spam, so I figure we may as well just print it.
We do print a lot for vs debug etc, but this doesn't add much, and is certainly useful. Reviewed-by: Kristian Høgsberg <k...@bitplanet.net> > Signed-off-by: Kenneth Graunke <kenn...@whitecape.org> > --- > src/mesa/drivers/dri/i965/brw_compiler.h | 2 ++ > src/mesa/drivers/dri/i965/brw_vec4_gs_visitor.cpp | 6 +++++ > src/mesa/drivers/dri/i965/brw_vs.c | 6 ++++- > src/mesa/drivers/dri/i965/brw_vue_map.c | 27 > +++++++++++++++++++++++ > 4 files changed, 40 insertions(+), 1 deletion(-) > > diff --git a/src/mesa/drivers/dri/i965/brw_compiler.h > b/src/mesa/drivers/dri/i965/brw_compiler.h > index f022f38..e3a26d6 100644 > --- a/src/mesa/drivers/dri/i965/brw_compiler.h > +++ b/src/mesa/drivers/dri/i965/brw_compiler.h > @@ -458,6 +458,8 @@ struct brw_vue_map { > int num_slots; > }; > > +void brw_print_vue_map(FILE *fp, const struct brw_vue_map *vue_map); > + > /** > * Convert a VUE slot number into a byte offset within the VUE. > */ > diff --git a/src/mesa/drivers/dri/i965/brw_vec4_gs_visitor.cpp > b/src/mesa/drivers/dri/i965/brw_vec4_gs_visitor.cpp > index 49c1083..1a09f76 100644 > --- a/src/mesa/drivers/dri/i965/brw_vec4_gs_visitor.cpp > +++ b/src/mesa/drivers/dri/i965/brw_vec4_gs_visitor.cpp > @@ -812,6 +812,12 @@ brw_compile_gs(const struct brw_compiler *compiler, void > *log_data, > /* Now that prog_data setup is done, we are ready to actually compile the > * program. > */ > + if (unlikely(INTEL_DEBUG & DEBUG_GS)) { > + fprintf(stderr, "GS Input "); > + brw_print_vue_map(stderr, &c.input_vue_map); > + fprintf(stderr, "GS Output "); > + brw_print_vue_map(stderr, &prog_data->base.vue_map); > + } > > if (compiler->scalar_gs) { > /* TODO: Support instanced GS. We have basically no tests... */ > diff --git a/src/mesa/drivers/dri/i965/brw_vs.c > b/src/mesa/drivers/dri/i965/brw_vs.c > index 0b805b1..967448e 100644 > --- a/src/mesa/drivers/dri/i965/brw_vs.c > +++ b/src/mesa/drivers/dri/i965/brw_vs.c > @@ -159,9 +159,13 @@ brw_codegen_vs_prog(struct brw_context *brw, > start_time = get_time(); > } > > - if (unlikely(INTEL_DEBUG & DEBUG_VS)) > + if (unlikely(INTEL_DEBUG & DEBUG_VS)) { > brw_dump_ir("vertex", prog, vs ? &vs->base : NULL, &vp->program.Base); > > + fprintf(stderr, "VS Output "); > + brw_print_vue_map(stderr, &prog_data.base.vue_map); > + } > + > int st_index = -1; > if (INTEL_DEBUG & DEBUG_SHADER_TIME) > st_index = brw_get_shader_time_index(brw, prog, &vp->program.Base, > ST_VS); > diff --git a/src/mesa/drivers/dri/i965/brw_vue_map.c > b/src/mesa/drivers/dri/i965/brw_vue_map.c > index 45662bd..edb1608 100644 > --- a/src/mesa/drivers/dri/i965/brw_vue_map.c > +++ b/src/mesa/drivers/dri/i965/brw_vue_map.c > @@ -178,3 +178,30 @@ brw_compute_vue_map(const struct brw_device_info > *devinfo, > > vue_map->num_slots = separate ? slot + 1 : slot; > } > + > +static const char * > +varying_name(brw_varying_slot slot) > +{ > + if (slot < VARYING_SLOT_MAX) > + return gl_varying_slot_name(slot); > + > + static const char *brw_names[] = { > + [BRW_VARYING_SLOT_NDC - VARYING_SLOT_MAX] = "BRW_VARYING_SLOT_NDC", > + [BRW_VARYING_SLOT_PAD - VARYING_SLOT_MAX] = "BRW_VARYING_SLOT_PAD", > + [BRW_VARYING_SLOT_PNTC - VARYING_SLOT_MAX] = "BRW_VARYING_SLOT_PNTC", > + }; > + > + return brw_names[slot - VARYING_SLOT_MAX]; > +} > + > +void > +brw_print_vue_map(FILE *fp, const struct brw_vue_map *vue_map) > +{ > + fprintf(fp, "VUE map (%d slots, %s)\n", > + vue_map->num_slots, vue_map->separate ? "SSO" : "non-SSO"); > + for (int i = 0; i < vue_map->num_slots; i++) { > + fprintf(fp, " [%d] %s\n", i, > + varying_name(vue_map->slot_to_varying[i])); > + } > + fprintf(fp, "\n"); > +} > -- > 2.6.2 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev