i965: Fix batch-last mode to properly swap BOs.
authorKenneth Graunke <kenneth@whitecape.org>
Mon, 4 Jun 2018 10:09:59 +0000 (03:09 -0700)
committerKenneth Graunke <kenneth@whitecape.org>
Mon, 4 Jun 2018 16:43:09 +0000 (09:43 -0700)
commitb3ba47c5926b3a5850403b1ab0df37815a203d9d
tree2add50bf8f7650ab1cea3b9df0834e00f1eae45b
parent06d3c65098097675a34035da3043a71061fad17b
i965: Fix batch-last mode to properly swap BOs.

On pre-4.13 kernels, which don't support I915_EXEC_BATCH_FIRST, we move
the validation list entry to the end...but incorrectly left the exec_bo
array alone, causing a mismatch where exec_bos[0] no longer corresponded
with validation_list[0] (and similarly for the last entry).

One example of resulting breakage is that we'd update bo->gtt_offset
based on the wrong buffer.  This wreaked total havoc when trying to use
softpin, and likely caused unnecessary relocations in the normal case.

Fixes: 29ba502a4e28471f67e4e904ae503157087efd20 (i965: Use I915_EXEC_BATCH_FIRST when available.)
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
src/mesa/drivers/dri/i965/intel_batchbuffer.c