i965: Rework uniform handling in the back-end

Submitted by Jason Ekstrand on Dec. 10, 2015, 4:23 a.m.


Reviewer None
Submitted Dec. 10, 2015, 4:23 a.m.
Last Updated March 22, 2016, 10:12 p.m.
Revision 1

Cover Letter(s)

Revision 1
      This series is kind-of two series in one.  First, we rework the way we do
uniform handling all throughout both backends.  In particular, we stop
using reladdr and, instead, start using MOV_INDIRECT.  Doing this allows us
some nice simplifications:  First, we no longer have the recursive reladdr
problem; it's gone by design.  Second, we can now get rid of the extra
arrays of uniform sizes that we've been carying around everywhere.  The
fact that they exist has bothered me for a while, but no more!

The second half of the series does a bunch of cleanups on the MOV_INDIRECT
instruction in the FS and then starts using it to do indirect push

Jason Ekstrand (15):
  nir: Add another index to load_uniform to specify the range read
  i965/fs: Use UD type for offsets in VARYING_PULL_CONSTANT_LOAD
  i965/fs: Use MOV_INDIRECT for all indirect uniform loads
  i965/fs: Get rid of reladdr
  i965/fs: Stop relying on param_size in assign_constant_locations
  i965/fs: Get rid of the param_size array
  i965/vec4: Inline get_pull_constant_offset
  i965/vec4: Use MOV_INDIRECT instead of reladdr for indirect push
  i965/vec4: Get rid of the uniform_size array
  i965/fs: Add support for doing MOV_INDIRECT on uniforms
  i965/fs: Don't force MASK_DISABLE on INDIRECT_MOV instructions
  i965/fs: Fix regs_read() for MOV_INDIRECT with a non-zero subnr
  i965/fs: Add support for MOV_INDIRECT on pre-Broadwell hardware
  i965/fs: Rename demote_pull_constants to lower_constant_loads
  i965/fs: Push small uniform arrays

 src/glsl/nir/nir_intrinsics.h                     |   7 +-
 src/glsl/nir/nir_lower_io.c                       |   5 +
 src/mesa/drivers/dri/i965/brw_fs.cpp              | 189 +++++++++++++---------
 src/mesa/drivers/dri/i965/brw_fs.h                |   4 +-
 src/mesa/drivers/dri/i965/brw_fs_generator.cpp    |  52 ++++--
 src/mesa/drivers/dri/i965/brw_fs_nir.cpp          |  62 ++++---
 src/mesa/drivers/dri/i965/brw_fs_visitor.cpp      |   3 -
 src/mesa/drivers/dri/i965/brw_ir_fs.h             |   5 +-
 src/mesa/drivers/dri/i965/brw_vec4.cpp            |  10 +-
 src/mesa/drivers/dri/i965/brw_vec4.h              |   7 +-
 src/mesa/drivers/dri/i965/brw_vec4_nir.cpp        |  19 +--
 src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp    | 130 ++++++---------
 src/mesa/drivers/dri/i965/brw_vec4_vs_visitor.cpp |   1 -
 13 files changed, 267 insertions(+), 227 deletions(-)


Patches download mbox