i965: Implement support for overriding the texture target in brw_emit_surface_state.
authorFrancisco Jerez <currojerez@riseup.net>
Fri, 22 Jul 2016 05:23:13 +0000 (22:23 -0700)
committerFrancisco Jerez <currojerez@riseup.net>
Fri, 26 Aug 2016 01:36:07 +0000 (18:36 -0700)
commitdc96968dbf7b359a24a991def16e382379f4b11a
treeccc4f3c40395ecdd58e8543ef94cbb2ec52579f6
parent49ea2bd17500cbe3cc5f39b59162eaae1278167d
i965: Implement support for overriding the texture target in brw_emit_surface_state.

This allows the caller to bind a miptree using a texture target other
than the one it it was created with.  The code should work even if the
memory layouts of the specified and original targets don't match, as
long as the caller only intends to access a single slice of the
miptree structure.

This will be exploited by the next commit in order to support
non-coherent framebuffer fetch of a single layer of a 3D texture
(since some generations lack the minimum array element control for 3D
textures bound to the sampler unit), and multiple layers of a 1D array
texture (since binding it as an actual 1D array texture would require
state-dependent recompiles because the same shader couldn't
simultaneously work for 1D and 2D array textures due to the different
texel fetch coordinate ordering).

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