Quoting Kenneth Graunke (2018-02-26 23:54:59)
> 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 | 20 ++++++++++++++++++++
>  1 file changed, 20 insertions(+)
> 
> I've now used this code on multiple occasions to debug issues.  Unless
> someone NAKs it, I'm going to push it in the next few days.
> 
> diff --git a/src/mesa/drivers/dri/i965/intel_batchbuffer.c 
> b/src/mesa/drivers/dri/i965/intel_batchbuffer.c
> index d0999bb3caa..26718e0d1a2 100644
> --- a/src/mesa/drivers/dri/i965/intel_batchbuffer.c
> +++ b/src/mesa/drivers/dri/i965/intel_batchbuffer.c
> @@ -55,6 +55,26 @@
>  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 %-15s %p %s%-7s @ 0x%llu%s\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)" : "");

Would it not be useful to mention if the buffer contains any
relocations? Just wondering if that helps.

Follow offset with size.
-Chris
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to