Previously, vec4_visitor contained several explicit references to vertex shading in debug messages. This patch moves all of those references into a single function, get_debug_name(), which returns a human-readable description of the shader being compiled.
This helps pave the way for sharing code between VS and GS code generation, by creating a function that can be made virtual. --- src/mesa/drivers/dri/i965/brw_vec4.h | 1 + src/mesa/drivers/dri/i965/brw_vec4_emit.cpp | 20 ++++++++++++++++---- src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp | 3 ++- 3 files changed, 19 insertions(+), 5 deletions(-) diff --git a/src/mesa/drivers/dri/i965/brw_vec4.h b/src/mesa/drivers/dri/i965/brw_vec4.h index 4e17d15..c0284fc 100644 --- a/src/mesa/drivers/dri/i965/brw_vec4.h +++ b/src/mesa/drivers/dri/i965/brw_vec4.h @@ -516,6 +516,7 @@ public: void resolve_ud_negate(src_reg *reg); bool get_debug_flag() const; + const char *get_debug_name() const; int generate_code(int first_non_payload_grf); void generate_vs_instruction(vec4_instruction *inst, diff --git a/src/mesa/drivers/dri/i965/brw_vec4_emit.cpp b/src/mesa/drivers/dri/i965/brw_vec4_emit.cpp index 0ee6525..dceacc7 100644 --- a/src/mesa/drivers/dri/i965/brw_vec4_emit.cpp +++ b/src/mesa/drivers/dri/i965/brw_vec4_emit.cpp @@ -611,10 +611,12 @@ vec4_visitor::generate_vs_instruction(vec4_instruction *instruction, default: if (inst->opcode < (int)ARRAY_SIZE(brw_opcodes)) { - fail("unsupported opcode in `%s' in VS\n", - brw_opcodes[inst->opcode].name); + fail("unsupported opcode in `%s' in %s\n", + brw_opcodes[inst->opcode].name, + get_debug_name()); } else { - fail("Unsupported opcode %d in VS", inst->opcode); + fail("Unsupported opcode %d in %s", inst->opcode, + get_debug_name()); } } } @@ -670,6 +672,16 @@ vec4_visitor::get_debug_flag() const return INTEL_DEBUG & DEBUG_VS; } +/** + * Return a string describing the program being compiled, for debugging + * purposes. Caller should not free this string. + */ +const char * +vec4_visitor::get_debug_name() const +{ + return ralloc_asprintf(mem_ctx, "vertex shader %d", prog->Name); +} + int vec4_visitor::generate_code(int first_non_payload_grf) { @@ -693,7 +705,7 @@ vec4_visitor::generate_code(int first_non_payload_grf) return 0; if (unlikely(debug_flag)) { - printf("Native code for vertex shader %d:\n", prog->Name); + printf("Native code for %s:\n", get_debug_name()); } foreach_list(node, &this->instructions) { diff --git a/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp b/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp index 6262093..5025115 100644 --- a/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp +++ b/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp @@ -2424,7 +2424,8 @@ vec4_visitor::fail(const char *format, ...) va_start(va, format); msg = ralloc_vasprintf(mem_ctx, format, va); va_end(va); - msg = ralloc_asprintf(mem_ctx, "VS compile failed: %s\n", msg); + msg = ralloc_asprintf(mem_ctx, "compile failed for %s: %s\n", + get_debug_name(), msg); this->fail_msg = msg; -- 1.7.6.4 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev