anv/batch_chain: Simplify secondary batch return chaining
authorJason Ekstrand <jason.ekstrand@intel.com>
Thu, 31 May 2018 05:07:30 +0000 (22:07 -0700)
committerJason Ekstrand <jason.ekstrand@intel.com>
Fri, 1 Jun 2018 21:27:12 +0000 (14:27 -0700)
commita0b133286a39fb9ac3a99d90edc0992339735765
treed0f3f19c3a965101427316d94fe48f4105c46d2e
parent4f20c665b4dc48bf11b00f9c520ec249f5eecb1f
anv/batch_chain: Simplify secondary batch return chaining

Previously, we did this weird thing where we left space and an empty
relocation for use in a hypothetical MI_BATCH_BUFFER_START that would be
added to the secondary later.  Then, when it came time to chain it into
the primary, we would back that out and emit an MI_BATCH_BUFFER_START.
This worked well but it was always a bit hacky, fragile and ugly.  This
commit instead adds a helper for rewriting the MI_BATCH_BUFFER_START at
the end of an anv_batch_bo and we use that helper for both batch bo list
cloning and handling returns from secondaries.  The new helper doesn't
actually modify the batch in any way but instead just adjusts the
relocation as needed.

Reviewed-by: Scott D Phillips <scott.d.phillips@intel.com>
src/intel/vulkan/anv_batch_chain.c