[Mesa-dev] [PATCH v2 00/15] i965: Rework uniform handling in the back-end

Jason Ekstrand jason at jlekstrand.net
Tue Mar 22 22:33:35 UTC 2016


This is mostly a re-send of a patch series I've had floating around in one
form or a while for quite some time.  It's basically the same except that
the original version was missing a work-around for Sandy Bridge.  For a
while, I wasn't really pushing to get it merged because I couldn't
demonstrate any actual performance benifit from pushing arrays.  However,
with the Vulkan API, the concept of push constants is directly exposed to
the user and we really need to be able to indirect on them.  This series
makes the FS backend 100% ready for indirect push constants;  vec4 will
take a little more work.

It's worth noting that we've been carying these patches around in our
Vulkan driver for probably 3 or 4 months now and it's working great.

For those that prefer to review on a branch:

https://cgit.freedesktop.org/~jekstrand/mesa/log/?h=review/i965-uniforms

I think Kristian has mostly reviewed these patches.  However, he never sent
any R-Bs to the list.  I'd also like Ken or Matt to look at it from a
design perspective.

Jason Ekstrand (15):
  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
  nir: Add another index to load_uniform to specify the range read
  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
    constants
  i965/fs: Use UD type for offsets in VARYING_PULL_CONSTANT_LOAD
  i965/vec4: Get rid of the uniform_size array
  i965/fs: Rename demote_pull_constants to lower_constant_loads
  i965/fs: Push small uniform arrays

 src/compiler/nir/nir.h                            |   7 +
 src/compiler/nir/nir_intrinsics.h                 |   6 +-
 src/compiler/nir/nir_lower_io.c                   |   5 +
 src/compiler/nir/nir_print.c                      |   1 +
 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    |  68 ++++++--
 src/mesa/drivers/dri/i965/brw_fs_nir.cpp          |  63 +++++---
 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_tcs.cpp        |   2 -
 src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp    | 130 ++++++---------
 src/mesa/drivers/dri/i965/brw_vec4_vs_visitor.cpp |   1 -
 16 files changed, 292 insertions(+), 228 deletions(-)

-- 
2.5.0.400.gff86faf



More information about the mesa-dev mailing list