clover/nir: support int64 atomics if the device supports it
[mesa.git] / src / gallium / frontends / clover / nir / invocation.cpp
index 36ee8c9a2eaf7bee776e3691af071b4a399a8a88..8c6b34afc9c335e0ef91d9a826417ad911942b87 100644 (file)
@@ -80,6 +80,7 @@ module clover::nir::spirv_to_nir(const module &mod, const device &dev,
    spirv_options.caps.int16 = true;
    spirv_options.caps.int64 = true;
    spirv_options.caps.kernel = true;
+   spirv_options.caps.int64_atomics = dev.has_int64_atomics();
    spirv_options.constant_as_global = true;
 
    module m;
@@ -145,6 +146,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_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 |