i965: Emit VF cache invalidates for 48-bit addressing bugs with softpin.
authorKenneth Graunke <kenneth@whitecape.org>
Mon, 9 Apr 2018 22:39:56 +0000 (15:39 -0700)
committerKenneth Graunke <kenneth@whitecape.org>
Tue, 22 May 2018 17:02:28 +0000 (10:02 -0700)
commit92f01fc5f914fd500497d0c3aed75f3ac8dc054d
tree4f770b126dd1bf91399ff4bb0e982304bc6a3798
parentc7259259d4c0df9ba339f4927891c855c7f91924
i965: Emit VF cache invalidates for 48-bit addressing bugs with softpin.

We'd like to start using soft-pin to assign BO addresses up front, and
never move them again.  Our previous plan for dealing with 48-bit VF
cache bugs was to relocate vertex buffers to the low 4GB, so we'd never
have addresses that alias in the low 32 bits.  But that requires moving
buffers dynamically.

This patch tracks the last seen BO address for each vertex/index buffer,
and emits a VF cache invalidate if the high bits change.  (Ideally, we
won't hit this case very often.)  This should work for the soft-pin
case, but unfortunately won't work in the relocation case, as we don't
actually know the addresses.  So, we have to use both methods.

v2: Mention that the cache uses a <VertexBufferIndex, Address> tuple
    more explicitly (suggested by Scott).  Mention "single batch" too
    (suggested by Chris).

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