From: Paul Berry Date: Wed, 23 Oct 2013 14:55:09 +0000 (-0700) Subject: glsl: set explicit_location correctly in lower_named_interface_blocks. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=172aec281d3d4eb0709977e0748d137e56aacd90;p=mesa.git glsl: set explicit_location correctly in lower_named_interface_blocks. When lower_named_interface_blocks lowers a built-in interface block member to an ir_variable, it needs to set explicit_location in the ir_variable. Otherwise the linker gets confused and treats the variable as a generic varying. Fixes the following piglit tests, which were regressed by commit 63974c0 (glsl: Simplify the interface to link_invalidate_variable_locations): - clip-distance-bulk-copy - clip-distance-in-bulk-read - clip-distance-in-explicitly-sized - clip-distance-in-param - clip-distance-in-values - core-inputs - gs-redeclares-both-pervertex-blocks - gs-redeclares-pervertex-in-only - redeclare-pervertex-subset-vs-to-gs - unsized-in-named-interface-block-gs - unsized-in-named-interface-block-multiple - unsized-in-unnamed-interface-block-gs - unsized-in-unnamed-interface-block-multiple Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=70820 Reviewed-by: Ian Romanick Reviewed-by: Matt Turner --- diff --git a/src/glsl/lower_named_interface_blocks.cpp b/src/glsl/lower_named_interface_blocks.cpp index f415252ba23..726ffdc0da8 100644 --- a/src/glsl/lower_named_interface_blocks.cpp +++ b/src/glsl/lower_named_interface_blocks.cpp @@ -151,6 +151,7 @@ flatten_named_interface_blocks_declarations::run(exec_list *instructions) (ir_variable_mode) var->mode); } new_var->location = iface_t->fields.structure[i].location; + new_var->explicit_location = (new_var->location >= 0); new_var->init_interface_type(iface_t); hash_table_insert(interface_namespace, new_var,