mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-06 05:08:08 +02:00
ac/debug: invoke valgrind checks while parsing IBs
Help catch garbage data written into IBs. Reviewed-by: Marek Olšák <marek.olsak@amd.com>
This commit is contained in:
parent
c2c3912410
commit
8937ac9a13
1 changed files with 20 additions and 0 deletions
|
|
@ -26,6 +26,14 @@
|
|||
|
||||
#include "ac_debug.h"
|
||||
|
||||
#ifdef HAVE_VALGRIND
|
||||
#include <valgrind.h>
|
||||
#include <memcheck.h>
|
||||
#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#???????? ");
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue