i965: Flip the non-coherent framebuffer fetch extension bit on G45-Gen8 hardware.
authorFrancisco Jerez <currojerez@riseup.net>
Tue, 19 Jul 2016 22:23:30 +0000 (15:23 -0700)
committerFrancisco Jerez <currojerez@riseup.net>
Fri, 26 Aug 2016 01:36:08 +0000 (18:36 -0700)
commit8a2f19a7772c80fcac85d6bdfa8e588d6cea1beb
treeb277a21f28923baabd7bc190add1fc4065967d05
parentecc4800383fb67cd274154469d933c6050782208
i965: Flip the non-coherent framebuffer fetch extension bit on G45-Gen8 hardware.

This is not enabled on the original Gen4 part because it lacks surface
state tile offsets so it may not be possible to sample from arbitrary
non-zero layers of the framebuffer depending on the miptree layout (it
should be possible to work around this by allocating a scratch surface
and doing the same hack currently used for render targets, but meh...).

On Gen9+ even though it should mostly work (feel free to force-enable
it in order to compare the coherent and non-coherent paths in terms of
performance), there are some corner cases like 1D array layered
framebuffers that cannot be handled easily by the non-coherent path
because of the incompatible layout in memory of 1D and 2D miptrees (it
should be possible to work around this too by doing state-dependent
recompiles, but it's hard to care enough since Gen9 has native support
for coherent render target reads...)

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
src/mesa/drivers/dri/i965/intel_extensions.c