i965: Prepare batchbuffer module for softpin support.
authorKenneth Graunke <kenneth@whitecape.org>
Thu, 5 Apr 2018 08:37:31 +0000 (01:37 -0700)
committerKenneth Graunke <kenneth@whitecape.org>
Tue, 5 Jun 2018 01:38:41 +0000 (18:38 -0700)
commit1c9053d0765dc6372238e333dc5adca3e175b210
treebc7419aefd4f291765fed2b30a9b4ee7b86e9c17
parent01058a552294ed641f2e933c0cc374917fb3bc70
i965: Prepare batchbuffer module for softpin support.

If EXEC_OBJECT_PINNED is set, we don't want to emit any relocations.
We simply want to add the BO to the validation list, and possibly mark
it as writeable.  The new brw_use_pinned_bo() interface does just that.

To avoid having to make every caller consider both the relocation and
softpin cases, we make emit_reloc() call brw_use_pinned_bo() when given
a softpinned buffer.

We also can't grow buffers that are softpinned - the mechanism places a
larger BO at the same offset as the original, which requires moving BOs
around in the VMA.  With softpin, we only allocate enough VMA for the
original size of the BO.

v2: Assert that BOs aren't pinned if the kernel says we should move them
    (feedback from Chris Wilson)

Reviewed-by: Scott D Phillips <scott.d.phillips@intel.com>
src/mesa/drivers/dri/i965/intel_batchbuffer.c
src/mesa/drivers/dri/i965/intel_batchbuffer.h