[Mesa-dev] [PATCH 04/18] nir/spirv: Split up Uniform and UniformConstant storage classes

Jason Ekstrand jason at jlekstrand.net
Thu Jun 29 17:33:26 UTC 2017


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.
---
 src/compiler/spirv/vtn_variables.c | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/src/compiler/spirv/vtn_variables.c b/src/compiler/spirv/vtn_variables.c
index bb41e89..754320a 100644
--- a/src/compiler/spirv/vtn_variables.c
+++ b/src/compiler/spirv/vtn_variables.c
@@ -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:
-- 
2.5.0.400.gff86faf



More information about the mesa-dev mailing list