clover/nir: Call vars_to_explicit_types for shared memory
authorKarol Herbst <kherbst@redhat.com>
Sat, 15 Aug 2020 11:33:29 +0000 (13:33 +0200)
committerMarge Bot <eric+marge@anholt.net>
Wed, 19 Aug 2020 18:11:42 +0000 (18:11 +0000)
This is required for shared memory buffers declared with an explicit
size inside the kernel.

Signed-off-by: Karol Herbst <kherbst@redhat.com>
Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6367>

src/gallium/frontends/clover/nir/invocation.cpp

index 36ee8c9a2eaf7bee776e3691af071b4a399a8a88..1faf8a6eb218bdf579429dabd3ab7d8036f1a753 100644 (file)
@@ -145,6 +145,9 @@ module clover::nir::spirv_to_nir(const module &mod, const device &dev,
       NIR_PASS_V(nir, nir_lower_vars_to_ssa);
       NIR_PASS_V(nir, nir_opt_dce);
 
       NIR_PASS_V(nir, nir_lower_vars_to_ssa);
       NIR_PASS_V(nir, nir_opt_dce);
 
+      NIR_PASS_V(nir, nir_lower_vars_to_explicit_types, nir_var_mem_shared,
+                 glsl_get_cl_type_size_align);
+
       /* use offsets for shader_in and shared memory */
       nir_variable_mode modes = (nir_variable_mode)(
          nir_var_shader_in |
       /* use offsets for shader_in and shared memory */
       nir_variable_mode modes = (nir_variable_mode)(
          nir_var_shader_in |