i965: Add debugging code to dump the validation list.
authorKenneth Graunke <kenneth@whitecape.org>
Tue, 28 Nov 2017 18:07:43 +0000 (10:07 -0800)
committerKenneth Graunke <kenneth@whitecape.org>
Thu, 1 Mar 2018 23:46:11 +0000 (15:46 -0800)
When anything goes wrong with this code, dumping the validation list
is a useful way to figure out what's happening.

src/mesa/drivers/dri/i965/intel_batchbuffer.c

index 5385347dba2a522a5adba058f808a1d676749557..c16f7c4d74be72919e868d5e5fe862034730c776 100644 (file)
 static void
 intel_batchbuffer_reset(struct brw_context *brw);
 
+UNUSED static void
+dump_validation_list(struct intel_batchbuffer *batch)
+{
+   fprintf(stderr, "Validation list (length %d):\n", batch->exec_count);
+
+   for (int i = 0; i < batch->exec_count; i++) {
+      uint64_t flags = batch->validation_list[i].flags;
+      assert(batch->validation_list[i].handle ==
+             batch->exec_bos[i]->gem_handle);
+      fprintf(stderr, "[%2d]: %2d %-14s %p %s%-7s @ 0x%016llu%s (%"PRIu64"B)\n",
+              i,
+              batch->validation_list[i].handle,
+              batch->exec_bos[i]->name,
+              batch->exec_bos[i],
+              (flags & EXEC_OBJECT_SUPPORTS_48B_ADDRESS) ? "(48b" : "(32b",
+              (flags & EXEC_OBJECT_WRITE) ? " write)" : ")",
+              batch->validation_list[i].offset,
+              (flags & EXEC_OBJECT_PINNED) ? " (pinned)" : "",
+              batch->exec_bos[i]->size);
+   }
+}
+
 static bool
 uint_key_compare(const void *a, const void *b)
 {