From 8937ac9a1373096be0ac330844cdb0c08e762773 Mon Sep 17 00:00:00 2001 From: Nicolai Hähnle Date: Fri, 18 Aug 2017 20:17:29 +0200 Subject: ac/debug: invoke valgrind checks while parsing IBs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Help catch garbage data written into IBs. Reviewed-by: Marek Olšák --- src/amd/common/ac_debug.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'src/amd/common') diff --git a/src/amd/common/ac_debug.c b/src/amd/common/ac_debug.c index e92dfbd0e4a..2af83a146c8 100644 --- a/src/amd/common/ac_debug.c +++ b/src/amd/common/ac_debug.c @@ -26,6 +26,14 @@ #include "ac_debug.h" +#ifdef HAVE_VALGRIND +#include +#include +#define VG(x) x +#else +#define VG(x) +#endif + #include "sid.h" #include "gfx9d.h" #include "sid_tables.h" @@ -149,6 +157,18 @@ static uint32_t ac_ib_get(struct ac_ib_parser *ib) if (ib->cur_dw < ib->num_dw) { v = ib->ib[ib->cur_dw]; +#ifdef HAVE_VALGRIND + /* Help figure out where garbage data is written to IBs. + * + * Arguably we should do this already when the IBs are written, + * see RADEON_VALGRIND. The problem is that client-requests to + * Valgrind have an overhead even when Valgrind isn't running, + * and radeon_emit is performance sensitive... + */ + if (VALGRIND_CHECK_VALUE_IS_DEFINED(v)) + fprintf(ib->f, COLOR_RED "Valgrind: The next DWORD is garbage" + COLOR_RESET "\n"); +#endif fprintf(ib->f, "\n\035#%08x ", v); } else { fprintf(ib->f, "\n\035#???????? "); -- cgit v1.2.3