summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTimothy Arceri <tarceri@itsqueeze.com>2017-12-07 10:16:55 +1100
committerEmil Velikov <emil.l.velikov@gmail.com>2017-12-08 18:27:00 +0000
commitedd1f519f451e0fb3dca94cfab135084aaec4fd1 (patch)
treed4458f5a9552b07f60a2f2c8fc9ead914486aed3
parentf51950c4130b91c048c2bccef6395df5fb1e7e38 (diff)
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 <kenneth@whitecape.org> (cherry picked from commit 9d53ccccb251d21f9291abaa3a28a41d06ce8c91)
-rw-r--r--src/compiler/glsl/link_varyings.cpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/compiler/glsl/link_varyings.cpp b/src/compiler/glsl/link_varyings.cpp
index 0593588f1bf..3c77fd223eb 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;