nir: Allow creating variables with nir_var_mem_push_const.
authorJason Ekstrand <jason@jlekstrand.net>
Wed, 27 May 2020 21:51:04 +0000 (16:51 -0500)
committerMarge Bot <eric+marge@anholt.net>
Wed, 30 Sep 2020 07:20:38 +0000 (07:20 +0000)
Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5275>

src/compiler/nir/nir.c
src/compiler/nir/nir_print.c
src/compiler/nir/nir_validate.c

index 99d1187..a57ca42 100644 (file)
@@ -115,6 +115,7 @@ nir_shader_add_variable(nir_shader *shader, nir_variable *var)
    case nir_var_mem_ssbo:
    case nir_var_mem_shared:
    case nir_var_system_value:
+   case nir_var_mem_push_const:
    case nir_var_mem_constant:
       break;
 
@@ -122,10 +123,6 @@ nir_shader_add_variable(nir_shader *shader, nir_variable *var)
       assert(!"nir_shader_add_variable cannot be used for global memory");
       return;
 
-   case nir_var_mem_push_const:
-      assert(!"nir_var_push_constant is not supposed to be used for variables");
-      return;
-
    default:
       assert(!"invalid mode");
       return;
index fa1b704..c84c70a 100644 (file)
@@ -465,6 +465,8 @@ get_variable_mode_str(nir_variable_mode mode, bool want_local_global_mode)
       return "shared";
    case nir_var_mem_global:
       return "global";
+   case nir_var_mem_push_const:
+      return "push_const";
    case nir_var_mem_constant:
       return "constant";
    case nir_var_shader_temp:
index 90576b0..0be7429 100644 (file)
@@ -457,7 +457,8 @@ validate_deref_instr(nir_deref_instr *instr, validate_state *state)
          if (instr->mode == nir_var_mem_ubo ||
              instr->mode == nir_var_mem_ssbo ||
              instr->mode == nir_var_mem_shared ||
-             instr->mode == nir_var_mem_global) {
+             instr->mode == nir_var_mem_global ||
+             instr->mode == nir_var_mem_push_const) {
             /* Shared variables and UBO/SSBOs have a bit more relaxed rules
              * because we need to be able to handle array derefs on vectors.
              * Fortunately, nir_lower_io handles these just fine.
@@ -1410,6 +1411,7 @@ nir_validate_shader(nir_shader *shader, const char *when)
       nir_var_system_value |
       nir_var_mem_ssbo |
       nir_var_mem_shared |
+      nir_var_mem_push_const |
       nir_var_mem_constant;
 
    exec_list_validate(&shader->variables);