This follows the load-combine approach suggested by Connor and Jason in this thread:
http://lists.freedesktop.org/archives/mesa-dev/2015-October/098052.html The pass works on local blocks only and supports rewriting loads with previous stores too. Only supports SSBO load/store operations at the moment. No regressions observed in piglit and dEQP's SSBO functional tests (dEQP-GLES31.functions.ssbo.*). Iago Toral Quiroga (4): nir/instr_set: Add an allow_loads field nir: add a load-combine pass nir/load_combine: expand the pass to support load-after-store. i965: use the load-combine pass src/glsl/Makefile.sources | 1 + src/glsl/nir/nir.h | 2 + src/glsl/nir/nir_instr_set.c | 51 ++-- src/glsl/nir/nir_instr_set.h | 20 +- src/glsl/nir/nir_opt_cse.c | 4 +- src/glsl/nir/nir_opt_load_combine.c | 460 ++++++++++++++++++++++++++++++++++++ src/mesa/drivers/dri/i965/brw_nir.c | 2 + 7 files changed, 515 insertions(+), 25 deletions(-) create mode 100644 src/glsl/nir/nir_opt_load_combine.c -- 1.9.1 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev