https://gitlab.freedesktop.org/mesa/mesa/merge_requests/121
First teach copy_prop_vars not to do the wrong thing when it sees an array deref of a vector; then teach it how to read direct array derefs -- effectively treating them as a masked access to the full vector. Those cases don't happen now with the modes of the derefs that get to copy_prop_vars. But they will be possible once we move the lowering of UBO/SSBO derefs to later -- so they can take advantage of optimizations including this pass. CTS has some tests that trigger those cases. I've added some "debug" helpers, but I'm not sure if this is something people want to have around. Given the complexity of the pass, I think is a net win to have them. I'm working on indirect access but there's enough material here. I'll revisit whether is practical to add some support to copy_deref of direct access after that. Series diff --stat: src/compiler/nir/nir_builder.h | 4 +- src/compiler/nir/nir_opt_copy_prop_vars.c | 440 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------------------------------------- src/compiler/nir/tests/vars_tests.cpp | 284 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------ 3 files changed, 552 insertions(+), 176 deletions(-) Caio Marcelo de Oliveira Filho (9): nir/copy_prop_vars: don't get confused by array_deref of vectors nir/copy_prop_vars: add debug helpers nir/copy_prop_vars: keep track of components in copy_entry nir/copy_prop_vars: change test helper to get intrinsics nir: nir_build_deref_follower accept array derefs of vectors nir/copy_prop_vars: add tests for load/store elements of vectors nir/copy_prop_vars: handle load/store of vector elements nir/copy_prop_vars: rename/refactor store_to_entry helper nir/copy_prop_vars: use NIR_MAX_VEC_COMPONENTS Caio _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev