i965: Convert reloc.target_handle into an index for I915_EXEC_HANDLE_LUT
authorKenneth Graunke <kenneth@whitecape.org>
Thu, 3 Aug 2017 07:03:15 +0000 (00:03 -0700)
committerKenneth Graunke <kenneth@whitecape.org>
Fri, 4 Aug 2017 17:26:37 +0000 (10:26 -0700)
commit2aacd22c0b7935b40911593c3b01f0b8d12eddd4
treee00b27636981c05d3c22852968383927aecca355
parent4d26c77a7108a11e8fe9d0851341732067e4bd06
i965: Convert reloc.target_handle into an index for I915_EXEC_HANDLE_LUT

Based on a patch by Chris Wilson (who also wrote this commit message).

Passing the index of the target buffer via the reloc.target_handle is
marginally more efficient for the kernel (it can avoid some allocations,
and can use a direct lookup rather than a hash or search). It is also
useful for ourselves as we can use the index into our exec_bos for other
tasks.

v2: Only enable HANDLE_LUT if we can use BATCH_FIRST and thereby avoid
a post-processing loop to fixup the relocations.
v3: Move kernel probing from context creation to screen init.
Use batch->use_exec_lut as it more descriptive of what's going on (Daniel)
v4: Kernel features already exists, use it for BATCH_FIRST
Rename locals to preserve current flavouring
v5: Squash in "always insert batch bo first"
v6: (by Ken) Split out BATCH_FIRST from HANDLE_LUT.
src/mesa/drivers/dri/i965/intel_batchbuffer.c