anv: Add an invalidate_range helper

This is similar to clflush_range except that it puts the mfence on the
other side to ensure caches are flushed prior to reading.

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Cc: "13.0 17.0" <mesa-stable@lists.freedesktop.org>
This commit is contained in:
Jason Ekstrand 2017-02-20 10:18:57 -08:00
parent e8d600710c
commit 8582ab2d6e

View file

@ -448,6 +448,19 @@ anv_clflush_range(void *start, size_t size)
}
}
static inline void
anv_invalidate_range(void *start, size_t size)
{
void *p = (void *) (((uintptr_t) start) & ~CACHELINE_MASK);
void *end = start + size;
while (p < end) {
__builtin_ia32_clflush(p);
p += CACHELINE_SIZE;
}
__builtin_ia32_mfence();
}
static void inline
anv_state_clflush(struct anv_state state)
{