spirv: propagate access qualifiers through ssa & pointer
authorLionel Landwerlin <lionel.g.landwerlin@intel.com>
Thu, 16 May 2019 12:06:27 +0000 (13:06 +0100)
committerLionel Landwerlin <lionel.g.landwerlin@intel.com>
Fri, 26 Jul 2019 14:09:55 +0000 (14:09 +0000)
commit0fb61dfdebac802e4b4c7b5dbebf3d7ba1e60dc2
tree5a0472a80c9b90f60c8adb8746a2f5aee5775285
parent86b53770e1ea6e79452ccc97bab829ad58ffc5fd
spirv: propagate access qualifiers through ssa & pointer

Not only variables can be flagged as NonUniformEXT but also
expressions. We're currently ignoring it in an expression such as :

   imageLoad(data[nonuniformEXT(rIndex)], 0)

The associated SPIRV :

   OpDecorate %69 NonUniformEXT
   ...
   %69 = OpLoad %61 %68

This changes propagates access qualifiers through ssa & pointers so
that when it hits a OpLoad/OpStore style instructions, qualifiers are
not forgotten.

Fixes failure the following tests :

   dEQP-VK.descriptor_indexing.*

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Fixes: 8ed583fe523703 ("spirv: Handle the NonUniformEXT decoration")
Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
src/compiler/spirv/spirv_to_nir.c
src/compiler/spirv/vtn_private.h
src/compiler/spirv/vtn_variables.c