+ } else {
+ /* Unsized array non-constant indexing on SSBO is allowed only for
+ * the last member of the SSBO definition.
+ */
+ ir_variable *var = array->variable_referenced();
+ const glsl_type *iface_type = var->get_interface_type();
+ int field_index = iface_type->field_index(var->name);
+ /* Field index can be < 0 for instance arrays */
+ if (field_index >= 0 &&
+ field_index != (int) iface_type->length - 1) {
+ _mesa_glsl_error(&loc, state, "Indirect access on unsized "
+ "array is limited to the last member of "
+ "SSBO.");
+ }