From: Timothy Arceri Date: Wed, 6 Dec 2017 23:16:55 +0000 (+1100) Subject: glsl: get correct member type when processing xfb ifc arrays X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=9d53ccccb251d21f9291abaa3a28a41d06ce8c91;p=mesa.git glsl: get correct member type when processing xfb ifc arrays This fixes a crash in: KHR-GL45.enhanced_layouts.xfb_block_stride Fixes: 0822517936d4 "glsl: add helper to process xfb qualifiers during linking" Reviewed-by: Kenneth Graunke --- diff --git a/src/compiler/glsl/link_varyings.cpp b/src/compiler/glsl/link_varyings.cpp index 0f53cd4aa95..2be81b3f93a 100644 --- a/src/compiler/glsl/link_varyings.cpp +++ b/src/compiler/glsl/link_varyings.cpp @@ -165,10 +165,12 @@ process_xfb_layout_qualifiers(void *mem_ctx, const gl_linked_shader *sh, if (var->data.from_named_ifc_block) { type = var->get_interface_type(); + /* Find the member type before it was altered by lowering */ + const glsl_type *type_wa = type->without_array(); member_type = - type->fields.structure[type->field_index(var->name)].type; - name = ralloc_strdup(NULL, type->without_array()->name); + type_wa->fields.structure[type_wa->field_index(var->name)].type; + name = ralloc_strdup(NULL, type_wa->name); } else { type = var->type; member_type = NULL;