[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