spirv: Add support for lowering workgroup access to offsets
authorJason Ekstrand <jason.ekstrand@intel.com>
Thu, 19 Oct 2017 00:59:47 +0000 (17:59 -0700)
committerJason Ekstrand <jason.ekstrand@intel.com>
Wed, 6 Dec 2017 06:01:54 +0000 (22:01 -0800)
commitae54a4f84fb6b440d7a8a57651965a4d9eed725b
tree21568b592882609868b00555e8d4014c1417075a
parentf6eb5ce39cb80f321fedd76d41c638e3d98e03b3
spirv: Add support for lowering workgroup access to offsets

Before, we always left workgroup variables as shared nir_variables and
let the driver call nir_lower_io.  This adds an option to do the
lowering directly in spirv_to_nir.  To do this, we implicitly assign the
variables a std430 layout and then treat them like a UBO or SSBO and
immediately lower all the way to an offset.

As a side-effect, the spirv_to_nir pass now handles variable pointers
for workgroup variables.

Reviewed-by: Kristian H. Kristensen <hoegsberg@google.com>
src/compiler/spirv/nir_spirv.h
src/compiler/spirv/spirv_to_nir.c
src/compiler/spirv/vtn_private.h
src/compiler/spirv/vtn_variables.c