nir: Allow uniform in nir_lower_vars_to_explicit_types
authorJason Ekstrand <jason@jlekstrand.net>
Thu, 27 Aug 2020 21:00:00 +0000 (16:00 -0500)
committerMarge Bot <eric+marge@anholt.net>
Thu, 3 Sep 2020 18:02:50 +0000 (18:02 +0000)
Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Karol Herbst <kherbst@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6472>

src/compiler/nir/nir_lower_io.c

index 1fc69f161a128a3a17b09ca9b0fb8d953f3165d2..5cda11e280b88f664b9b9320fc82594d4ca46d58 100644 (file)
@@ -1698,6 +1698,10 @@ lower_vars_to_explicit(nir_shader *shader,
    bool progress = false;
    unsigned offset;
    switch (mode) {
+   case nir_var_uniform:
+      assert(shader->info.stage == MESA_SHADER_KERNEL);
+      offset = 0;
+      break;
    case nir_var_function_temp:
    case nir_var_shader_temp:
       offset = shader->scratch_size;
@@ -1728,6 +1732,10 @@ lower_vars_to_explicit(nir_shader *shader,
    }
 
    switch (mode) {
+   case nir_var_uniform:
+      assert(shader->info.stage == MESA_SHADER_KERNEL);
+      shader->num_uniforms = offset;
+      break;
    case nir_var_shader_temp:
    case nir_var_function_temp:
       shader->scratch_size = offset;
@@ -1758,11 +1766,13 @@ nir_lower_vars_to_explicit_types(nir_shader *shader,
     */
    ASSERTED nir_variable_mode supported =
       nir_var_mem_shared | nir_var_mem_global |
-      nir_var_shader_temp | nir_var_function_temp;
+      nir_var_shader_temp | nir_var_function_temp | nir_var_uniform;
    assert(!(modes & ~supported) && "unsupported");
 
    bool progress = false;
 
+   if (modes & nir_var_uniform)
+      progress |= lower_vars_to_explicit(shader, &shader->variables, nir_var_uniform, type_info);
    if (modes & nir_var_mem_shared)
       progress |= lower_vars_to_explicit(shader, &shader->variables, nir_var_mem_shared, type_info);
    if (modes & nir_var_shader_temp)