i965/vec4: Use MOV_INDIRECT instead of reladdr for indirect push constants
authorJason Ekstrand <jason.ekstrand@intel.com>
Wed, 25 Nov 2015 17:36:34 +0000 (09:36 -0800)
committerJason Ekstrand <jason.ekstrand@intel.com>
Mon, 14 Dec 2015 23:58:09 +0000 (15:58 -0800)
commita487f0284f618416e74f73ca2534d8d93c26531c
tree80ffa6ea3225248e6acbca93187bdce93a12e726
parent46f5396846e5c4d1874c5af83378b91230f0d9da
i965/vec4: Use MOV_INDIRECT instead of reladdr for indirect push constants

This commit moves us to an instruction based model rather than a
register-based model for indirects.  This is more accurate anyway as we
have to emit instructions to resolve the reladdr.  It's also a lot simpler
because it gets rid of the recursive reladdr problem by design.

One side-effect of this is that we need a whole new algorithm in
move_uniform_array_access_to_pull_constants.  This new algorithm is much
more straightforward than the old one and is fairly similar to what we're
already doing in the FS backend.
src/mesa/drivers/dri/i965/brw_vec4.cpp
src/mesa/drivers/dri/i965/brw_vec4.h
src/mesa/drivers/dri/i965/brw_vec4_nir.cpp
src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp