[Mesa-dev] [PATCH 00/12] nir: Various indirect variable use fixes

Jason Ekstrand jason at jlekstrand.net
Fri Apr 10 17:48:43 PDT 2015


Right now, most of the code to handle indirect dereferences of variables is
dead.  However, I have a patch series (which I haven't cleaned up yet) that
makes it very much alive for the i965 backend.  While working on this, I
found a number of bugs in NIR's handling of indirect references.  All in
all, it's not nearly as bad as it could have been given that it hasn't ever
been tested.

While this series does not make the code alive in i965, it does fix all but
one of the NIR bugs I found by turning it on in i965.  Together with my
series to enable actual indirects in the i965 scalar backend, there is now
only one piglit regressions on HSW.  Hopefully, I'll send a patch 13/12 on
Monday with the fix.  This series, on top of my WIP i965 patches, can be
found in my review/nir-indirect-fixes branch on freedesktop.org:

http://cgit.freedesktop.org/~jekstrand/mesa/log/?h=review/nir-indirect-fixes

Jason Ekstrand (12):
  nir/lower_vars_to_ssa: Actually look for indirects when determining
    aliasing
  nir: Refactor tex_instr_dest_size to use a switch statement
  nir/tex: Use the correct return size for query_levels and lod
  nir/print: Print the closing paren on load_const instructions
  i965/nir: Use the correct offsets when handling register indirects
  nir/lower_vars_to_ssa: Pass around the nir_shader instead of a void
    mem_ctx
  nir: Move get_const_initializer_load from vars_to_ssa to NIR core
  nir/types: Make glsl_get_length smarter
  nir: Add a simple growing array data structure
  nir/locals_to_regs: Pass around the nir_shader rather than a void *
    mem_ctx
  nir/locals_to_regs: Initialize registers with constant initializers
  nir/locals_to_regs: Hanadle indirect accesses of length-1 arrays

 src/glsl/nir/nir.c                       |  60 +++++++++++++
 src/glsl/nir/nir.h                       |  17 +++-
 src/glsl/nir/nir_array.h                 |  96 ++++++++++++++++++++
 src/glsl/nir/nir_lower_locals_to_regs.c  | 148 ++++++++++++++++++++++++++-----
 src/glsl/nir/nir_lower_var_copies.c      |  24 +----
 src/glsl/nir/nir_lower_vars_to_ssa.c     | 120 +++++--------------------
 src/glsl/nir/nir_print.c                 |   2 +
 src/glsl/nir/nir_types.cpp               |  16 +++-
 src/mesa/drivers/dri/i965/brw_fs_nir.cpp |  54 +++++------
 9 files changed, 363 insertions(+), 174 deletions(-)
 create mode 100644 src/glsl/nir/nir_array.h

-- 
2.3.5



More information about the mesa-dev mailing list