nir/split_vars: fixup some more explicit_stride related issues.
authorDave Airlie <airlied@redhat.com>
Fri, 22 Mar 2019 04:21:55 +0000 (14:21 +1000)
committerDave Airlie <airlied@redhat.com>
Mon, 25 Mar 2019 03:57:16 +0000 (13:57 +1000)
With vkpipelinedb Samuel discovered a regression since we stopped
stripping types at the spir-v level.

This adds a check to the var splitting for the case where it
asserts the type hasn't changed, when it has just created a bare
type, and it's different than the original type which has an explicit
stride.

This also removes a pointless assert that also triggers.

Fixes: 3b3653c4cf (nir/spirv: don't use bare types, remove assert in split vars for testing)
Acked-by: Jason Ekstrand <jason@jlekstrand.net>
src/compiler/nir/nir_split_vars.c

index 777c4ac72251378453477ee60b46b92b95f6e211..c6fe1b59a65f226dca0dea3945f4d49621b2abf7 100644 (file)
@@ -519,7 +519,7 @@ split_var_list_arrays(nir_shader *shader,
          exec_node_remove(&var->node);
          exec_list_push_tail(&split_vars, &var->node);
       } else {
-         assert(split_type == var->type);
+         assert(split_type == glsl_get_bare_type(var->type));
          /* If we're not modifying this variable, delete the info so we skip
           * it faster in later passes.
           */
@@ -915,7 +915,6 @@ get_vec_var_usage(nir_variable *var,
    const struct glsl_type *type = var->type;
    for (unsigned i = 0; i < num_levels; i++) {
       usage->levels[i].array_len = glsl_get_length(type);
-      assert(glsl_get_explicit_stride(type) == 0);
       type = glsl_get_array_element(type);
    }
    assert(glsl_type_is_vector_or_scalar(type));