summaryrefslogtreecommitdiff
path: root/src/compiler/nir/nir_lower_io_to_vector.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/compiler/nir/nir_lower_io_to_vector.c')
-rw-r--r--src/compiler/nir/nir_lower_io_to_vector.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/compiler/nir/nir_lower_io_to_vector.c b/src/compiler/nir/nir_lower_io_to_vector.c
index 0ef40216da6..82c4bdf8749 100644
--- a/src/compiler/nir/nir_lower_io_to_vector.c
+++ b/src/compiler/nir/nir_lower_io_to_vector.c
@@ -184,7 +184,10 @@ get_flat_type(const nir_shader *shader, nir_variable *old_vars[MAX_SLOTS][4],
if (num_vars <= 1)
return NULL;
- return glsl_array_type(glsl_vector_type(base, 4), slots, 0);
+ if (slots == 1)
+ return glsl_vector_type(base, 4);
+ else
+ return glsl_array_type(glsl_vector_type(base, 4), slots, 0);
}
static bool
@@ -340,6 +343,9 @@ build_array_deref_of_new_var_flat(nir_shader *shader,
deref = nir_build_deref_array(b, deref, index);
}
+ if (!glsl_type_is_array(deref->type))
+ return deref;
+
bool vs_in = shader->info.stage == MESA_SHADER_VERTEX &&
new_var->data.mode == nir_var_shader_in;
return nir_build_deref_array(