v3dv/pipeline: revamp nir lowering/optimizations passes
authorAlejandro Piñeiro <apinheiro@igalia.com>
Tue, 3 Mar 2020 12:38:11 +0000 (13:38 +0100)
committerMarge Bot <eric+marge@anholt.net>
Tue, 13 Oct 2020 21:21:28 +0000 (21:21 +0000)
commit8da4de7c16197fffe01d4e3ac5c1cc58e0d9212a
treef2c2fdc7ca99d5ea33c254b78687f4aca2cf8f45
parent518714ae1db3a3b7de67a24d3fcedaae0d7461e9
v3dv/pipeline: revamp nir lowering/optimizations passes

The main reason is getting nir_lower_io_to_temporaries and
nir_opt_peephole_select to get some switch/ifelse with store outputs
simplified out, as some tests were failing because the v3d compiler
was not able to handle them.

As this needed some extra lowerings to get that working, we are also
revamping the full nir processing.

Heavily based on intel preprocess/optimize nir passes.

As mentioned on some other v3dv commits, some of this work could be
done by adding those passes to the v3d compiler, allowing to avoid
some duplication. But at this point we prefer to keep the v3d compiler
untouched as much as possible. This could be revisited on the future.

We also remove some passes that are unnedeed or we already know are
called by v3d_compiler.  Although we try to not add too many passes,
we are already adding passes in advance that we think that would be
useful in the near-term.

Among others, gets the following tests working:
  dEQP-VK.binding_model.descriptor_copy.graphics.storage*
  dEQP-VK.binding_model.descriptor_copy.graphics.uniform*

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766>
src/broadcom/vulkan/v3dv_pipeline.c