i965: Always flush caches after blitting to a GL buffer object.
authorKenneth Graunke <kenneth@whitecape.org>
Tue, 29 Aug 2017 05:04:01 +0000 (22:04 -0700)
committerKenneth Graunke <kenneth@whitecape.org>
Wed, 30 Aug 2017 23:59:23 +0000 (16:59 -0700)
commit3efedf98e8272d1a32a3837b22161582d28c4487
tree67fc86712dfb84db0242232ddafe9b669db22fe9
parentdf8f4bfc02d631412632a8bef537a2e4cec4945b
i965: Always flush caches after blitting to a GL buffer object.

When we blit data into a buffer object, we may need to invalidate any
caches that might contain stale data, so the new data becomes visible.

For example, if the buffer object is bound as a vertex buffer, we need
to invalidate the vertex fetch cache.

While this flushing was missing, it usually happened implicitly for
non-obvious reasons: we're usually on the render ring, and calling
intel_emit_linear_blit() would require switching to the BLT ring,
causing an implicit flush.  This likely provoked the kernel to do
PIPE_CONTROLs on our behalf.  Although, Gen4-5 wouldn't have this
behavior.  At any rate, we should do it ourselves.

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
src/mesa/drivers/dri/i965/intel_buffer_objects.c