spirv: Simplify our handling of NonUniform
authorJason Ekstrand <jason@jlekstrand.net>
Thu, 28 May 2020 23:32:01 +0000 (18:32 -0500)
committerJason Ekstrand <jason@jlekstrand.net>
Fri, 24 Jul 2020 03:41:54 +0000 (22:41 -0500)
commitaf81486a8cde4dec2a695884b93b282c1710d8bd
tree2d880f716c5d32104611dc3159be81e4574cfcff
parent0d5cd1a5f419a4f793a47cb10f39ac44d2d4bb14
spirv: Simplify our handling of NonUniform

The original implementation of SPV_EXT_descriptor_indexing was extremely
paranoid about the NonUniform qualifier, trying to fetch it from every
possible location and propagate it through access chains etc.  However,
the Vulkan spec is quite nice to us on this and has very strict rules
for where the NonUniform decoration has to be placed.  For image and
texture operations, we can search for the decoration on the spot when we
process the image or texture op.  For pointers, we continue putting it
on the pointer but we don't bother trying to do anything silly like
propagate it through casts.

Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5278>
src/compiler/spirv/spirv_to_nir.c
src/compiler/spirv/vtn_private.h
src/compiler/spirv/vtn_variables.c