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)" : ""); + } +} + static bool uint_key_compare(const void *a, const void *b) { -- 2.16.1 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev