i965/vs: Add a function to fix-up uniform arguments for 3-src insts.
authorMatt Turner <mattst88@gmail.com>
Thu, 25 Apr 2013 18:02:02 +0000 (11:02 -0700)
committerMatt Turner <mattst88@gmail.com>
Fri, 26 Apr 2013 01:27:39 +0000 (18:27 -0700)
commitc0f67a127b0b3e4bb715d1562a82c984d160280e
tree6497e19c98df7e7b1386278049b8789e0dfe534b
parentabb96fdea70546f974ba59cbd00bc54afee9cfdb
i965/vs: Add a function to fix-up uniform arguments for 3-src insts.

Three-source instructions have a vertical stride overloaded to 4, which
prevents directly using vec4 uniforms as arguments. Instead we need to
insert a MOV instruction to do the replication for the three-source
instruction.

With this in place, we can use three-source instructions in the vertex
shader. While some thought needs to go into deciding whether its better
to use a three-source instruction rather than a sequence of equivalent
instructions (when one or more sources are uniforms or immediates), this
will allow us to skip a lot of ugly lowering code and use the BFE and
BFI2 instructions directly.

Reviewed-by: Chris Forbes <chrisf@ijw.co.nz>
Reviewed-by: Eric Anholt <eric@anholt.net>
src/mesa/drivers/dri/i965/brw_vec4.h
src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp