nir/spirv: Split up Uniform and UniformConstant storage classes
authorJason Ekstrand <jason@jlekstrand.net>
Thu, 29 Jun 2017 17:33:26 +0000 (10:33 -0700)
committerJason Ekstrand <jason.ekstrand@intel.com>
Wed, 5 Jul 2017 22:26:52 +0000 (15:26 -0700)
We were originally handling them together because I was rather unclear
on the distinction.  However, keeping them combined keeps the confusion.
Split them up so that it's more clear from the code how we expect the
two storage classes to be used.

Reviewed-by: Connor Abbott <cwabbott0@gmail.com>
src/compiler/spirv/vtn_variables.c

index bb41e89a33df7cb2c0eb713e1d27eec5cb9f87c5..754320afffb909b71d9f9881c6a4f8280c0537b1 100644 (file)
@@ -1298,21 +1298,25 @@ vtn_storage_class_to_mode(SpvStorageClass class,
    nir_variable_mode nir_mode;
    switch (class) {
    case SpvStorageClassUniform:
-   case SpvStorageClassUniformConstant:
       if (interface_type->block) {
          mode = vtn_variable_mode_ubo;
          nir_mode = 0;
       } else if (interface_type->buffer_block) {
          mode = vtn_variable_mode_ssbo;
          nir_mode = 0;
-      } else if (glsl_type_is_image(interface_type->type)) {
+      } else {
+         assert(!"Invalid uniform variable type");
+      }
+      break;
+   case SpvStorageClassUniformConstant:
+      if (glsl_type_is_image(interface_type->type)) {
          mode = vtn_variable_mode_image;
          nir_mode = nir_var_uniform;
       } else if (glsl_type_is_sampler(interface_type->type)) {
          mode = vtn_variable_mode_sampler;
          nir_mode = nir_var_uniform;
       } else {
-         assert(!"Invalid uniform variable type");
+         assert(!"Invalid uniform constant variable type");
       }
       break;
    case SpvStorageClassPushConstant: