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 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev